我正在尝试读取 C++ 中的 midi 文件,但我遇到了一个错误,这似乎是标准 midi 规范中未定义的事件(从许多网站检索,包括: http: //www.sonicspot.com/指南/midifiles.html )
我在十六进制编辑器中打开了 midi 并查明了错误。它发生在第一个“注释”事件之前。该文件是使用 Sibelius 6 软件生成的,我想知道如果我在这里发布文件部分,有人会帮助我解决这个问题。
这是第 3 首曲目的开头:
4D 54 72 6B (MTrk magic number)
00 00 1F F5 (track size in bytes - 8181)
00 FF 03 04 (4 bytes follows) (track sequence name)
00 FF 04 0B (11 bytes follows) (instrument name)
00 C0 34 (program change event)
00 B0 79 00 (controller event)
00 5B <- (what the heck is that?!)
它不能是增量滴答,因为第一个值是 00(没有 MSB 设置为 1),它也不是可识别的事件。10 个字节后,我识别出一个“注释”事件它是:
00 5B 30 00 40 00 00 07 64 00 0A 10 00 90 3E 47 <- 注意
我不知道“注释”之前的那 12 个字节代表什么,因此无法读取文件。我知道第一个音符很长,也许这就是原因。我还注意到我找不到代表“条形”暂停的事件。也许这就是条形+长度的代码?我应该把它们读成蜱虫吗?