ПрограммированиеФорумЗвук

waveOutWrite() и несколько звуков

#0
22:48, 8 авг 2016

я так понимаю, если мне нужно проиграть одновременно несколько разнодлинных звуков с разными параметрами PCM, то я должен под каждый звук заводить свой HWAVEOUT?
или же должен быть единый HWAVEOUT, а все данные звуков каким-то хитрым способом "месить" в одно или чо O_O?

#1
9:24, 9 авг 2016

Либо 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;    
}
#2
14:08, 9 авг 2016

+ за опинаэл

#3
21:35, 11 авг 2016

nes
> + за опинаэл

С драйверами говорят надо возиться.

0iStalker

Как-то по-ублюдошному сделан интерфейс waveOutWrite(), раз в ручную нужно всё месить.
Знаю есть какие-то миксеры звука в API, они для этого дела подойдут?

А почему нельзя под каждый звук заводить свой HWAVEOUT?

#4
21:43, 12 авг 2016

Хаус
> А почему нельзя под каждый звук заводить свой HWAVEOUT?
наверно дорого по ресурсам. но вообще можно.

ПрограммированиеФорумЗвук

Тема в архиве.