0

我需要阅读 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 获得正确的值?如果您对其他库有建议,请随时提出建议。

4

1 回答 1

2

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

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

希望能帮助到你。

于 2013-06-02T16:51:59.257 回答