我需要读取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获取正确的值?如果您对不同的图书馆有建议,请随时提出建议。
答案 0 :(得分:2)
midi文件规范适用于每个事件的delta-times。因此,delta时间为0意味着与前一个事件同时发生。 delta-time表示的实际时间取决于midi文件头中的信息。
以下是midi文件内部工作原理的一些信息。 http://home.roadrunner.com/~jgglatt/tech/midifile.htm
希望它有所帮助。