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)。
在我的 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)。