简体中文

MIDI 消息速查表:所有类型、状态字节和范围

在 Mac App Store 下载 InputConfig这款应用完全免费。无需创建账户。没有订阅,没有麻烦的下载,也没有任何锁定的功能。针对 Apple 芯片优化。

一条 MIDI 1.0 消息,是一个说明这是什么消息的状态字节,后面跟着零个、一个或两个数据字节。通道消息有七种,从十六进制 80 的 Note Off 到 E0 的 Pitch Bend,每一种都在最后一位数字里带着它的通道,另外还有一组从 F0 到 FF 的系统消息,完全没有通道。下面的表格涵盖了其中每一种,列出每个数据字节的取值范围,每一行都链接到本站里深入讲解那条消息的页面。

这些数值来自 MIDI Association 自己的 MIDI 1.0 消息摘要和它的 Control Change 列表,我在 2026 年 10 月 27 日读过。我做了 InputConfig,这是一款能读取和发送 MIDI 的免费 Mac App,所以有一张表说明其中哪些消息它能处理。

步骤

  1. 用十六进制读消息的第一个字节。
  2. 如果是 80 到 EF,第一位数字说明是哪种消息,第二位数字是通道,0 表示 1 通道,一直到 F 表示 16 通道。
  3. 如果是 F0 到 FF,它就是没有通道的系统消息,请到系统消息表里查找。
  4. 对照通道消息表,读后面的数据字节,每个都是 0 到 127。
  5. 如果是 Control Change,就在 CC 表里查控制器编号。

区分状态字节和数据字节

MIDI 1.0 里的每个字节,不是状态字节就是数据字节,由最高位决定是哪种。在 MIDI Association 的表里,每个状态字节写成二进制时都以 1 开头,每个数据字节都以 0 开头。

  • 状态字节。十六进制 80 到 FF,即 128 到 255。它们开启一条消息。
  • 数据字节。十六进制 00 到 7F,即 0 到 127。这就是为什么 MIDI 里几乎每个数值都停在 127。
  • 通道。在通道消息里,第二位十六进制数字就是通道,0 到 F,App 里显示为 1 到 16 通道。所以 90 是 1 通道的 Note On,9F 是 16 通道的 Note On。
  • 14 位的值。当 128 级不够用时,两个数据字节合在一起:细调的一半是 LSB,粗调的一半是 MSB。合起来是 0 到 16383,Pitch Bend 把它的中心放在 8192,也就是十六进制 2000。

128 或更大的字节开启一条消息,小于 128 的字节带着一个值。MIDI 通道和 MSB 和 LSB对这两点讲得更深。

读懂通道消息

这七种承载着音乐:音符、压力、旋钮、音色切换和弯音轮。状态一列是十六进制,低位数字由通道决定。

消息状态(十六进制)数据字节 1数据字节 2更多
Note Off80 到 8F音符编号,0 到 127释放力度,0 到 127音符编号
Note On90 到 9F音符编号,0 到 127力度,0 到 127(0 起 Note Off 的作用)力度
复音按键压力A0 到 AF音符编号,0 到 127压力,0 到 127触后
Control ChangeB0 到 BF控制器,0 到 119值,0 到 127CC 列表
Program ChangeC0 到 CF音色程序,0 到 127无Program Change
通道压力D0 到 DF压力,0 到 127无触后
Pitch BendE0 到 EF细调一半(LSB),0 到 127粗调一半(MSB),0 到 127Pitch Bend

力度为 0 的 Note On 算作 Note Off,MIDI Association 自己的 Arduino 指南就用它来结束一个音符。Control Change 的控制器编号停在 119,因为 120 到 127 被下面的通道模式消息占用了。Pitch Bend 以半音计的范围根本不在消息里:由接收方决定,MIDI 表里提到它可以用 RPN 0 来设置。Program Change 和通道压力带一个数据字节,其他五种带两个。

了解通道模式消息

通道模式消息使用 Control Change 的状态字节 B0 到 BF,控制器编号是 120 到 127。它们改变的是通道的行为,而不是声音的样子。

