MIDI文件基础及使用Python库mido操作MIDI文件

栏目:旅游资讯  时间:2023-08-05
手机版

  基础知识 MIDI文件头:4d 54 68 64 00 00 00 06 ff ff nn nn dd dd

  4d 54 68 64:MThd

  00 00 00 06:数据区长度六字节

  ff ff:00 00-单音轨;00 01-多个同步音轨;00 10-多个不同步音轨

  nn nn:音轨数目(含全局音轨和演奏音轨)

  dd dd:最高位为标记位,0为采用ticks计时,后面的数据为一个4分音符的ticks;1为SMPTE格式计时,后面的数值则是定义每秒中SMTPE帧的数量及每个SMTPE帧的tick

  Mido

  一、使用指导:

  通过pip命令安装:

  推荐使用清华镜像源:

  使用前即可

  二、打开

  通过

  打开指定midi文件

  每个音轨单独读取指令为`

  (n从0开始)

  可直接获取音轨名称,每个消息可按照下标单个读取

  同时和也可用作新音轨和新文件新建命令

  三、遍历读取

  示例代码:

  每个midi文件由多个音轨组成,mido称音轨为Track,其中Track 0 一般是全局音轨,其后跟随演奏音轨。

  每个音轨包含若干条消息,消息可解释为相应音符,一般在全局音轨中放置元消息(mate massages)来指定mid文件的相关参数(速度/音轨数等)

  可以返回判定是否是元消息

  消息相关: 消息设定代码(示例)

  type 这个参数确定信号的类型(str)。基本的为note_on作为音符开始,note_off作为音符终止。

  note 这个参数确定音符的音高。60代表中央C,每增加12,音高升高一个八度。

  velocity 这个参数确定音符的音量。0表示静音,127表示最大音量。

  time 这个参数确定消息所在的时间。这个时间以tick为单位,而在mido的默认配置中,1拍中有480个tick。所以要想生成一个长度为1拍的音符,应该设置其time值为480,而不是1。

  注:time用480*n来表示会比较省力

  另注:time是指这条消息与上一条消息的时间差(结尾对结尾)

  四、参数设置

  A音色

  其中,program参数确定了这个音轨的音色。

  另注:除了打击乐通道以外,音色的默认值为Piano 1。

  B曲速

  其中,tempo参数确定了乐曲的速度。

  tempo 值的含义是每一拍为多少微秒。500000表示每一拍为0.5秒(1us=1e6s),即每分钟120拍。bpm和tempo的换算公式为

  C设置音轨名称

  音轨名称

  其中,name参数确定了音轨的名称。

  五、文件保存

上一篇:跟对大哥的好处,巴基斯坦最大军售,12架枭龙卖出11亿美元高价
下一篇:藜麦怎么食用最有效(意康德藜麦)