论坛风格切换切换到宽版
  • 3288阅读
  • 0回复

去年搞的MIDI文件分析和简单应用分享 [复制链接]

上一主题 下一主题
离线同意注册
 
发帖
1271
樱饼
0
博丽神社的喝茶券(威望)
0
春度
8
交易币
0
只看楼主 倒序阅读 楼主  发表于: 2013-06-02
渣代码,无注释(死),简单的分析了midi文件,并且单轨输出成文本信息,同步音频与midi信息播放在Flash中使用。

抛砖引玉,有需要的可以改改,做个节奏弹幕或其他音乐游戏啥的应用。
真有人用的话自己要加多轨分析,
MIDI特例分析,比如开始空拍,或者一个超长音符等极限问题,
多宿主mid识别,我只在FL Studio和Cubase下实验过。其他的没试过不知道辨识度怎么样。

分析是用C++写的,除了vector其实没C++什么事....
应用用Flash写的,因为C++用的不熟,写应用比较慢,其实就是得到曲速,音高,力度和时值,利用这些数值,应用怎么写更炫更好玩而已。其他MIDI事件没分析,感觉对写视觉表达用处不是很大。

例子写的比较土,一个鼓机同步,一个12度环,一个综合。
综合例子可能会有不同步的问题,原因是没做精确延时计算......主要是犯懒......

http://pan.baidu.com/share/link?shareid=597833&uk=3442844069

pass:84ai

使用方法:
自己做完音乐或音频扒带的mid导出,用ParseMIDI.cpp输出noteon,noteoff和info信息
用CombiNotes.cpp把noteon和noteoff组合成note信息
其实这个可以一个文件搞定,或者不输出文本,直接在程序中分析完就用,不过当时实验时没想过这么多......
最后输出的note信息格式是:
channel,note,velocity,start,end
MIDI音轨号,音高,力度,起始时间,结束时间(毫秒)

MIDI格式说明文档

http://www.midifan.com/modulearticle-detailview-901.htm











快速回复
限100 字节
 
上一个 下一个