1

midi と wav オーディオの両方を生成するプログラムがあります。MIDI とオーディオの音量とバランスを別々に制御できるようにする必要があります。理論的には、呼び出すだけでよいようです。

  unsigned short left = (unsigned short)(wavvol*wavbal/100.0);
  unsigned short right = (unsigned short)(wavvol*(100-wavbal)/100.0);
  MMRESULT err = waveOutSetVolume(hWaveOut, left | (right<<16)); // for audio

  unsigned short left = (unsigned short)(midivol*midibal/100.0);
  unsigned short right = (unsigned short)(midivol*(100-midibal)/100.0);
  MMRESULT err = midiOutSetVolume(s_hmidiout, left | (right<<16)); // for midi

ミディ用

問題は、MIDI ボリュームをコントロールすることで Wave ボリュームと Visa-verse を設定することで、それらが窓の中で接着されているように見えることです。

それらを剥がす方法があるかどうか誰かが知っていますか?

ところで、私は Windows 7 を使用しています。Microsoft が wi​​n7 でオーディオを台無しにしたことは知っています。XP では、ミディとウェーブ用に別々のコントロールを備えたオーディオ コントロール パネルがありましたが、それはなくなったようです。彼らは今それを内部的に混ぜ合わせているだけで、APIレベルでもそれを公開していないと思うので、おそらく私は自分の質問に答えました.

より良い答えがあるかどうかを知りたいと思っています。

ありがとう、スティーブ

4

1 に答える 1

1

それらを切り離すことはできないと思います。新しいIAudioClientインターフェイスに移行し、2 つのWASAPIセッションを使用して音量を個別に制御できます (1 つは wav 用、もう 1 つは midi 用)。これは、Vista tho 以下では機能しません。

または、コード内で音量レベルを追跡し、wav と midi の両方を同時に再生しない限り、再生前にそれらをリセットすることもできます。

于 2013-11-12T21:42:36.517 に答える