文章目录

  • 前言
  • 一、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 四分音符时长 )相关推荐

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

    文章目录 前言 一.FF 58 04 拍号 二.音符开指令 三.音符关指令 四.音轨结束标志 前言 在博客 [BLE MIDI]MIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标 ...

  2. 【BLE MIDI】MIDI 文件格式分析总结 ★★★

    文章目录 一.MIDI 文件简介 二.MIDI 文件头解析 1.MIDI 文件头标识 2.MIDI 文件头长度 3.MIDI 文件格式 4.MIDI 轨道个数 5.基本时间 三.MIDI 轨道分析 四 ...

  3. 【BLE MIDI】MIDI 文件速度设置识别 ( 查找 midi 文件中速度相关的二进制数据 | FF 51 03 速度设置指令 )

    文章目录 一.问题说明 二.查找 midi 文件中速度相关的二进制数据 一.问题说明 解析 midi 文件时 , 发现音符解析出现异常 ; 是根据 音符 微秒时长 , 统计音符时 , 发现音符解析出现 ...

  4. 【BLE MIDI】MIDI 时间标志分析 ( 音符速度设置事件 | 拍号设置事件 | 基本时间 - 每个四分音符有多少 tick 或 pulse | 节拍时值计算 | 小节时值计算 )

    文章目录 一.从 MIDI 文件中可以获取的信息 1.音符速度设置事件 2.拍号设置事件 3.文件头基本时间 二.节拍时值计算 三.小节时值计算 一.从 MIDI 文件中可以获取的信息 MIDI 时间 ...

  5. MIDI 文件格式分析

    MIDI 文件属于二进制文件,这种文件一般都有如下基本结构: 文件头+数据描述 文件头一般包括文件的类型,因为 Midi 文件仅以.mid 为扩展名的就有 0 类和 1 类两种,而大家熟悉的位 图文件 ...

  6. PE文件和COFF文件格式分析——RVA和RA相互计算

    之前几节一直是理论性质的东西非常多.本文将会讲到利用之前的知识得出一个一个非常有用的一个应用.(转载请指明来源于breaksoftware的csdn博客) 首先我们说下磁盘上A.exe文件和正在内存中 ...

  7. 如何对新增用户下载到激活环节进行分析?(案例:时长奖励激励方案)

    前言:本文适用于游戏产品. 文中提及的新增用户,指从下载到注册后初次使用的用户,具体分析也围绕该环节展开. 下载到激活过程中,主要会经历的环节为下载-安装-激活-注册.这个过程可能面临的问题可分为两类 ...

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

    文章目录 前言 一.MIDI 轨道分析 二.MIDI 轨道头 三.MIDI 轨道长度 四.delta-time 间隔 前言 上一篇博客 [BLE MIDI]MIDI 文件格式分析 ( MIDI 文件头 ...

  9. MIDI文件格式分析(补充和勘误)

    MIDI文件格式分析(补充和勘误) 本文是对<MIDI文件格式分析>博客链接的一点补充: 原文复制 vim编辑二进制文件的方法 文中制作的midi文件内容和改动 原文复制 MIDI文件属于 ...

最新文章

  1. Codeforces 32E Hide-and-Seek 乞讨2关于镜面反射点 计算几何
  2. Lintcode 569解题思路及c++代码
  3. php中(foreach)用法介绍
  4. SAP UI5 oSelectedItem.getBindingContext(json)
  5. 田牌魔术 | .NET Core 3.0 + Azure 远程点亮树莓派上的一盏灯
  6. java 传递脚本给c_java – JNI将参数传递给c的方法
  7. Ditto剪贴板增强工具
  8. 古希腊的五大数学巨匠
  9. React:开发者友好性和易用性
  10. c#实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩
  11. How AI Is Transforming Medical Imaging
  12. C#获取堆栈信息,输出文件名、行号、函数名、列号等
  13. Windows server 2003 伪静态配置方法
  14. Linux——虚拟机系统安装
  15. UG NX 12 草图
  16. 物体检测学习笔记-3D相机成像原理简介
  17. Endnote与知网研学(E-study)题录相互导入
  18. 计算机已锁定的时候鼠标不能用,鼠标驱动正常但是不能用怎么回事_电脑鼠标驱动正常但是不能用怎么解决...
  19. Windows conda ImportError: DLL load failed while importing shell
  20. 暴力破解带有密码的压缩文件

热门文章

  1. 流水线经典讲解!!!!!
  2. 《浪潮之巅》读书笔记汇总
  3. 洛谷4366——最短路(dijkstra,思维,异或)
  4. 比赛-模拟赛 (17 Aug, 2018) (待施工)
  5. Redis学习(2)-redis安装
  6. 2017-2018-1 《信息安全系统设计基础》实验三报告
  7. Java序列化和克隆
  8. spring junit 测试
  9. native-maven-plugin与maven-nar-plugin配置
  10. ASP的Server.UrlEncode和Asp.Net的Server.UrlEncode的返回结果不同