использовать IXAudio2 для воспроизведения звукового микса? - PullRequest
0 голосов
/ 21 ноября 2018

Я пишу проект MFC.Я использую IXAudio2 для воспроизведения файла WAV.мой код такой:

pSourceVoice->SubmitSourceBuffer( &buffer );

hr = pSourceVoice->Start( 0 );

но таким образом я могу воспроизводить только один звук за раз.Он должен дождаться воспроизведения этого .wav файла.Я могу воспроизвести второй файл.Как я могу воспроизвести нужный мне файл и не ждать, пока закончится первый, нравится микширование звуков?Как я могу достичь этой функции?

1 Ответ

0 голосов
/ 24 ноября 2018

Вы создаете один IXAudio2SourceVoice для каждого «воспроизводимого, активного» звука, который вы хотите одновременно.Как правило, игры создают несколько сотен исходных голосов для управления - кроме того, звуковой микс, как правило, слишком грязный, чтобы его можно было услышать.

В игровых звуковых движках есть смесь «одноразовых» голосов, которые просто воспроизводятся.- требовать до тех пор, пока они не завершат - в этот момент это освобождает этот исходный голос для использования другим одноразовым звуком - голосами «ambient» или «music», которыми манипулируют во время воспроизведения, и звуковыми позиционированными звуками 3D, которые должныобновлять каждый кадр рендеринга для отслеживания объекта рендеринга 3D, из которого они излучаются.

Если вы отправите одни и те же аудиоданные в два разных экземпляра IXAudio2SourceVoice, то вы услышите, как они воспроизводятся дважды, смешанные вместе вв режиме реального времени.Обычно вы не запускаете их в один и тот же момент, потому что в результате получается только более громкая версия одного звука.Обычно они запускаются в разное время, поэтому вы получаете воспроизведение с перекрытием.

См. Руководство по программированию XAudio2 , GitHub и Набор инструментов DirectX для аудио .

...