我目前正在构建一个用于显示 MIDI 文件中的音符的软件。我可以从 NoteOn 和 NoteOff 事件中获取每个音调字母,但我不知道我是如何获得或如何计算音符类型(全音、半音、八音..)和其他拍号。我怎样才能得到它?我找了一些例子,但没有成功。
问问题
3845 次
1 回答
8
MIDI 不像古典音乐那样以绝对数量表示音符。相反,音符的长度一直持续到解析出相应的音符关闭事件为止(MIDI 文件使用 0 力度的音符打开事件作为音符关闭也是很常见的,请记住这一点)。所以基本上你需要将两个事件之间的时间转换为音乐时间,以了解是否使用全音、半音、四分音符等。
这种翻译显然取决于了解速度和拍号,它们是 MIDI 元事件。有关解析这些的更多信息可以在这里找到:
http://www.sonicspot.com/guide/midifiles.html
基本上,您使用 PPQ 来查找每个滴答声的毫秒数,然后使用拍号和速度来查找四分音符的长度(以毫秒为单位)。StackOverflow 上有一些关于这种转换的答案,但我正在手机上写这篇文章,现在懒得去查了。:-)
希望这会为您指明正确的方向!
于 2013-08-07T15:27:30.203 回答