MIDI演出控制协议

原文:https://blog.csdn.net/weixin_43572492/article/details/84966690
  音乐数字接口(Musical Instrument Digital Interface,简称MIDI)是电脑CPU 8位处理时期的产物,一系列的演奏信息通过8bits的数值来区别及(单向)传输。一个字节(=8 bits)是0到255之间的一个数字(十进制)。通常,MIDI信息序列由两部分组成:命令字节和数据字节。某些MIDI信息不含数据字节。
  表1 MIDI字节的组成
      命令字节数值范围    数据字节数值范围
十进制D   128~255         0~127
二进制B  1000 0000~1111 1111   0000 0000~0111 1111
十六进制H   0x80~0xFF         0x00~0x7F

用二进制或十六进制形式查看MIDI字节才是有用的。但是,上表还是列出了十进制范围内的范围表示。使用二进制能够快速分辨命令字节和数据字节——它们的最高位一定不同——命令字节的bit7≡1,而数据字节的bit7≡0。
  命令字节是MIDI 消息序列的第一个字节,接着是固定数量的MIDI数据字节。数据字节用于传送诸如音符数、敲击速度、钢琴踏板位置、音量、音高和乐器号等信息。
  例如,要打开中央C调的MIDI消息序列是:
0x80 0x3C 0x64(128D 60D 100D)
  显然,Byte1=0x80是一个命令字节(它的值为128D),表示打开一个音符。这种命令字节需要紧跟两个数据字节:前者表示要打开哪个音符;后者表示这个音符的速度(如果是打击乐,可以描述为该音符的击打力度)。Byte2=0x3C,表示音高C(C4)。Byte3=0x64,表示击打力度=100。

MIDI 命令字节

命令字节可以进一步拆分为命令(高4bits)和通道号(低4bits)。这意味命令有8种,通道有16种。比如上面给出的音符开命令Byte1=0x80。把这个字节拆分,即得H4b=1000B和L4b=0000B。H4b是音符开命令,L4b表示播放该音符时的MIDI通道。L4b为0000B,表示第一个MIDI信道。
  通常,用十六进制查看MIDI命令字节最为方便。还以Byte1=0x80为例。
  表2 命令字节的分解
    高4bits 低4bits
二进制B  1000   0000
十六进制H  0x8   0x0

  要使音源按你的意图发出不同声部的声音(或同时发出),就必须使用MIDI的通道功能。即:将不同的声部交给不同的通道去处理和演奏。可以像理解电视频道一样去理解MIDI通道的概念。
  表3 命令字节简表
命令代码 说明              数据字节1        数据字节2
8+通道4b 关闭音符            对应的音符0-127    关闭速度
9+通道4b 开启音符            对应的音符0-127    打开速度
A+通道4b 触后压力            对应的音符0-127    触后压力值
B+通道4b 控制器              控制器的编号      控制的数值
C+通道4b 音色切换            音色号0-127      ——
D+通道4b 通道压力            该通道全部键盘的触后压力| ——
E+通道4b 弯音轮              弯音轮低位数据    |弯音轮高位数据
F+通道4b 系统普通信息、实时信息、及高级信息代码  0或无穷多数据字节

猜你喜欢

转载自blog.csdn.net/weixin_43572492/article/details/84966191