我有一个带有两个输入的音频接口:麦克风和乐器。在 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
在上面的代码中进行设置,希望它能混合两个通道,但我只从麦克风(左)通道获取数据。有没有办法从立体声输入设置录制以仅获得正确的(或两者混合)音频通道数据(作为单声道录制)?