控制器名称作用
120All Sound Off一次让所有声部静音
121Reset All Controllers把各控制器恢复到默认状态
122Local Control0 是关,127 是开:琴键是否演奏合成器自己的声音
123All Notes Off松开所有按住的音符
124 和 125Omni Mode Off 和 On设备是只听一个通道,还是听所有通道
126 和 127Mono Mode On 和 Poly Mode On每个通道一个音符,或者和弦

MIDI Association 的列表注明,124 到 127 也会关掉所有音符。急停按钮基本上就是在全部 16 个通道上发送 CC 123 和 CC 120。MIDI panic 列出了确切的字节。

读懂系统消息

系统消息以 F 开头,不带通道,所以线上的每台设备都可能读取它们。F0 到 F7 是系统通用消息,F8 到 FF 是实时消息,它们是唯一允许出现在 SysEx 消息中间的消息。

状态(十六进制)消息数据更多
F0System Exclusive厂商 ID,然后是任意数量的数据字节,直到 F7SysEx
F1MIDI Time Code quarter frame一个字节:时间码的一小段
F2Song Position Pointer两个字节:从开头起算的拍数,14 位的计数,一拍是 6 个时钟
F3Song Select一个字节:哪首歌或哪个序列
F6Tune Request无。请模拟合成器调准它们的振荡器
F7End of Exclusive无。结束一条 SysEx 消息
F8Timing Clock无。每个四分音符发送 24 次MIDI 时钟
FA、FB、FCStart、Continue、Stop无MIDI 时钟
FEActive Sensing无。可选,设备一旦开始发送,就至少每 300 毫秒一次
FFReset无。让接收方回到开机时的状态

F4、F5、F9 和 FD 没有定义。时钟、Start 和 Stop 是系统消息,所以它们从不带通道。关于 SysEx 转储和发送它们的 App,请看 Mac 上的 SysEx 资料库页面。

查值得了解的 CC 编号

120 个 Control Change 编号里,许多没有定义,但也有几个在 MIDI 标准里有名字,合成器和 App 都遵循。下面这些来自 MIDI Association 的 Control Change 列表。

CC名称更多
0 和 32Bank Select,MSB 和 LSBMSB 和 LSB
1调制轮CC 列表
2呼吸控制器
4脚踏控制器
6 和 38Data Entry,MSB 和 LSBNRPN 和 RPN
7通道音量
10声像
11表情
64延音(制音)踏板:0 到 63 为关,64 到 127 为开延音踏板
65、66、67滑音、消音延音和弱音踏板,开或关
98 和 99NRPN 编号,LSB 和 MSBNRPN 和 RPN
100 和 101RPN 编号,LSB 和 MSBNRPN 和 RPN

控制器 32 到 63 是控制器 0 到 31 的细调一半,也就是 LSB,Bank Select 就是这样变成 CC 0 加 CC 32 的。CC 64 是个开关,所以从 64 起的任何值都表示踏板踩下了。MIDI CC 列表列出了每一个编号。

看看 InputConfig 能读取和发送什么

InputConfig 能把键盘、打击垫控制器或 DAW 发来的 MIDI 变成按键、点按、Mac 的音量等等,也能通过一个名为 InputConfig 的虚拟端口,从游戏手柄或键盘发送 MIDI。下面是逐条消息的如实清单。

消息绑定为输入作为输出发送
Note On 和 Off可以,当作按住的按钮可以,按这一行里设置的力度
Control Change可以,当作开关、旋钮或转动可以,发固定值,或摇杆、扳机的位置
Pitch Bend可以,像摇杆那样分正负可以,来自摇杆的轴或按钮
触后可以不可以
Program Change可以,还能启用预设可以
Start、Continue、Stop可以可以
Timing Clock不可以不可以
System Exclusive不可以不可以
NRPN 和 RPN不可以不可以,它发送的是单条消息

有两个细节容易绊住人。按钮没有力度感应,所以每个 MIDI Note 输出都按这一行里设置的力度演奏,范围是 1 到 127,想要力度变化,办法是用扳机发 CC 11。还有,处于 Switch 模式的旋钮,在值超过一半时触发一次,这就把延音踏板变成了开关。

