Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проиграть звук [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо