我正在尝试编写一些函数来读取 MIDI 文件。我一直在参考许多提供规范的网站,但主要是这个: http: //www.sonicspot.com/guide/midifiles.html
我一直在为我下载的超级马里奥兄弟主题的 MIDI 文件测试它,我得到了一些意想不到的数据。可能是文件格式错误,但我认为更有可能是我做错了什么。这是我遇到问题的数据(来自十六进制编辑器),以及我认为我所知道的:
4D 54 72 6B 00 00 00 19 00 FF 51 03 05 7B 71 00 FF 58
|---------| |---------| || || || |------| || ||
MTrk Chunk size || || || Tempo || ||
(25 bytes) || || ||(ms per || ||
\/ || ||1/4 note) || ||
VLen value || || \/ ||
(Event at time 0)|| || VLen value ||
\/ || (event at ||
Beginning of || time 113) ||
meta-event || ||
\/ \/
Meta-event type: ????
set tempo
如您所见,如果之前的一切0x00
都是正确的,那么它在那里做什么?之前的 VLen 值具有二进制值,01110001
因此不期望 VLen 值的另一部分,因此,AFAIK应该是事件类型。但是,没有与 关联的事件类型0x0
。谁能看到我哪里出错了?