我试图解析midi文件时遇到问题.我试图解析frets on fire游戏使用的音符文件(它只使用midi文件所以我认为这不是相关的)如果你们中的任何人都熟悉它,我遇到的问题是一般的midi问题.我有一个带有一个名为吉他部分的轨道的文件,十六进制,在十六进制编辑器中查看如下:
4D 54 72 6B 00 00 1E 74 00 FF 03 0B 50 41 52 54 20 47 55 49 54 41 52 A9 20 90 61 40 9A 20 61 00 83 60 63 40 BC
我的程序解析如下:
4D M
54 T
72 R
6B K
00 < -
00大小的
1E轨道部分
74 - >
00此事件的时间
FF事件类型(这是元)
03元事件类型
0B数据长度
50"P"
41"A "
52"R"
54"T"
20""
47"G"
55"U"
49"I"
54"T"
41"A"
52"R"
A9事件时间(可变长度)1 0101001
20次事件(可变长度)0 0100000
90事件,通道(非元)1001 =音符开,通道= 0000
61注意有2个参数这是第
40个,这是第二个
9A变量时间1 0011010
20变量时间0 0100000
这是我的问题所在,没有事件类型为0x6的事件,因为0x61是01100001我们必须假设它是非元,因此事件类型应该是6(0110)并且通道是(0001)但是midi规范包含no这个事件的识别..我已经添加了一些字节后,他们在某种程度上是相关的,但显然在我的程序点击下一个字节,不识别事件和炸弹.
61
00
83
60
63
40
BC
如果有人认为他们可以解释我的解析逻辑出错的地方我会非常感激,抱歉格式化,我想不出更好的方式来说明我的问题.
我一直在使用这个网站:http://www.sonicspot.com/guide/midifiles.html作为参考,到目前为止它并没有让我错.我认为这可能是直接与烦恼着火有关的东西,但它似乎并不像我下载了游戏的另一个备注文件而且该文件不包含此事件.
提前致谢.