mid文件解析实例

因工作需要,现对mid文件进行解析,逐行解析如下:
源文件地址:

链接: https://pan.baidu.com/s/1Ll2b-vEMP8b-WwE86ojNSA 提取码: 8888
4d54 6864 //MThd
0000 0006 //长度
0000 0001 01e0 //typ0,即单轨多通道。单轨因此轨道数为1. 01e0:每4分音符多少个ticks=480ticks

4d54 726b  //MTrk
0000 00b5 //长=181个字节,到倒数第二个字节结尾
00ff 5804 0402 1808//系统消息(FF):设置节拍(58),四个参数(04),每小节四拍(04),每拍2的2次方音符(02),每个midi时钟包含的clock数(18=24),每个四分音符包含32分音符数(08,默认情况下就为8,特殊乐器可修改此值),即每个四分音符有576个tick
00ff 5103 07a1 20 //系统消息:设置速度(51),三个参数(03),07a120=50,0000微秒,即每个四分音符有0.5秒
00ff 0307 3f3f 3f20 3432 33//系统消息:文本事件(03),7个参数(07).对应的ASCII码为:??? 423
00ff 2001 09 //系统消息:midi通道前缀(20),一个参数(01),设置第9通道(09)
00ff 0406 496e 7374 2031 //系统消息:文本事件(04),6个参数(06),对应的ASCII码为:Inst 1
00c9 00 //改变音色(cx),将9通道(c9),改为0号乐器(00=钢琴音色)
00b9 7900 //改变控制器(bx),将9通道(b9),的0x79号控制器,设置新值0x00
00b9 4000 //将0x40号控制器,设置为0x00
00b9 5b12 //将0x5b号控制器,设置为0x12
00b9 0a40 //将0x0a号控制器,设置为0x40
00b9 0764 //将0x07号控制器,设置为0x64
00ff 0306 496e 7374 2031//系统消息:文本事件(03),6个参数(06),对应的ASCII码为:Inst ?
00b9 4000 //将0x40号控制器,设置为0x00
0099 2c67 //0tick按下2c
0099 2458 //0tick按下24
6389 2c00//经过99tick,抬起2c
1189 2400 //经过99+0x11=116tick,抬起24
7c99 2c4d //经过116+0x7c=240tick,按下2c
5889 2c00 //经过240+0x58=328tick,抬起2c
8118 992c 54 //经过328+0x98=480tick,按下2c
0099 2662 //经过480tick,按下26
6989 2c00 //经过480+0x69=585tick,抬起2c
1889 2600 //经过585+0x18=609tick,抬起26
6f99 2c5b //经过609+0x6f=720tick,按下2c
5c89 2c00 //经过720+0x5c=812tick,抬起2c
8114 992c 62 //经过812+0x94=960tick,按下2c
0099 245e //经过960tick,按下24
5e89 2c00 //经过960+0x5e=1054tick,抬起2c
1889 2400 //经过1054+0x18=1078tick,抬起24
7a99 2c53 //经过1078+0x7a=1200tick,按下2c
6089 2c00 //经过1200+0x60=1296tick,抬起2c
8110 992c 69 //经过1296+0x90=1440tick,按下2c
0099 266c //经过1440tick,按下26
6b89 2c00 //经过1440+0x6b=1547tick,抬起2c
0989 2600 //经过1547+0x09=1556tick,抬起26
7c99 2c6e //经过1556+0x7c=1680tick,按下2c
5389 2c00 //经过1680+0x53=1763tick,抬起2c
01ff 2f 00 //经过1763+0x01=1764tick,结束. 1764/480*500000us=1837500us
0a         //经过1764+0x0a=1774tick,整个文件结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值