Вы можете взглянуть на источник Audacity AudioIO.cpp, который использует portmixer (также стоит посмотреть).
Вы можете заглянуть в portmixer, чтобы увидеть, как запустить аудиопоток в Windows.Есть также много хороших учебных пособий онлайн, таких как этот .
Хотя Windows Wave API запускает аудиопоток для вас, лучше всего иметь другой поток для чтения / анализа / декодированияаудиофайл, который вы хотите смешать и заполнить буфер, который доступен для обратного вызова аудиопотока.Portaudio / SDL / Open AL - это просто слой поверх хостов звука Windows (MME / Direct Sound), так что это по-прежнему верно, если вы используете один из них.
Но если вы чувствуете себя очень ленивымили просто хотите быстрое подтверждение концепции, можно выполнить заполнение буфера из аудиофайла в главном потоке.
Что касается входа микрофона, когда вы указываете детали потока, вы можете сказать, какие входы устройствавы хотите, и они предоставляются вам в виде массива int / float, который вы можете отправить непосредственно в выходной массив.В вашем случае вы хотите смешать (добавить) аудио файл.