我正在制作一个 C# 程序,它应该从 MIDI 文件中读取每个音符并获取音符的长度和速度,但我不知道该怎么做...
我正在使用 DryWetMidi图书馆,但还有其他图书馆吗?
最佳答案
以 DryWetMidi 1.1.0 开头, 你只需要得到一个 MIDI 文件的音符就是这个代码:
IEnumerable<Note> notes = midiFile.GetNotes();
Note
类包含您需要的所有属性:NoteNumber
、NoteName
、Octave
、Length
、Time
、Velocity
和 OffVelocity
。
要将 Time
获取为 TimeAs
扩展方法:
TempoMap tempoMap = midiFile.GetTempoMap();
MetricTimeSpan metricTime = note.TimeAs<MetricTimeSpan>(tempoMap);
BarBeatTicksTimeSpan musicalTime = note.TimeAs<BarBeatTicksTimeSpan>(tempoMap);
对于Length
,可以使用LengthAs
扩展方法:
TempoMap tempoMap = midiFile.GetTempoMap();
MetricTimeSpan metricLength = note.LengthAs<MetricTimeSpan>(tempoMap);
BarBeatTimeSpan metricLength = note.LengthAs<BarBeatTimeSpan>(tempoMap);
您可以在 Time and length 中阅读更多内容库文档的文章。
关于c# - 使用 DryWetMidi 从 MIDI 文件中读取每个音符(音符、力度、长度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396347/