Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.06;
Скачать: CL | DM;

Вниз

Несколько потоков звука в программе   Найти похожие ветки 

 
Дельфин   (2007-09-17 22:17) [0]

Здравствуйте! Вопрос, наверное, очень простой, но я не разберусь... Как сделать в программе несколько потоков звука? Без использования нескольких компонентов МедиаПлеер, вообще без компонентов? Я без компонентов звук вывожу только функцией PlaySound() из mmsystem, но как только я пытаюсь проиграть другой файл, прежний обрывается, то есть звук там идет одним потоком. А как можно проигрывать скажем, пять фалов одновременно? Чтобы на каждом потоке отдельно управлять - загружать файл, проигрывать, останавливать, новый файл открывать и т.п.?


 
Rial ©   (2007-09-18 06:42) [1]

OpenAL, DirectSound, Bass - коючевые слова для поиска. :)


 
medved_68 ©   (2007-09-18 08:17) [2]

Дельфин почитай статью "Низкоуровневое программирование звука в Windows" в частности про набор интерфейсных функций звуковых устройств и погляди реализацию юнита mms. :)))


 
Сергей М. ©   (2007-09-18 09:40) [3]


> Дельфин   (17.09.07 22:17)


см. DirectSound, ASIO


 
DiamondShark ©   (2007-09-19 15:23) [4]

Вай, какие страшные слова.
Я тоже ругаццо умею: "MCI".


function MciPlayFile(Notify: HWND; const FileName: string): MCIDEVICEID;
var
 mciOpenParams: MCI_OPEN_PARMS;
 mciPlayParams: MCI_PLAY_PARMS;
 r: MCIERROR;
begin
 mciOpenParams.lpstrDeviceType := "waveaudio";
 mciOpenParams.lpstrElementName := PChar(FileName);

 r := mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, DWORD(@mciOpenParams));
 if r <> 0 then raise Exception.Create("O pula MCI_OPEN");

 Result := mciOpenParams.wDeviceID;

 mciPlayParams.dwCallback := Notify;
 r := mciSendCommand(Result, MCI_PLAY, MCI_NOTIFY, DWORD(@mciPlayParams));
 if r <> 0 then raise Exception.Create("O pula MCI_PLAY");
end;


При пользовании главное не забыть:
1. Обработать MM_MCINOTIFY и закрыть девайс
2. Файлы открываются эксклюзивно

Вот так можно пользоваться:


TForm1 = class(TForm)
 ...
 private
   procedure MMMciNotify(var Msg: TMessage); message MM_MCINOTIFY;
 ...
end;

...

procedure TForm1.Button1Click(Sender: TObject);
begin
 MciPlayFile(Handle, "C:\WINNT\Media\Windows Logoff Sound.wav");
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 MciPlayFile(Handle, "C:\WINNT\Media\Windows Logon Sound.wav");
end;

procedure TForm1.MMMciNotify(var Msg: TMessage);
begin
 mciSendCommand(Msg.LParam, MCI_CLOSE, 0, 0)
end;


Нажимайте попеременно кнопочки, наслаждайтесь параллельным звучанием файлов.
Только не слишком резво, чтоб ошибку открытия не получить ;)
Ну, с этим Вы справитесь. Программировать умеете, да и справка по MCI под рукой.


 
Сергей М. ©   (2007-09-19 15:47) [5]


> Я тоже ругаццо умею: "MCI"


С чем тебя и поздравляю)

Но ASIO, равно впрочем как и ALSA, изначально "заточены" под такие рантаймовые задачи. В отличие от MCI.


 
Сергей М. ©   (2007-09-19 15:49) [6]


> рантаймовые


Пардон, "риэлтаймовые" конечно же.


 
Сергей М. ©   (2007-09-19 17:44) [7]


> Я тоже ругаццо умею: "MCI".


Это я вижу)

Только вот не вижу я, любезный, тех самых "аргументов" в пользу MCI vs DirectAccess, на коих ты с пеной у рта настаивал, скажем, в ветке про NP vs Sockets)

Не сподобишься ли привести их, а ?
Особенно в явно неизвестных условиях окружения задачи автора ?

"Несподобнеость", извини уж, буду вынужден трактовать как очередной приступ паранойи) ...

p.s.

И не дожидайся, пока сюда заглянет Jeer (с) - с параноиками у него разговор жестче чем у меня)


 
DiamondShark ©   (2007-09-19 18:49) [8]


> Не сподобишься ли привести их, а ?

Непременно, сразу как напомнишь мне, где я в этой ветке употребил что-нибудь вроде:
"прямо таки напрашивается"
"Даже не задумывайся"
"выбор ... еще более очевиден"


> Особенно в явно неизвестных условиях окружения задачи автора

Что не помешало тебе охарактеризовать задачи как "риэлтаймовые".

Хотя я в вопросе явно вижу поиск альтернативы МедиаПлеер и PlaySound(). Это, видимо, такой род паранойи -- вчитываться в вопрос.


> "Несподобнеость", извини уж, буду вынужден трактовать как
> очередной приступ паранойи) ...

Хоть я и не знаю, что такое "Несподобнеость", но так и быть: считай как тебе заблагорассудится.


 
DiamondShark ©   (2007-09-19 18:51) [9]


> Хотя я в вопросе явно вижу поиск альтернативы МедиаПлеер
> и PlaySound().

для проигрывания файлов.


 
Дельфин   (2007-09-20 10:20) [10]

Спасибо, буду разбираться


 
brother ©   (2007-09-21 22:58) [11]

мда, опять как всегда, общие слова...


 
dppyq   (2007-10-02 04:40) [12]

<a href= http://rpz3zmr75a.com >Google</a>


 
dppyq   (2007-10-02 04:40) [13]

<a href= http://rpz3zmr75a.com >Google</a>


 
zithromax effects on gonorrhea   (2008-02-04 05:06) [14]

buy zithromax
<a href= http://www.ps3forums.com/member.php?u=69459 >zithromax</a>
   
zithromax prescribing information


 
buy zithromax online   (2008-02-04 07:55) [15]

zithromax side effects cough
<a href= http://janegreen.com/forums/member.php?u=862 >generic zithromax</a>
   
generic zithromax without prescription



Страницы: 1 вся ветка

Текущий архив: 2009.12.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
15-1254694926
Германн
2009-10-05 02:22
2009.12.06
Планировщик Windows


15-1254906022
Dennis I. Komarov
2009-10-07 13:00
2009.12.06
HP Compaq nx7400 или подобные (бук)


4-1224815622
Skazi21101
2008-10-24 06:33
2009.12.06
Вопрос по RS-232C


1-1227475563
Lloyd
2008-11-24 00:26
2009.12.06
Сортировка "двухпутевая вставка "


15-1254774609
Юрий
2009-10-06 00:30
2009.12.06
С днем рождения ! 6 октября 2009 вторник