BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )(代码
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )(代码相关的知识,希望对你有一定的参考价值。
一、MIDI 文件简介
下面的 mid 文件是一个简单 midi , 其中只有一条轨道 , 一个音符 ;
这个 mid 文件很简单 , 但是麻雀虽小 , 五脏俱全 , 其中有所有的必须的 midi 文件头 , midi 轨道头 , 时间标志 , 等信息 ;
下面开始逐个字节 , 解析上述 midi 文件 ;
4D 54 68 64 00 00 00 06 00 00 00 01 01 E0 4D 54
72 6B 00 00 00 25 00 FF 03 05 B2 E2 CA D4 30 00
FF 51 03 07 A1 20 00 FF 58 04 04 02 18 08 00 90
3C 64 8E 7E 80 3C 40 00 FF 2F 00
二、MIDI 文件头解析
文件头数据 :
4D 54 68 64 00 00 00 06 00 00 00 01 01 E0
1、MIDI 文件头标识
4D 54 68 64
: 0 ~ 3 字节 , " MThd " 字符串 ASCII 码 , 这是 mid 文件的标识 ;
2、MIDI 文件头长度
00 00 00 06
: 4 ~ 7 字节 , 这是个 4 字节整型数据 , 大端格式显示 , 整型低位在高字节 , 整型高位在低字节 , 该数据表示 mid 文件文件头长度 , 这里的文件头长度为 6 , 表示后面 6 字节是 mid 文件文件头的范围 ;
大端格式 : 高位存储在低字节中 , 符合人的书写习惯 ;
小端格式 : 低位存储在低字节中 , 符合计算机处理逻辑 ;
3、MIDI 文件格式
00 00
: 8 ~ 9 字节 , 表示 mid 文件的格式 ; 这两个字节是 short 类型整型 , 大端格式 ;
- 0 : mid 文件只有一条轨道 , 所有的通道都在一条轨道中 ;
- 1 : mid 文件有多个音轨 , 并且是同步的 , 即所有的轨道同时播放 ;
- 2 : mid 文件有多个音轨 , 不同步 ;
这里是 0 格式 , 也就是说只有一条轨道 ;
4、MIDI 轨道个数
00 01
: 10 ~ 11 字节 , 表示 MIDI 轨道个数 , short 类型 , 大端格式 ;
此处表示有一条轨道 , 所有通道的音符和节拍信息都在该轨道中 ;
5、基本时间
01 E0
: 12 ~ 13 字节 , 用于指定基本时间 ;
2 个字节 , 要拆分成 3 部分 , 最高位 ( 第 15 位 ) 作为标识位 , 第 8 ~ 14 位 作为一部分 , 第 0 ~ 7 位 作为一部分 ;
由于是大端格式排列 , mid 文件第 12 字节 ( 低地址 ) 是 高位 , mid 文件第 13 字节 ( 高地址 ) 是低位 ;
01 E0
的二进制形式如下 : 0000 0001 11110 0000 ;
最高位 0000 0001 11110 0000 是 0 , 红色的是最高位 , 表示当前 代表的事件格式是 类型1 , 第 0 ~ 14 位 代表的是 四分音符的 tick 数 ;
十六进制 01 E0
对应的十进制数字是 480 , 也就是说一个四分音符有 480 tick ;
tick 是时间单位 , 这是 mid 文件中计算时间的最基本单位 ;
以上是关于BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )(代码的主要内容,如果未能解决你的问题,请参考以下文章
BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )
BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )(代码
BLE MIDIMIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )
BLE MIDIMIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )
BLE MIDIMIDI 文件格式分析 ( FF 58 04 拍号 | 音符开指令 | 音符关指令 | 音轨结束标志 )
BLE MIDIMIDI 文件格式分析 ( FF 58 04 拍号 | 音符开指令 | 音符关指令 | 音轨结束标志 )