InputConfig 的 Live Visualizer 的 MIDI 视图,载入 MIDI: Knob Deck 预设,显示一个键盘、旋钮和最近的消息。
Figure 1. Live Visualizer 用 CC 编号给每个旋钮命名,所以这里的 CC 7、10、64、71 和 1,可以直接对着上面的表读出来。
InputConfig 的编辑器里,几行 D-pad 各自发送一条 Program Change,其中一行前面有 Bank Select。
Figure 2. CC 0 和 Program Change 一起工作。按一下 D-pad 上,就先发送 Bank Select,再发送 Program Change。

如果一个控件发送的是音符、CC、Pitch Bend 或 Program Change,InputConfig 就能绑定它。MIDI 转按键和 MIDI 输出讲了设置方法。

如果消息不是你预期的样子

大多数意外来自编号,而不是设备坏了。按这个阶梯往上走,从最小的一步开始:

  1. 核对通道的数法。字节里是 0 到 15,App 里是 1 到 16。10 通道上的设备,发送 Note On 时是 99。
  2. 核对音色程序的数法。消息里是 0 到 127,而许多音色列表显示的是 1 到 128,所以 1 号音色发送出去的是 0。
  3. 检查有没有隐藏的 Note Off。力度为 0 的 Note On 会结束音符,所以满屏 Note On 的日志,仍然可能是在松开琴键。
  4. 解码原始字节。把它们粘贴到 MIDI 消息解码器里,或者在 MIDI 测试器里看着它们到达。

差一位,是最常见的 MIDI 错误。

深入了解某一种消息

这里的每个页面都取表格里的一行,并用例子来解释它。如果这些你都是第一次接触,请从 MIDI 是什么开始。

简短版

  • 先看状态。十六进制 80 或更大的字节开启一条消息,后面的字节是 0 到 127 的值。
  • 通道消息。80 到 EF,通道在最后一位数字里。
  • 系统消息。F0 到 FF,没有通道:SysEx、时钟、Start、Stop 等等。
  • 大数字。两个数据字节组成 0 到 16383,就像 Pitch Bend。

读出状态字节的第一位数字,你就知道这是哪一类消息。

常见问题

MIDI 消息有多少种类型?

MIDI 1.0 有七种通道消息(Note Off、Note On、复音压力、Control Change、Program Change、通道压力和 Pitch Bend),CC 120 到 127 上的通道模式消息,以及从 F0 到 FF 的系统消息。

MIDI 状态字节是什么?

消息的第一个字节,范围是十六进制 80 到 FF。它说明这是什么消息,对通道消息来说,还说明它在 16 个通道里的哪一个。

CC 和 NRPN 有什么区别?

CC 是一条带控制器编号和 0 到 127 的值的消息。NRPN 用 CC 99 和 98 选出一个参数,再用 CC 6 和 38 上的 Data Entry 来设置它,所以一次改动要三四条消息。

InputConfig 支持哪些 MIDI 消息?

它能绑定音符、Control Change、Pitch Bend、触后、Program Change 以及 Start、Continue 和 Stop,并能发送音符、Control Change、Pitch Bend、Program Change 和走带消息。它不处理时钟、SysEx 或 NRPN。

MIDI 时钟是通道消息吗?

不是。Timing Clock,即 F8,是没有通道的系统实时消息,每个四分音符发送 24 次。

更多中文页面

详细指南(英文)

作者说明。Ryleigh Newman 开发了 InputConfig,因为双手活动不便,每天都用手柄操作自己的 Mac。本页译自英文。Mac 的语言设为简体中文时,App 的主要按钮和菜单显示为中文,本页使用这些名称,并在括号中附上英文名称。App 的其他部分和网站的其他页面都是英文。

本页的其他语言版本: English, Deutsch, Español, Français, Italiano, 日本語, 한국어, Polski, Português, Русский, ไทย, 繁體中文

在 Mac App Store 下载 InputConfig免费。macOS 14 或更高版本。无需账户,数据不会离开你的 Mac。 源代码在 GitHub 上.