我使用MSoft WaveOut api编写了一个应用程序,它运行良好,只是我的扬声器不能只播放立体声单声道。当我把耳机插入其中一个插孔时,我会得到相同的单声道行为,但另一个插孔会以立体声播放文件。如果我使用的是使用DirectX api的东西,所有的东西都会以立体声播放。我的设备是Dell Studio XP。有人能提出这样做的原因吗?
您可以将通道参数从1更改为2
format.wFormatTag = 1 ' PCM
format.nChannels = 1 '1=mono , 2=Steero <<<<<<
format.nSamplesPerSec = 8000 ' 12000
format.wBitsPerSample = 16
问题出在卷上。我用以下代码设置音量:
unsigned long x = 0xFFFF;
MMRESULT result = waveOutSetVolume( _audio_device, x );
事实上,我需要做的是:
unsigned short left = unsigned(0xFFFF * v);
unsigned short right = unsigned(0xFFFF * v);
unsigned long x = left + (right << 16);
MMRESULT result = waveOutSetVolume( _audio_device, x );