我目前正在构建一个用于显示MIDI文件音乐笔记的软件.我可以从NoteOn和NoteOff事件中获取每个音调,但我不知道如何获得或如何计算音符类型(整个,一半,八个......)和其他时间签名.我怎么能得到它?我找了一些例子但没有成功.
MIDI不代表绝对数量的音符,就像古典音乐一样.相反,音符的长度一直持续到相应的音符关闭事件被解析(同样,MIDI文件使用关于0速度的事件的音符作为音符关闭是很常见的,请记住这一点).因此,基本上您需要将两个事件之间的时间间隔转换为音乐时间,以了解是否使用整数,一半,四分音符等.
这种翻译显然取决于知道节奏和时间签名,这是MIDI元事件.有关解析这些内容的更多信息,请访问:
http://www.sonicspot.com/guide/midifiles.html
基本上你可以通过PPQ找到每个刻度的毫秒数,然后使用时间签名和速度来查找四分音符的长度(以毫秒为单位).这个转换在StackOverflow上有一些答案,但是我正在手机上写这篇文章,现在就不用担心了.:-)
希望这能指出你正确的方向!