NAudio Asio Aufnahme und Wiedergabe
Ich versuche, meinen eigenen VST-Host zu schreiben, und dafür muss ich Audio von einem Asio-Treiber aufnehmen und abspielen (in meinem Fall für ein Audio-Interface). Deshalb versuche ich, AsioOut von NAudio zu verwenden.
Zu Testzwecken versuche ich gerade, die Eingabe aufzunehmen, zu kopieren und auf der Ausgabe abzuspielen.
Mein Code sieht so aus:
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;
}
Auf diese Weise kann ich keine Ausgabe hören. Ich habe es auch so versucht:
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;
}
Auf diese Weise kann ich den Ton in der Lautstärke meines Eingangs hören, aber er ist sehr verzerrt.
Was mache ich hier falsch?
PS: Ich weißwie man aufnimmt und wiedergibt .... existiert, aber ich konnte keine vollständige Antwort von diesem Thread bekommen, nur die Idee, es mit Marshall.Copy zu versuchen ....