MIDI信息的说明

时间:2015-04-06 23:02:18

标签: messaging midi

MIDI信息在比特/字节方面的解剖结构是什么?

1 个答案:

答案 0 :(得分:4)

YES!我在这里为自己做了一个。它可能对其他人有用!
https://drive.google.com/file/d/0B3RK-KfkucDQT0J0aGFOb3pWeU0/view

完整的MIDI信息

每个midi消息长3个字节:1个状态字节后跟2个数据字节。 每个字节的第一位用于标识它是状态字节还是数据字节。 所有状态字节均以1开头,所有数据字节均以0

开头
1??? ????    0??? ????    0??? ????

因此,在十六进制中,状态字节为80及以上,数据字节为7F及以下。

以下状态

对于状态80 ... EF,状态消息中的第二个十六进制数字是通道编号。 16个MIDI通道映射到0到F.

示例:80 ... 8F是16个MIDI通道中每个通道的所有音符关闭命令。

第一个十六进制数字指定它的消息类型。状态以8到E开头 (7个可能的值)是特定于通道的消息。第一个十六进制是消息的类型和 第二个十六进制是通道。 F0 ... FF映射到各种全局和sysex消息。

状态80 ... EF

8_  note off
9_  note on
A_  poly aftertouch
B_  control/mode change
C_  program change
D_  channel aftertouch
E_  pitch bend

状态F0 ... FF

FO  System Exclusive            F8  Timing clock
F1  MIDI Time Code Qtr. Fram    F9  Undefined (Reserved)
F2  Song Position Pointer       FA  Start
F3  Song Select (Song #)        FB  Continue
F4  Undefined   (Reserved)      FC  Stop
F5  Undefined   (Reserved)      FD  Undefined (Reserved)
F6  Tune request                FE  Active Sensing
F7  end of SysEx (EOX)          FF  System Reset

仔细查看数据字节

由于数据字节浪费了第一位,使其为0,因此我们有128个可能的值 这是7位:

00 … 7F     which is 0 … 127 in decimal

仔细查看状态80 ... AF - 复音信息

前三种类型的消息是复音的。第二个字节(第一个数据字节)指定音符。 由于第一位被浪费,我们有7位,它给我们128个值和128个不同的音符。

____Status Byte_____|_Data Byte 1__ |_Data Byte 2__
8_  note off        | note (0-127)  |Velocity (0-127)
9_  note on         | note (0-127)  |Velocity (0-127)
A_  poly aftertouch | note (0-127)  |Pressure (0-127)

仔细查看状态B0 ... BF - 控制变更(CC)消息

____Status Byte_____|_Data Byte 1__ |_Data Byte 2__
B_  CC message      | CC# (0-127)   | CC Value (0-127)

最常定义(因此最常用)控制变更(CC编号)

0   Bank Select (MSB)   (followed by cc32 & Program Change)
1   Modulation Wheel
4   Foot Pedal  (MSB)
6   Data Entry  (MSB    if you follow cc100=0 & cc101=0 this is pitch bend range
7   Volume      (MSB)   Note: CC7 and 11 both adjust the volume. 
                        Use cc7 as you would the control on the amplifier -
                        set it and leave it at the beginning of the MIDI track
10  Pan position(MSB)
11  Expression  (MSB)   Note: CC7 and 11 both adjust the volume. Use cc11 for volume 
                        changes during the track (crescendo, diminuendo, 
32  Bank Select (LSB)   (see cc0)
64  Hold Pedal (on/off) Nearly every synth will react to 64 (sustain pedal)
65  Portamento (on/off)
71  Resonance           (aka Timbre)
74  Frequency Cutoff    (aka Brightness )
91  Reverb Level
93  Chorus Level

It's probably best not to use the group below for assigning controllers. 
96 Data Button increment            97 Data Button decrement
98 Non-registered Parameter (LSB)   99 Non-registered Parameter (MSB)
100 Registered Parameter (LSB)      101 Registered Parameter (MSB)

Do not use these no matter what unless you want to invoke these functions
120 All Sound Off               121 All Controllers Off
122 Local Keyboard (on/off) You might actually crash your keyboard.
123 All Notes Off

仔细查看状态C0 ... DF - 程序变更和单音后退

这些消息都不使用最后一个字节,即第二个数据字节。因此他们只是 将自己标识为程序更改消息(C_)或触后(D_),后跟_中的通道编号。

   
____Status Byte_____|_Data Byte 1__ |_Data Byte 2__
C_  Program Change  |Program(0-127) |   none
D_  Aftertouch      |Pressure(0-127)|   none

仔细查看状态E0 ... EF - 弯音弯曲(14位!)

弯音是不寻常的,因为它使用两个数据字节来获得更精细的分辨率。第一位是 当然仍然浪费但我们留下14位工作,这可能是16,384 如果一个弯音轮跨越两个八度音程,一个向上,一个向下, 每半步我们将有682个可能的值,即每分7个。还不错!

____Status Byte_____|_Data Byte 1__ |_Data Byte 2__
E_  Pitch Bend      |  LSB (0-127)  | MSB (0-127)

状态概述80 ... EF - 渠道数据

以下是通道1中的中间C的完整消息,速度为60:

90 3C 3C

以下是该注释的注释消息:

80 3C 3C