Получить вход или выход из более высоких портов - PullRequest
0 голосов
/ 15 июня 2019

После множества головных болей я почти закончил свое приложение (используя Naudia). Теперь, так как я мог управлять всеми БПФ в режиме реального времени, перехватывая буфер, манипулируя и возвращаясь к выходным буферам, осталась одна проблема. Я могу делать все это только на первых двух входных и выходных каналах. Поскольку мое устройство имеет 8 каналов ввода / вывода, мне как-то нужен доступ к этим каналам. Мне не нужно делать что-то сложное, например, микширование, мне просто нужно иметь возможность изменить то, что я делаю: 1-> inbuffer-> manipulate-> outbuffer-> 1
2-> inbuffer-> manipulate-> outbuffer-> 2

например. 5-> inbuffer-> manipulate-> outbuffer-> 5
6-> inbuffer-> manipulate-> outbuffer-> 6

что бы я ни делал, когда я ловлю asiobuffer с помощью AsioAudioAvailableEvent может получить доступ только к входным и выходным каналам 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);

и метод выглядит так:

private void 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]; но это так. Более высокие значения не существуют, даже когда я увеличиваю "chnr" в init. Как я могу получить доступ к этим другим каналам? Надеюсь, что есть простой способ, так как мой фильтр манипуляции довольно много времени, и я использую в режиме реального времени

Спасибо, Фрэнк

...