Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / waveOutWrite() и несколько звуков

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

Поделиться
ХаусПостоялецwww8 авг. 201622:48#0
я так понимаю, если мне нужно проиграть одновременно несколько разнодлинных звуков с разными параметрами PCM, то я должен под каждый звук заводить свой HWAVEOUT?
или же должен быть единый HWAVEOUT, а все данные звуков каким-то хитрым способом "месить" в одно или чо O_O?

Правка: 8 авг. 2016 22:52

0iStalkerМодераторwww9 авг. 20169:24#1
Либо 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;    
}

Правка: 9 авг. 2016 9:25

nesПостоялецwww9 авг. 201614:08#2
+ за опинаэл
ХаусПостоялецwww11 авг. 201621:35#3
nes
> + за опинаэл

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

0iStalker

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

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

Правка: 11 авг. 2016 21:40

exchgПостоялецwww12 авг. 201621:43#4
Хаус
> А почему нельзя под каждый звук заводить свой HWAVEOUT?
наверно дорого по ресурсам. но вообще можно.

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

2001—2017 © GameDev.ru — Разработка игр