NAudio.Midi 延迟与 MidiIn
Posted
技术标签:
【中文标题】NAudio.Midi 延迟与 MidiIn【英文标题】:NAudio.Midi Delay with MidiIn 【发布时间】:2016-04-10 14:26:07 【问题描述】:在我的 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? 有没有办法减少延迟?
【问题讨论】:
您使用什么组件(软件或硬件)将 MIDI 转换为实际声音? 目前Windows 7内置quartz.dll。 该 DLL 不包含 MIDI 合成器。你用的是什么输出设备? 软件是内置的“Microsoft GS Wavetable Synth”。输出设备是 Creative Xmod。 【参考方案1】:这与 NAudio 无关。
Microsoft 的内置软件合成器最初是为播放 MIDI 文件而编写的,不需要实时响应,因此它使用高延迟来降低丢失的风险。
您必须将其替换为允许以较低延迟运行的其他合成器(例如,VirtualMIDISynth)。
【讨论】:
感谢您的回答。我已经安装了 VirtualMIDISynth 和一些不错的 Soundfonts。现在声音好多了。但是延迟是一样的。 你配置了什么延迟? 谢谢!!我没有注意到,我可以在 VirtulaMIDISynth 中配置延迟。我将它设置为 0,现在不再有延迟。【参考方案2】:可以在几个阶段引入延迟。但是 NAudio 是midi...
Windows API 的一个相当薄的包装器,所以我希望接收和发送会很快发生。你用什么来实际产生声音?
【讨论】:
目前是内置的“Microsoft GS Wavetable Synth”。 感谢您的回答。看我的cmets到CL。我使用音乐符号应用程序(“capella”)并且没有延迟,无论我使用“Microsoft GS Wavetable Synth”还是 CL 推荐的 VirtualMIDISynth。以上是关于NAudio.Midi 延迟与 MidiIn的主要内容,如果未能解决你的问题,请参考以下文章