NAudio windows 申请表,有延迟环回(Input to DirectSoundOut)
NAudio windows application form, has delay loopingback(Input to DirectSoundOut)
问题:
作为学校项目的一部分,我尝试构建一个使用 NAudio 库提供吉他 AMP 的应用程序。
当我插入吉他时,它会识别它,并且一切正常,但扬声器的输入和输出之间存在巨大的延迟。
这是我的源代码:
private void button2_Click(object sender, EventArgs e)
{
if (sourceList.SelectedItems.Count == 0) return;
int deviceNumber = sourceList.SelectedItems[0].Index;
sourceStream = new WaveIn();
sourceStream.DeviceNumber = deviceNumber;
sourceStream.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(deviceNumber).Channels);
sourceStream.StartRecording();
WaveInProvider waveIn = new WaveInProvider(sourceStream);
waveOut = new DirectSoundOut();
waveOut.Init(waveIn);
waveOut.Play();
}
在这段代码中,我捕获了一个使用选定输入 (microphone/guitar) 的按钮单击事件,并将它接收到的声音转换为输出。
输入和输出之间的延迟约为 1 秒,这是一个交易破坏者。
如何改善延迟,使应用程序响应更快?
DirectSoundOut
和 WaveIn
并不是特别 low-latency 音频 API。对于这样的事情,ASIO 是更可取的。不幸的是,AsioOut
使用起来有点复杂,但它应该可以让您获得更低的延迟。
问题:
作为学校项目的一部分,我尝试构建一个使用 NAudio 库提供吉他 AMP 的应用程序。
当我插入吉他时,它会识别它,并且一切正常,但扬声器的输入和输出之间存在巨大的延迟。
这是我的源代码:
private void button2_Click(object sender, EventArgs e)
{
if (sourceList.SelectedItems.Count == 0) return;
int deviceNumber = sourceList.SelectedItems[0].Index;
sourceStream = new WaveIn();
sourceStream.DeviceNumber = deviceNumber;
sourceStream.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(deviceNumber).Channels);
sourceStream.StartRecording();
WaveInProvider waveIn = new WaveInProvider(sourceStream);
waveOut = new DirectSoundOut();
waveOut.Init(waveIn);
waveOut.Play();
}
在这段代码中,我捕获了一个使用选定输入 (microphone/guitar) 的按钮单击事件,并将它接收到的声音转换为输出。 输入和输出之间的延迟约为 1 秒,这是一个交易破坏者。
如何改善延迟,使应用程序响应更快?
DirectSoundOut
和 WaveIn
并不是特别 low-latency 音频 API。对于这样的事情,ASIO 是更可取的。不幸的是,AsioOut
使用起来有点复杂,但它应该可以让您获得更低的延迟。