android midi 格式开发总结(1)

最近做的项目中需要解析和编辑mid格式的文件,学习了一下midi格式。

总结来说midi格式是一种为了统一电子音乐之间的联系而进行规范的一种记录格式。

mid文件并不录制声音的具体波形或者内容,它只是记录某些具体声音出现的时间顺序力度等信息。
然后根据解析出来的文件进行相应的演奏。因此不同的解析工具解析同一文件演奏出的声音可能会不一样。
但也正因只是记录基本信息,mid格式的文件相当小巧,通常不会唱过几十k(一首3分钟左右的曲目)。
结合参考文档和一个解析出来的mid文件来具体分析这种文件格式:

分析文件:Auld Lang Syne.mid

解析出的一部分数据:4d546864000000060001000101e04d54726b0000033b00ff58040402180800ff5902000000ff51030a675900c00002b00764020a40025b1e025d1e8b1890515083305100304f50854f4f00014c5081584c00184c5083304c0030485083304800304a50854f4a0001485081584800184a5083304a0030515083305100304f50854f4f00014c5081584c00184c5083304c00304f5083304f003051508a27510079515083305100304f50854f4f00014c5081584c00184c5083304c0030485083304800304a50854f4a0001485081584800184a5083304a00304c5083304c00304850854f48000145508158450018455083304500304350833043003048508a27

分段分析(时间差单位为trick):

4d 54 68 64   :ASCII字符“MThd”,用来鉴别是否Midi文件

00 00 00 06  :文件头描述部分的字节数,它总是6,所以一定是“00 00 00 06”

00 01 :midi文件格式,多音轨,且同步。

00 01 :音轨数目为1

01 e0 :指定基本时间,480

4d 54 72 6b :ASCII字符“MTrk” 

00 00 03 3b :该轨道的字节数03 3b =827

00 ff 58 04 04 02 18 08 :时间差为0,ff 58设置节拍 ,04 字节数为04, 04 02设置节拍分子为4,分母为2的2次方,即4/4拍,18 08通常忽略字节

00 ff 59 02 00 00 :时间差0,ff 59设置调号,02 字节数为2,00 00为C大调

00 ff 51 03 0a 67 59 :时间差0,ff 51 设置速度,03 字节数为3,0a 67 59 一个四分音符的微秒数为 681817即0.681817秒

00 c0 00 02:时间差0,c0 00改变第一音轨乐器为大钢琴 

02 b0 07 64: 时间差2,设置第一通道主音量值为64,

02 0a 40:时间差2,设置第一通道声相调整值为64,

02 5b 1e:时间差2,混音效果深度为30

02 5d 1e:时间差2,合唱效果深度为30

8b 18 90 51 50 :时间差 1432,按下81号键,力度80

83 30 51 00 :时间差 83 30,松开81号键,力度00

30 4f 50 :时间差30,按下79号键,力度80

85 4f 4f 00: 时间差85 4f松开79号键,力度00

01 4c 50 : 时间差01,按下76号键,力度80

81 58 4c 00 :时间差81 58,松开76号键,力度00

剩余信息以此类推。

附:国际声学音高记法《科学音调记号法》


参考文档:

MIDI音乐格式分析--理论篇:http://www.midifan.com/modulearticle-detailview-901.htm
MIDI音乐格式分析--实践篇:http://www.midifan.com/modulearticle-detailview-902.htm
MIDI音乐格式分析--附件篇:http://www.midifan.com/modulearticle-detailview-903.htm

midi乐器列表https://wenku.baidu.com/view/61b67337cd7931b765ce0508763231126edb77a4.html

MIDI音符代码表 https://wenku.baidu.com/view/abb1ed425acfa1c7ab00cc38.html
控制器编号:https://wenku.baidu.com/view/0c700a81f524ccbff121848a.html
  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值