前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【BLE MIDI】MIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )

【BLE MIDI】MIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )

作者头像
韩曙亮
发布2023-03-29 19:35:13
发布2023-03-29 19:35:13
84900
代码可运行
举报
文章被收录于专栏:韩曙亮的移动开发专栏
运行总次数:0
代码可运行

文章目录

一、MIDI 文件简介


下面的 mid 文件是一个简单 midi , 其中只有一条轨道 , 一个音符 ;

这个 mid 文件很简单 , 但是麻雀虽小 , 五脏俱全 , 其中有所有的必须的 midi 文件头 , midi 轨道头 , 时间标志 , 等信息 ;

下面开始逐个字节 , 解析上述 midi 文件 ;

代码语言:javascript
代码运行次数:0
复制
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 文件头解析


文件头数据 :

代码语言:javascript
代码运行次数:0
复制
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 文件中计算时间的最基本单位 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、MIDI 文件简介
  • 二、MIDI 文件头解析
    • 1、MIDI 文件头标识
    • 2、MIDI 文件头长度
    • 3、MIDI 文件格式
    • 4、MIDI 轨道个数
    • 5、基本时间
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档