从更高的端口获取输入或输出

时间:2019-06-15 12:58:26

标签: naudio asio

经过很多头痛之后,我的申请(使用Naudia)几乎完成了。现在,由于我可以通过捕获缓冲区,处理并传递回输出缓冲区来实时管理所有FFT,因此仍然存在一个问题。我只能在前两个输入和输出通道上完成所有这些工作。由于我的设备具有8个I / O通道,因此我需要以某种方式访问​​该通道。 我不需要在这里做一些复杂的事情,例如混合,我只需要能够改变自己正在做的事情: 1-> inbuffer->操作-> outbuffer-> 1
2-> inbuffer-> manipulate-> outbuffer-> 2

到 5-> inbuffer->操作-> outbuffer-> 5
6-> inbuffer->操作-> outbuffer-> 6

无论我做什么,当我通过AsioAudioAvailableEvent捕获了asiobuffer时 只能访问通道1和2的输入和输出缓冲区。

        WaveFormat waveFormat = new WaveFormat(48000, 24, chnr);
        buffer = new BufferedWaveProvider(waveFormat);


        asioOut.AudioAvailable += new EventHandler<AsioAudioAvailableEventArgs>(ASIODriver_AudioAvailable);

        asioOut.InitRecordAndPlayback(buffer, chnr, 48000);

,方法如下:

私有无效ASIODriver_AudioAvailable(对象发送者,AsioAudioAvailableEventArgs e)         {

                Marshal.Copy(e.InputBuffers[0], L_stack.buf, 0, e.SamplesPerBuffer * 4);
                L_Loadoutputbuffer();
                Marshal.Copy(L_stack.buf, 0, e.OutputBuffers[0], e.SamplesPerBuffer * 4);


        e.WrittenToOutputBuffers = true;
    }

我可以通过e.Inbutbuffers [1]和e.Outbutbuffers [1]获得的第二个通道; 就是这样。即使我在init中增加了“ chnr”,Higher也不存在。我该如何访问其他渠道? 希望有一种简单的方法,因为我的调整过滤器非常耗时并且可以实时使用

感谢弗兰克

0 个答案:

没有答案