C# 从NAudio asioOut写入多个wav文件

C# 从NAudio asioOut写入多个wav文件,c#,wav,naudio,asio,C#,Wav,Naudio,Asio,我正在尝试录制3-4个音频流,并将它们写入单独的wav文件。我用NAudio的Asiout捕捉音频。起初我只是在写一个3或4通道的wav文件。所以我在这里搜索了一些问题,并认为我找到了一个答案,但我仍然无法找到答案。现在我可以编写单独的wav文件,但每个文件中都有多个通道 通道1.wav------>有通道1和通道2 通道2.wav------>有通道1和通道3 通道_3.wav------>有通道2和通道3 我认为当我试图解析GetAsInterleavedSamples()时出现了问题 这是

我正在尝试录制3-4个音频流,并将它们写入单独的wav文件。我用NAudio的Asiout捕捉音频。起初我只是在写一个3或4通道的wav文件。所以我在这里搜索了一些问题,并认为我找到了一个答案,但我仍然无法找到答案。现在我可以编写单独的wav文件,但每个文件中都有多个通道

通道1.wav------>有通道1和通道2

通道2.wav------>有通道1和通道3

通道_3.wav------>有通道2和通道3

我认为当我试图解析GetAsInterleavedSamples()时出现了问题

这是我的asioOut_AudioAvailable()

void asioOut\u AudioAvailable(对象发送方,asioaudioavailableeeventargs e)
{     
float[]samples=new float[2*44100*GetUserSpecifiedChannelCount()];
样本=e.GetAsInterleavedSamples();
整数偏移=0;
while(偏移量<样本长度)
{
for(int n=0;n
我是新来的,所以我只是在学习,任何帮助都将不胜感激


谢谢

如果我理解正确,您只想为每个编写器编写一个示例,因此
WriteSamples
的第三个参数应该是1,偏移量应该增加1。您可能从一个处理字节数组中的16位音频的示例中复制了+=2

    void asioOut_AudioAvailable(object sender, AsioAudioAvailableEventArgs e)
    {     

        float[] samples = new float[2 * 44100 * GetUserSpecifiedChannelCount()];

        samples = e.GetAsInterleavedSamples();

        int offset = 0;
        while (offset < samples.Length)
        {
            for (int n = 0; n < this.writers.Length; n++)
            {
                this.writers[n].WriteSamples(samples, offset, 2);
                offset += 2;
            }
        }

    }