BLE MIDIMIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLE MIDIMIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )相关的知识,希望对你有一定的参考价值。

前言

在博客 【BLE MIDI】MIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 ) 分析了 MIDI 文件的前 0 ~ 13 个字节 ;

4D 54 68 64 00 00 00 06 00 00 00 01 01 E0

在博客 【BLE MIDI】MIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 ) 中 , 分析了轨道中的如下选中信息 ,

4D 54 72 6B 00 00 00 25 00

本篇博客开始从第 23 字节分析后续二进制信息 ;





一、FF 03 轨道名称



FF 03 05 B2 E2 CA D4 30 : 23 ~ 30 字节 , FF 03 是 Meta 事件 , 轨道名称设置 ;

FF 03 后面是长度信息 , 05 表示该轨道名称有 5 字节 , 后面的 5 字节就是轨道名称 ;


轨道信息后面的 31 字节 00 是 delta-time ;





二、FF 51 03 四分音符时长



FF 51 03 07 A1 20 : 32 ~ 37 字节 , 音符速度标志 ;

FF 51 03 是音符速度标志位 , 后面的 07 A1 20 3 字节是一个数字 , 代表 四分音符 的时长 , 单位是微秒 ;

07 A1 20 对应十进制数是 500000 , 五十万 , 也就是一个四分音符是 50 万微秒 ;

在之前的 【BLE MIDI】MIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 ) 二、MIDI 文件头解析 5、基本时间 博客章节 解析到一个四分音符有 480 个 tick ;

此时可以计算出每个 tick 的时长为 500000 480 \\cfrac{500000}{480} 480500000 微秒 ;

再回顾下 delta-time 的计算 :

8E 7E 对应的二进制位数为 : 1000 1110 0111 1110

第一个字节 8E 对应的二进制数据位 1000 1110 , 其中第七位的 1 表示这是 delta-time 的高位字节 , 后面的 000 1110 是实际的数值数据 ;

第一个字节 7E 对应的二进制数据位 0111 1110 , 其中第七位的 0 表示这是 delta-time 的低位字节 , 后面的 111 1110 是实际的数值数据 ;

则该 delta-time 的实际数据是 000 1110 111 1110 , 重新组合后为 111 0111 1110 , 该 delta-time 的值是 1918 , 也就是 1918 个 tick 数 ;

上述的 delta-time 是 1918 个 tick , 对应的时间是 500000 × 1918 480 \\cfrac{500000 \\times 1918}{480} 480500000×1918 微秒

以上是关于BLE MIDIMIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )的主要内容,如果未能解决你的问题,请参考以下文章

BLE MIDIMIDI 文件格式分析总结 ★★★

BLE MIDIMIDI 文件格式分析总结 ★★★

BLE MIDIMIDI 文件格式分析 ( FF 58 04 拍号 | 音符开指令 | 音符关指令 | 音轨结束标志 )

BLE MIDIMIDI 文件格式分析 ( FF 58 04 拍号 | 音符开指令 | 音符关指令 | 音轨结束标志 )

BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )

BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )