![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проиграть звук [D7, WinXP]
!_SM_! © (2006-06-16 15:21:00)Здраствуйте! Подскажите как проиграть звук(и) в программе на какое либо событие.
Делал разными способами но получалось либо звук проигрывает затем играет следующий либо предыдущий остонавливается играет следующий, а хотелось бы чтобы звуки накладывались друг на друга делал примерно так:
с использованием TMediaPlayer MP1, MP2, MP3 - TMediaPlayer
procedure PlaySnd(const S: String);
var MP: TMediaPlayer
begin
if MP1.Mode=mpPlaying then
if MP2.Mode=mpPlaying then
if MP3.Mode=mpPlaying then Exit
else MP:=MP3
else MP:=MP2
else MP:=MP1;
try MP.FileName:=S; MP.Open; MP.Play;
except MP.Close; end;
end;
или
procedure PlaySnd(const S: String);
var MP: TMediaPlayer
begin
PlaySound(PChar(S),0,<пробовал разные параметры>);
SND_ASYNC - вроде нормально но прерывает предыдущий звук
end;
далее либо на нажатие кнопок, либо в цикле
PlaySnd(<FileName.ext>);
FileName.ext - какой нибудь вавфайл короткий (звук типа стандартного в винде)
Что можете посоветовать? СПАСИБО!
!_SM_! (2006-07-09 16:14:00) [1]
> diman_1978 ©
Как при помощи библиотеки bass проиграть звук из ресураса приложения или dll
Jeer (2006-06-27 17:33:00) [2]han_malign © (27.06.06 17:07) [11]
> PlaySound(PChar(S),0,SND_FILENAME or SND_ASYNC or SND_NOSTOP);
Это слишком просто:))
han_malign (2006-06-27 17:07:00) [3]PlaySound(PChar(S),0,SND_FILENAME or SND_ASYNC or SND_NOSTOP);
?
diman_1978 (2006-06-27 14:16:00) [4]есть неплохая библиотека Bass для воспроизведения звуков
Rial (2006-06-17 17:06:00) [5]Только там глюк, см
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1150539273&n=9
!_SM_! (2006-06-17 16:40:00) [6]
> Rial © (17.06.06 15:59) [7]
Спасибо. Будем изучать...
Rial (2006-06-17 15:59:00) [7]Пример:
http://www.Rial578.narod.ru/protected/RialPlayer.rar
!_SM_! (2006-06-17 13:17:00) [8]
> Rial © (17.06.06 01:46) [5]
Спасибо! Если можно пример по теме.
Rial (2006-06-17 01:46:00) [9]Знаки препинания, уважаемый, придумали не просто так...
Вам сюда:
http://www.gamedev.ru/articles/?sect=10
Если надо пример простой по OpenAL, могу выложить.
!_SM_! (2006-06-17 01:30:00) [10]Да кстати MediaPlayer может проиграть файл открытый в другом
MediaPlayerе на одной и тойже форме т.е в одном приложении
procedure PlaySnd(const S: String);
var MP: TMediaPlayer
begin
if MP1.Mode=mpPlaying then
if MP2.Mode=mpPlaying then
if MP3.Mode=mpPlaying then Exit
else MP:=MP3
else MP:=MP2
else MP:=MP1;
try MP.FileName:=S; MP.Open; MP.Play;
except MP.Close; end;
end;
В этом коде выбирается незанетый проигрыватель но...
если параметр S уже ктото играет из этих трех проигрывателей
то вылетает ошибка что-то с псевдонимом каким то связана
Вот если на форме один проигрыватель у него FileName
установлен так вот если откомпилить и запустить две
копии проги то звучать будут оба т.е играть один и тотже файл,
а в одном приложении два проигрывателя не могут проиграть один и тоже файл....
!_SM_! (2006-06-17 01:21:00) [11]Спасибо.
Что такое OpenAL?
Rial (2006-06-17 00:33:00) [12]
> h8394E (16.06.06 23:55) [1]
>
> Используй лучше PlaySound(); в модуле MMSystem;
>
А тут и так о нем ручь ... или я недопонял чего ?
Изучи OpenAL (или Bass, или DirectSound), там можно без тормозов до
10-12 звуков одновременно проигрывать.
OpenAL - очень маленькая и простенькая мультеплатформенная библиотечка ...
h8394E (2006-06-16 23:55:00) [13]Используй лучше PlaySound(); в модуле MMSystem;