Как передавать необработанный синтезированный звук PCM в приложениях C++/CX для Windows 8?

Проще говоря, я хочу, чтобы мое приложение C++/CX XAML для Windows 8 выводило непрерывный синтезированный звук (не звуковые эффекты). Однако я просматривал весь Интернет и не могу понять, как заставить систему кормить ее буферами сэмплов PCM (или, что еще лучше, запрашивать их у меня через обратные вызовы) для их воспроизведения. Я бы использовал старые waveOut* API, однако они запрещены в разработке приложений для Магазина.

Итак, каков самый простой способ сделать это? Обратите внимание, что меня не интересует воспроизведение медиафайлов (.wav, .mp3) или потоковое аудио из Интернета.

Заранее спасибо.


person fincs    schedule 24.12.2012    source источник
comment
Можно ли это сделать с www.portaudio.com?   -  person Bjorn Roche    schedule 25.12.2012
comment
К сожалению, PortAudio не поддерживает приложения Магазина Windows (хотя я могу ошибаться).   -  person fincs    schedule 25.12.2012
comment
Это большой облом. Не могли бы вы внести это в список рассылки PA? Я не занимаюсь окнами, но уверен, что они захотят исправить ситуацию, если смогут.   -  person Bjorn Roche    schedule 25.12.2012


Ответы (1)


Вам необходимо использовать WASAPI, который включен в приложениях Магазина Windows. Эта статья будет чтобы вы начали с того, как использовать API для рендеринга звука. Одна неприятность заключается в том, что устройства WASAPI обычно не передискретизируют для вас, поэтому вам придется согласиться с тем, что использует устройство (вероятно, 44,1 кГц или 48 кГц), или выполнить передискретизацию самостоятельно (для чего вы можете использовать Преобразование Resampler Media Foundation).

person Mark Heath    schedule 25.12.2012