当前位置:   article > 正文

MIDI通信协议(翻译)_midi协议

midi协议


原文:https://blog.csdn.net/weixin_43572492/article/details/84966690
【修订记录】
1、20210810,翻译文本本地化
2、20230430,文本优化

概述

音乐数字接口(Musical Instrument Digital Interface,简称MIDI)是电脑CPU为8bit时期的产物,MIDI数据以字节为单位进行单项传输。(高端的MIDI芯片可能同时支持发送和接收)
MIDI数据以UART通信:波特率=31250,数据位=8b,开始位=1b,停止位=1b,无校验。
通常,MIDI数据包由两部分组成:①命令字节,②数据字节;但也有一些MIDI数据包不含数据字节。

表1 MIDI数据包的组成

进制命令字节数据字节
十进制[128,255][0,127]
二进制0b1XXXXXXX0b0XXXXXXX
十六进制[0x80,0xFF][0x00,0x7F]

命令字节的最高位为1,数据字节的最高位为0,可见,用二进制或十六进制来查看更直观。
命令字节是MIDI消息序列的第一个字节,后面跟着一定数量的MIDI数据字节。数据字节用于传送诸如音高、音量、音色、力度等信息。
例如,以第100级力度演奏C4的MIDI数据包是:0x90→0x3C→0x64。0x80是命令字节,它表示“演奏”。后跟有2个数据字节:前者是“C4”的常数,后者是“以第100级力度”的常数。
注意:A4=440(Hz)

MIDI命令字节

命令字节可按照高低位,拆分为表示命令的高4位表示某条通道的低4位。如前文所述的“演奏”命令,高4位是0b1001,表示“演奏”,低4位是0b0000,表示“在通道1上”,所以0x90的完整意思是“在通道1上演奏”,进而,上述数据包的完整意思是“在通道1上,以第100级力度演奏C4”。
  
表2 命令字节的分解

进制高4bits低4bits
二进制1XXXXXXX
十六进制[0x8,0xF][0x0,0xF]

MIDI通道

要使用多条音轨发声时,往往要用到MIDI通道。即:将不同的声部交给不同的通道去处理和演奏。可以像理解电视频道一样去理解MIDI通道的概念。
表3 命令字节简表

命令类型命令字节的内容数据字节1的内容数据字节2的内容
关闭音符80+CH音符音高关闭力度
开启音符90+CH音符音高打开力度
触后压力A0+CH音符音高触后压力值
控制器B0+CH控制器编号控制的数值
音色切换C0+CH音色编号-
通道压力D0+CH该通道全部键盘的触后压力-
弯音轮E0+CH弯音轮低位数据弯音轮高位数据
系统普通信息、实时信息、及高级信息代码F0+CH0或若干个数据字节

MIDI数据字节

参见下列文章
MIDI数据字节:找到中央C(音名:C4)
MIDI数据字节:GM1旋律乐器音色库(带中文名称)
MIDI数据字节:GM1打击乐器音色库(带乐器中文名称)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/248512
推荐阅读
  

闽ICP备14008679号