文章目录
一、问题说明
二、查找 midi 文件中速度相关的二进制数据
一、问题说明
解析 midi 文件时 , 发现音符解析出现异常 ;
是根据 音符 微秒时长 , 统计音符时 , 发现音符解析出现异常 ;
先说结论 , 解析音符时 , 优先考虑使用 tick 作为单位 , 能不使用真实时间 , 就不要使用真实时间 ;
在 Cubase 中打开 midi 文件 , 按下 Ctrl + T 快捷键 , 查看 midi 文件的速度 ;
可以看到 , 开始的速度是 70 bpm , 在 1/5 位置 , 速度变成了 65 bpm ;
二、查找 midi 文件中速度相关的二进制数据
参考 【BLE MIDI】MIDI 文件格式分析总结 ★★★ 八、FF 51 03 四分音符时长 博客章节 , 可以知道 , FF 51 03 是时间设定的标志 ;
使用二进制查看工具 , 打开该 midi 文件 , 发现该 midi 中竟然有 2 个 FF 51 03 速度设置标志 , 两个速度标记之间的 84 C1 48 是 delta-time , 单位是 tick , 参考 【BLE MIDI】MIDI 文件格式分析总结 ★★★ 六、delta-time 间隔 博客章节 , 计算该 delta-time 值 ;
设置了 2 次速度 , 这样就导致了音符的时间计算错误 ;