音量控制
WaveOut
WaveOut在音量上是左右声道单独控制的。
waveOutSetVolume(HWAVEOUT,DWORD);可以设定指定设备的音量。这是左右声道一起设置的,其左右声道的范围都是0x0000~0xFFFF。可以映射到0~100中,便于使用。
waveOutGetVolume(LPDWORD);可以得到当前音量。DWORD的低16位表示左声道的音量,高16位表示右声道的音量。
DSound
Dsound在音量上使用的单位是dB,可以使用公式映射成0~100。如果Dsound的音量为dsVol那么经过公式
pow(10, (double)dsVol/ 2000.0) * 100
之后就可以映射到PC机上的音量了。
IDirectSoundBuffer::GetVolume和IDirectSoundBuffer::SetVolume获取和设置buffer的音量。