Форум: "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.007 c