赞
踩
音乐数字接口(Musical Instrument Digital Interface,简称MIDI)是电脑CPU为8bit时期的产物,MIDI数据以字节为单位进行单项传输。(高端的MIDI芯片可能同时支持发送和接收)
MIDI数据以UART通信:波特率=31250,数据位=8b,开始位=1b,停止位=1b,无校验。
通常,MIDI数据包由两部分组成:①命令字节,②数据字节;但也有一些MIDI数据包不含数据字节。
表1 MIDI数据包的组成
进制 | 命令字节 | 数据字节 |
---|---|---|
十进制 | [128,255] | [0,127] |
二进制 | 0b1XXXXXXX | 0b0XXXXXXX |
十六进制 | [0x80,0xFF] | [0x00,0x7F] |
命令字节的最高位为1,数据字节的最高位为0,可见,用二进制或十六进制来查看更直观。
命令字节是MIDI消息序列的第一个字节,后面跟着一定数量的MIDI数据字节。数据字节用于传送诸如音高、音量、音色、力度等信息。
例如,以第100级力度演奏C4的MIDI数据包是:0x90→0x3C→0x64。0x80是命令字节,它表示“演奏”。后跟有2个数据字节:前者是“C4”的常数,后者是“以第100级力度”的常数。
注意:A4=440(Hz)
命令字节可按照高低位,拆分为表示命令的高4位、表示某条通道的低4位。如前文所述的“演奏”命令,高4位是0b1001,表示“演奏”,低4位是0b0000,表示“在通道1上”,所以0x90的完整意思是“在通道1上演奏”,进而,上述数据包的完整意思是“在通道1上,以第100级力度演奏C4”。
表2 命令字节的分解
进制 | 高4bits | 低4bits |
---|---|---|
二进制 | 1XXX | XXXX |
十六进制 | [0x8,0xF] | [0x0,0xF] |
要使用多条音轨发声时,往往要用到MIDI通道。即:将不同的声部交给不同的通道去处理和演奏。可以像理解电视频道一样去理解MIDI通道的概念。
表3 命令字节简表
命令类型 | 命令字节的内容 | 数据字节1的内容 | 数据字节2的内容 |
---|---|---|---|
关闭音符 | 80+CH | 音符音高 | 关闭力度 |
开启音符 | 90+CH | 音符音高 | 打开力度 |
触后压力 | A0+CH | 音符音高 | 触后压力值 |
控制器 | B0+CH | 控制器编号 | 控制的数值 |
音色切换 | C0+CH | 音色编号 | - |
通道压力 | D0+CH | 该通道全部键盘的触后压力 | - |
弯音轮 | E0+CH | 弯音轮低位数据 | 弯音轮高位数据 |
系统普通信息、实时信息、及高级信息代码 | F0+CH | 0或若干个数据字节 |
参见下列文章
MIDI数据字节:找到中央C(音名:C4)
MIDI数据字节:GM1旋律乐器音色库(带中文名称)
MIDI数据字节:GM1打击乐器音色库(带乐器中文名称)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。