я так понимаю, если мне нужно проиграть одновременно несколько разнодлинных звуков с разными параметрами PCM, то я должен под каждый звук заводить свой HWAVEOUT?
или же должен быть единый HWAVEOUT, а все данные звуков каким-то хитрым способом "месить" в одно или чо O_O?
Либо DirectSound/OpenAL бери, либо программно смешивай буферы, что-то типа
uint16_t buf1[bufsize]; //буффер 1 uint16_t buf2[bufsize]; //буффер 2 uint16_t buf3[bufsize]; //результат for (size_t i=0; i<bufsize; i++) { double mixsmp = ( ( double)buf1[i] + ( double)buf2[i]) / ( 1 + ( ( double)buf1[i] * ( double)buf2[i]) / normal_volume_value); buf3[i] = ( uint16_t)mixsmp; }
+ за опинаэл
nes
> + за опинаэл
С драйверами говорят надо возиться.
0iStalker
Как-то по-ублюдошному сделан интерфейс waveOutWrite(), раз в ручную нужно всё месить.
Знаю есть какие-то миксеры звука в API, они для этого дела подойдут?
А почему нельзя под каждый звук заводить свой HWAVEOUT?
Хаус
> А почему нельзя под каждый звук заводить свой HWAVEOUT?
наверно дорого по ресурсам. но вообще можно.
Тема в архиве.