2011-03-11 7 views
1

私は自分のコードにいくつかのwaveoutハンドルを並行して持っています。waveOutSetVolumeはハンドルを無視します

今、私は各ウェーブアウトハンドルに異なる音量を設定したいと思います。

waveOutSetVolumeのWin32API関数があります:http://msdn.microsoft.com/en-us/library/ms713762%28v=vs.85%29.aspx

問題は、それはcompletly私はそれは私のプログラムのすべてのwaveoutハンドルのボリュームを設定し、送信ハンドルを無視していること、です。

音量を特定のwaveoutハンドルに設定するにはどうすればいいですか?

+1

これは仕様です。waveOutSetVolumeに渡すハンドルはストリームハンドルではなく、*デバイスハンドルです。 –

答えて

1

あなたは同じデバイスに書き込みを行っていると思います。

各再生の音量を調整するには、オーディオサンプルをデバイスに書き込む前に音量を調整します。

再生ストリームを効果的に混合するために2つのデバイスハンドルを使用する必要はありません。それはあなたのコードでそれを行うことは自明です。

+0

私は最小遅延でリアルタイムミキシングが必要です。デバイスに書き込む前にボリュームをミキシング/変更して、顕著な遅延を生じさせます。 – DxCK

+0

あなたが目指す待ち時間は?音量を変更する(オーディオサンプルをスケーリングする)ことはバッファリングを必要とせず、したがって待ち時間を追加しません。ミキシングする場合、バッファーサイズを小さく保ち、レイテンシを最小限に抑えることができます。絶対最小限の待ち時間が必要な場合は、カーネルストリーミングをご覧ください。 – Nikos

関連する問題