Gravação e reprodução do NAudio Asio

Estou tentando escrever meu próprio host VST e, para isso, preciso gravar e reproduzir áudio de um driver Asio (no meu caso para uma interface de áudio). É por isso que estou tentando usar o AsioOut do NAudio.

Para fins de teste, atualmente estou apenas tentando gravar a entrada, copiá-la e reproduzi-la na saída.

Meu código fica assim:

var asioout = new AsioOut();
BufferedWaveProvider wavprov = new BufferedWaveProvider(new WaveFormat(44100, 2));
asioout.AudioAvailable += new EventHandler<AsioAudioAvailableEventArgs>(asio_DataAvailable);
asioout.InitRecordAndPlayback(wavprov, 2, 25);
asioout.Play();

...

void asio_DataAvailable(object sender, AsioAudioAvailableEventArgs e)
{
    Array.Copy(e.InputBuffers, e.OutputBuffers, e.InputBuffers.Length);
    e.WrittenToOutputBuffers = true;
}

Dessa forma, não consigo ouvir nenhuma saída. Eu também tentei desta maneira:

void asio_DataAvailable(object sender, AsioAudioAvailableEventArgs e)
{
    byte[] buf = new byte[e.SamplesPerBuffer];
    for (int i = 0; i < e.InputBuffers.Length; i++)
    {
        //Marshal.Copy(e.InputBuffers[i], e.OutputBuffers, 0, e.InputBuffers.Length);
        //also tried to upper one but this way i also couldn't hear anything
        Marshal.Copy(e.InputBuffers[i], buf, 0, e.SamplesPerBuffer);
        Marshal.Copy(buf, 0, e.OutputBuffers[i], e.SamplesPerBuffer);
    }
    e.WrittenToOutputBuffers = true;
}

Dessa forma, eu posso ouvir o som no volume da minha entrada, mas é muito distorcido.

O que eu estou fazendo errado aqui?

PS: eu seicomo gravar e reproduzir .... existe, mas eu realmente não poderia obter uma resposta completa a partir desta discussão, apenas a idéia de experimentá-lo com Marshall.Copy ....

questionAnswers(1)

yourAnswerToTheQuestion