NAudio.Midi延迟MidiIn

时间:2016-04-10 14:26:07

标签: midi naudio

在我的MIDI应用程序中,我使用NAudio。 (太棒了!)但是如果我在我的midi键盘上玩,总会有延迟。这是我的代码:

private MidiOut @out = new MidiOut(0);
private void InitMidiOut()
{
    MidiIn midiIn = new MidiIn(0);
    midiIn.MessageReceived += midiIn_MessageReceived;
   midiIn.Start();
}

private void midiIn_MessageReceived(object sender, MidiInMessageEventArgs e)
{
    if (e.MidiEvent.CommandCode == MidiCommandCode.NoteOn) {
        @out.Send(e.RawMessage);
    }
}

据我所知,WaveOut有延迟,但为什么使用MidiOut? 有没有办法减少延迟?

2 个答案:

答案 0 :(得分:1)

这与NAudio无关。

微软的内置软件合成器最初是为播放MIDI文件而编写的,不需要实时响应,因此它使用高延迟来降低丢失的风险。

您必须将其替换为允许以较低延迟运行的其他合成器(例如,VirtualMIDISynth)。

答案 1 :(得分:0)

可以在几个阶段引入延迟。但是NAudio是midi... Windows API的一个相当薄的包装器,因此我希望接收和发送很快发生。你用什么来实际产生声音?