0

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

4

0 回答 0