【BLE MIDI】MIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )
文章目錄
- 前言
- 一、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 的時長為 500000480\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×1918480\cfrac{500000 \times 1918}{480}480500000×1918? 微秒
總結
以上是生活随笔為你收集整理的【BLE MIDI】MIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【BLE MIDI】MIDI 文件格式分