NAudio.Midi 使用 MidiIn 延迟

NAudio.Midi Delay with MidiIn

在我的 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? 有什么办法可以减少延迟吗?

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

这与NAudio无关。

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

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