请解析下面MIDI文件: 4D 54 68 64 00 00 00 06 00 01 00 01 00 78 4D 54 72 6B 00 00 00 41 00 FF 03 12 46 6F 67 67 79 20 4D 6F 75 6E 74 61 69 6E 20 54 6F 70 00 FF 01 1D 6E 61 6D 65 3A 43 6F 75 6E 74 72 79 2C 43 6F 75 6E 74 72 79 2C CF E7 B4 E5 C0 D6 2C 0A 00 FF 58 04 04 02 18 08 00 FF 59 02 03 00 00 FF 51 03 07 A1 20 00 FF 21 01 00 FF 2F 00 4D 54 72 6B 00 00 02 AA 00 FF 21 01 00 00 FF 03 0C 42 61 73 73 20 20 20 20 28 42 42 29 00 CA 23 00 BA 0A 40 83 60 5D 00 00 5B 00 00 9A 21 50 81 18 21 00 1C 21 52 32 21 00 0A 28 57 29 28 00 13 28 4B 5A 28 00 1E 28 43 0D 28
时间: 2023-06-10 22:05:47 浏览: 121
电脑圈圈00教你玩USB.
4星 · 用户满意度95%
该MIDI文件的前8个字节为文件头,依次为4D 54 68 64 00 00 00 06,表示该文件为MIDI文件,文件头长度为6个字节。接下来4个字节00 01 00 01表示MIDI文件有1个音轨,每个音轨包含1个乐器。
接着34个字节为音轨设置,依次为4D 54 72 6B 00 00 00 41 00 FF 03 12 46 6F 67 67 79 20 4D 6F 75 6E 74 61 69 6E 20 54 6F 70 00 FF 01 1D。其中,4D 54 72 6B是音轨开始标志,00 00 00 41表示该音轨包含65个事件。每个事件的格式为:事件类型(第一个字节)+时间戳(后面1-4个字节,根据需要变长编码)+事件内容(剩余字节)。该音轨包含的事件类型有:FF 03表示音轨名称,后面是"MIDI Top";FF 01表示文本事件,后面是名称:"name:Country,Country,中国,";CF E7 B4 E5 C0 D6 2C 0A表示控制器事件,控制器为0xE7,值为0xB4E5C0D6,后面的字节暂未解析;FF 58表示时钟分辨率事件,后面两个字节表示每个四分音符的时钟数,这里是4/2^24,即480。FF 59表示调号事件,后面一个字节表示调号,这里是3,表示升E小调。FF 51表示节拍器事件,后面三个字节分别为2/245、7/32、0,表示每分钟的24分音符数、每个节拍器的时钟数、后面的内容与时间无关,不用解析;FF 21表示MIDI端口事件,后面一个字节表示端口号,这里是0,表示缺省端口;FF 2F 00表示音轨结束标志。其中,4D 54 72 6B 00 00 02 AA是下一条音轨开始标志,后面的字节暂未解析;FF 21 01 00表示MIDI端口事件,后面一个字节表示端口号,这里是0,表示缺省端口;FF 03 0C表示音轨名称,后面是"Bass (BB)"。
接下来是音符数据,格式为:时间戳(1-4个字节,根据需要变长编码)+事件内容,其中,事件内容为字节1-2的编码表示命令(0x80-0xEF表示音符,0xF0之后的命令字节需要使用状态字节),字节3-4表示音符号和力度。根据字节的含义,可以将该MIDI文件转换为乐谱。
阅读全文