Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Дельфин   (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 вся ветка

Форум: "Media";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
15-1254563003
XcCCC
2009-10-03 13:43
2009.12.06
Наличие мыши в системе?


15-1254991631
ocean
2009-10-08 12:47
2009.12.06
Когда я пытаюсь быстро печатать,


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


1-1227270584
parasolka
2008-11-21 15:29
2009.12.06
Ширина ячеек в DBGrid.


15-1255185739
Artem
2009-10-10 18:42
2009.12.06
Запись алгоритма?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский