我有一个带两个输入的音频接口:麦克风和乐器。在Windows中,它由单个立体声音频输入表示,左声道获得麦克风输入,右声道获得乐器输入。
我打开这样的录音会话:
void CALLBACK waveIn(HWAVEIN hwi, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
// ...
const int nchannels = 2;
const int sr = 48000;
HWAVEIN hwi;
WAVEFORMATEX wfe =
{
WAVE_FORMAT_IEEE_FLOAT, // wFormatTag
nchannels, // nChannels
sr, // nSamplesPerSec
sr * sizeof(float) * nchannels, // nAvgBytesPerSec
sizeof(float) * nchannels, // nBlockAlign
32, // wBitsPerSample
0 // cbSize
};
MMRESULT openResult = waveInOpen(&hwi, 0, &wfe, (DWORD_PTR)waveIn, 0, CALLBACK_FUNCTION);
// ..set up buffers..
MMRESULT startResult = waveInStart(hwi);
然后在waveIn
函数中处理样本。它工作正常,但我只需要使用仪器(右声道)数据,而对麦克风不感兴趣。我尝试在上面的代码中设置nchannels=1
,希望它会混合两个频道,但我只从麦克风(左)频道获取数据。有没有办法从立体声输入设置录音,以获得恰到好处(或两者兼而有之)的音频通道数据(作为单声道录音)?