在我的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? 有没有办法减少延迟?
答案 0 :(得分:1)
这与NAudio无关。
微软的内置软件合成器最初是为播放MIDI文件而编写的,不需要实时响应,因此它使用高延迟来降低丢失的风险。
您必须将其替换为允许以较低延迟运行的其他合成器(例如,VirtualMIDISynth)。
答案 1 :(得分:0)
midi...
Windows API的一个相当薄的包装器,因此我希望接收和发送很快发生。你用什么来实际产生声音?