MIDI音频格式解析

由于网上关于MIDI音频格式的实例解析较少,

而本人这段时间刚好有做相关的应用,

所以,特别分享MIDI的解析实例,

希望对大家有所帮助。

 

0x4D , 0x54 , 0x68 , 0x64 ,  // "MThd"
 0x00 , 0x00 , 0x00 , 0x06 ,  // 头块长度:不包括前4字节和本4字节
 0x00 , 0x01 , // 格式;1-多轨,同步
 0x00 , 0x03 , // 轨道数 = 3
 0x01 , 0xE0 , // 基本时间格式 0x01E0 = 480;
 
 0x4D , 0x54 , 0x72 , 0x6B ,  // "MTrk"
 0x00 , 0x00 , 0x00 , 0x15 ,  // 21 该规长度:不包括前4字节和本4字节
 0x00 , // 时间差
 0xFF , 0x58 , 0x04 , 0x04 , 0x02 , 0x18 , 0x08 , // 其他功能、节拍、长度4、分子4、分母4、节拍器时钟24、一个四分音符包含的32分音符的个数8
 0x00 , // 时间差
 0xFF , 0x51 , 0x03 , 0x0C , 0x35 , 0x00 , // 其他功能、速度、长度3:1个四分音符的微秒数800,000
 0x84 , 0xE7 , 0x00 , // 时间差:128^2*4+128*103+0 = 78720
 0xFF , 0x2F , 0x00 ,  // 音轨结束标志。
 
 0x4D , 0x54 , 0x72 , 0x6B , // "MTrk"
 0x00 , 0x00 , 0x09 , 0xC9 , // 2505 该规长度:
 0x00 , // 时间差
 0xFF , 0x03 , 0x07 , // 歌曲标题,音轨名称,长度7
 0x54 , 0x72 , 0x61 , 0x63 , 0x6B , 0x20 , 0x31 , // "Track 1"
 0x00 , // 时间差
 0xFF , 0x04 , 0x1F , // 乐器名称,长度31,--"Microsoft GS Wavetable SW Synth"
 0x4D , 0x69 , 0x63 , 0x72 , 0x6F , 0x73 , 0x6F , 0x66 , 0x74 , 0x20 , 0x47 , 0x53 , 0x20 , 0x57            
 , 0x61 , 0x76 , 0x65 , 0x74 , 0x61 , 0x62 , 0x6C , 0x65 , 0x20 , 0x53 , 0x57 , 0x20 , 0x53 , 0x79 , 0x6E , 0x74            
 , 0x68 , 
 
 0x00 , // 时间差
 0xB0 , 0x0A , 0x40 , // 调换控制,控制号10(声像控制器),(CAKEWALK默认值是64)新值64
 
 0x89 , 0x30 , // 时间差=128*9+48=1200us
 0x90 , 0x40 , 0x50 , // 音符打开,音符号64,速度80  (E5 : MI)
 
 0x81 , 0x58 , // 时间差=128*1+88=216us
 0x80 , 0x40 , 0x40 , // 音符关闭,音符号64,速度64  (E5 : MI)
 
 0x18 , // 时间差=24us
 0x90 , 0x45 , 0x50 , // 音符打开,音符号69,速度80  (A5 : La)
 
 0x81 , 0x58 , // 时间差=128*1+88=216us
 0x80 , 0x45 , 0x40 , // 音符关闭,音符号69,速度64  (A5 : La)
 
 0x18 , 
 0x90 , 0x47 , 0x50 , // 音符打开,音符号71,速度80  (B5 : Si)
 
 0x81 , 0x58 , // 时间差=128*1+88=216us
 0x80 , 0x47 , 0x40 , // 音符关闭,音符号71,速度64  (B5 : Si)
 
 0x18 , 
 0xB0 , 0x40 , 0x7F , // 调换控制,控制号64(延音控制器),新值117
 
 0x00 , // 时间差
 0x90 , 0x48 , 0x64 , // 音符打开,音符号72,速度100 (C6 : Do)
 
 0x00 , // 时间差
 0x90 , 0x45 , 0x50 , // 音符打开,音符号69,速度80 (A5 : La)
 
 0x83 , 0x60 , // 时间差=128*3+96=480us
 0x80 , 0x48 , 0x40 , // 音符关闭,音符号72,速度64 (C6 : Do)
 
 0x00 , // 时间差
 0x80 , 0x45 , 0x40 , // 音符关闭,音符号69,速度64  (A5 : La)
 
 0x00 , // 时间差
 0x90 , 0x4A , 0x64 , // 音符打开,音符号74,速度100  (D6 : RE)
 
 0x81 , 0x70 , // 时间差=128*1+102=230us
 0x80 , 0x4A , 0x40 , // 音符关闭,音符号74,速度64  (D6 : RE)
 
 0x00 , // 时间差
 0x90 , 0x4C , 0x64 , // 音符打开,音符号76,速度100  (E6 : MI)
 
 0x81 , 0x70 , // 时间差=128*1+102=230us
 0x80 , 0x4C , 0x40 , // 音符关闭,音符号76,速度100  (E6 : MI)
 
 0x00 ,  
 0xB0 , 0x40 , 0x7F , // 调换控制,控制号64(延音控制器),新值117
 
 0x00 , 
 0x90 , 0x4A , 0x64 , // 音符打开,音符号74,速度100  (D6 : RE)

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值