audacityソースAudioIO.cppを見てください。これはportmixerを使用しています(見てみる価値があります)。
Windowsでオーディオストリームを開始する方法については、portmixerを参照してください。 this oneのようにオンラインで多くの良いチュートリアルもあります。
windows wave APIはオーディオスレッドを開始しますが、ミックスしてオーディオスレッドコールバックがアクセス可能なバッファをいっぱいにするオーディオファイルを読み込み/解析/デコードする別のスレッドを持つことをお勧めします。 Portaudio/SDL/Open ALは、ウィンドウのサウンドホスト(MME/Direct Sound)の上にあるレイヤーに過ぎません。
しかし、あなたが本当に怠惰だと感じている場合や、概念の速い証明が必要な場合は、メインスレッドのオーディオファイルからバッファフィルを行うことができます。
マイクの入力に関しては、ストリームの詳細を指定するときに、どのデバイス入力が必要かを言うことができ、これらはints/floatの配列として与えられ、出力配列に直接送ることができます。あなたの場合は、オーディオファイルをミックス(追加)したいと思うでしょう。
使用ジャック; arec + sox – sehe
OpenALまたはSDLの使用を検討してください。どちらもあなたが望むことをすることができるはずです。彼らはどちらもスレッドを使用しますが、あなたの層にする必要はありません。 –