我有一个程序可以生成 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 音量会设置波形音量和签证,就像它们在窗户内粘合在一起
有谁知道是否有办法解开它们?
顺便说一句,我在 Windows 7 上,我知道微软在 win7 中搞砸了音频。在 XP 上,我有一个音频控制面板,带有单独的 midi 和 wave 控件,这似乎已经消失了。我想他们现在只是在内部混合它,即使在 API 级别也不公开它,所以也许我已经回答了我自己的问题。
仍然有兴趣知道是否有更好的答案。
谢谢,史蒂夫