MIDI的节奏和时间签名



我目前正在构建一个软件,用于显示MIDI文件中的音符。我可以从NoteOn和NoteOff事件中获得每个音调字母,但我不知道如何获得或如何计算音符类型(整音符、半音符、eigh..)和其他时间签名。我怎样才能得到它?我找了一些例子,但没有成功。

MIDI不像古典音乐那样以绝对量表示音符。相反,音符的长度会持续,直到解析出相应的音符关闭事件(MIDI文件使用速度为0的音符打开事件作为音符关闭也是很常见的,请记住这一点)。因此,基本上,你需要将两个事件之间的时间转换为音乐时间,以了解是否使用全音符、半音符、四分音符等。

这个翻译显然取决于知道节奏和时间特征,这是MIDI元事件。关于解析这些信息的更多信息可以在这里找到:

http://www.sonicspot.com/guide/midifiles.html

基本上,你用PPQ来计算每个节拍的毫秒数,然后用时间特征和节奏来计算四分之一音符的长度(以毫秒为单位)。StackOverflow上有一些关于这种转换的答案,但我正在手机上写这篇文章,现在不想查了。:-)

希望这能为你指明正确的方向!

最新更新