【问题标题】:How to read MIDI notes with NAudio?如何使用 NAudio 读取 MIDI 音符?
【发布时间】:2013-06-02 14:05:48
【问题描述】:

我需要读取 MIDI 文件以便对音符进行进一步处理。

我尝试像这样使用 NAudio 这样做

MidiFile midi = new MidiFile("Test.mid");
foreach (MidiEvent note in midi.Events[1])
{
    Console.Write(note.AbsoluteTime.ToString().PadRight(10));
    Console.WriteLine(note.DeltaTime);
}

我希望得到音符的开头和持续时间,但我得到了奇怪的值,从 34654 开始(为什么?):

问题:

我需要每个 MIDI 音符和

  • 开始时间
  • 长度
  • 频道索引

如何使用 NAudio 获得正确的值?如果您对其他库有任何建议,请随时提出建议。

【问题讨论】:

标签: c# .net midi naudio


【解决方案1】:

midi 文件规范适用于每个事件的增量时间。所以 0 的增量时间意味着与前一个事件同时发生。 delta-time 代表多少实际时间取决于 midi 文件头中的信息。

以下是有关 MIDI 文件内部工作原理的一些信息。 http://home.roadrunner.com/~jgglatt/tech/midifile.htm

希望对你有帮助。

【讨论】:

  • 所以 delta time 0 意味着和以前一样。为什么绝对时间以 34654 之类的值开头?
  • 另外,这里的暂停是如何表示的?
  • 好吧,没关系。控制台只是将其切断。我认为您提供的信息足以让我接受。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多