老夫n年前拎着上网本在上下班的公交车上写出的MIDI文件解析相关内容,再贴到这里一份~

能静下心来研究MIDI文件结构是幸福的,特别是用代码成功指挥电脑和乐器演奏的时候。

然而曾经想用 Arduino 搞一个简单的 mid 播放器的我却最终搞成了太阳能MPPT充电控制器……

有同样想法的筒子们加油吧!

1 Like

河总威武,软硬全通!太阳能MPPT不是比MIDI系统有搞头嘛,这可是最近几年的研究热点哇~太阳能电池的最大功率点跟踪算法,原来大学里有个老师在搞,带了几个本科生做创新设计,其中有俺一个室友,所以也跟着稍微了解了一点。当时学识不深,很多东西看不懂。现在偶尔也会看到几篇文献资料,感觉研究热度依然不减~

2 Likes

感谢大佬的分享,最近要写一份MIDI的解码,查了好多资料,大佬说的最好懂

连成一块就看不懂了。。。。但是感谢大佬

感谢大佬的分享,最近要写一份MIDI的解码,查了好多资料,大佬说的最好懂

今天终于读到了《midi原理ykfyy》,把看这个文遇到的问题搞懂了一些
现在人在宿舍,书在图书馆,我凭记忆写一点吧。

每个midi消息的基本结构是
deltatime 状态字节 数据1 数据2
后三者各占1字节。
状态字节占1字节,写成二进制就是8个坑,即0000 0000。第1个坑恒为1,可能是为了标识这是个状态字节;2-4坑能表示0-7,对应8种消息类型,几种是系统消息,另几种是通道消息;5-8坑能表示0-15,决定这个消息发送到哪个通道。
对于数据1,数据2来说,第一位通常是0,应该是为了和状态字节区分吧,所以能表示的范围就是0-127了。具体姿势见下↓

【通道消息】两类:
音符。数据1填音符,数据2填力度(填0即关闭音符)
控制器。数据1填控制器号码,数据2填值

7 Likes

感谢大佬分享,解惑解惑

1 Like

感谢大佬分享,解惑解惑

感谢 , 受教了 。

谢谢大佬的分享!!

天天大神,膜拜一下~

第一次接触midi,兴奋

1 Like

真心不错。支持支持

感谢大佬感谢大佬

嗯,通道信息其实有很多,比如音符开关、乐器更改、音符触后、通道触后、音高轮和控制器。

1 Like

MIDI音乐的时长怎么计算,在知道了总tick数的情况下。我倒是知道单一曲速的计算方法,不过如果有多个曲速信息就不知道了。难道是求平均曲速吗?求大佬解惑

大佬厉害感谢分享

感谢大佬分享,解惑解惑感谢大佬分享,解惑解惑

感谢大佬分享!!!!

1 Like