如何用NAudio读取MIDI音符?

时间:2013-06-02 14:05:48

标签: c# .net midi naudio

我需要读取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开始(为什么?):

enter image description here

问题:

我需要每个MIDI音符和

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

如何使用NAudio获取正确的值?如果您对不同的图书馆有建议,请随时提出建议。

1 个答案:

答案 0 :(得分:2)

midi文件规范适用于每个事件的delta-times。因此,delta时间为0意味着与前一个事件同时发生。 delta-time表示的实际时间取决于midi文件头中的信息。

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

希望它有所帮助。