Главная страница
    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-1254898716
Александр Ильин
2009-10-07 10:58
2009.12.06
Восстановление файла


15-1254768851
freeman1
2009-10-05 22:54
2009.12.06
Устроство подключено


15-1255000858
defen
2009-10-08 15:20
2009.12.06
Подключение и работа с SQL базой


15-1255101350
Дмитрий С
2009-10-09 19:15
2009.12.06
Как получить нормально распределенное случаное число от 0 до 1 и


4-1222413068
Riply
2008-09-26 11:11
2009.12.06
RtlCopyUnicodeString и IRQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский