简体中文
MIDI 消息速查表:所有类型、状态字节和范围
这款应用完全免费。无需创建账户。没有订阅,没有麻烦的下载,也没有任何锁定的功能。针对 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,所以有一张表说明其中哪些消息它能处理。
步骤
- 用十六进制读消息的第一个字节。
- 如果是 80 到 EF,第一位数字说明是哪种消息,第二位数字是通道,0 表示 1 通道,一直到 F 表示 16 通道。
- 如果是 F0 到 FF,它就是没有通道的系统消息,请到系统消息表里查找。
- 对照通道消息表,读后面的数据字节,每个都是 0 到 127。
- 如果是 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 Off | 80 到 8F | 音符编号,0 到 127 | 释放力度,0 到 127 | 音符编号 |
| Note On | 90 到 9F | 音符编号,0 到 127 | 力度,0 到 127(0 起 Note Off 的作用) | 力度 |
| 复音按键压力 | A0 到 AF | 音符编号,0 到 127 | 压力,0 到 127 | 触后 |
| Control Change | B0 到 BF | 控制器,0 到 119 | 值,0 到 127 | CC 列表 |
| Program Change | C0 到 CF | 音色程序,0 到 127 | 无 | Program Change |
| 通道压力 | D0 到 DF | 压力,0 到 127 | 无 | 触后 |
| Pitch Bend | E0 到 EF | 细调一半(LSB),0 到 127 | 粗调一半(MSB),0 到 127 | Pitch 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。它们改变的是通道的行为,而不是声音的样子。
| 控制器 | 名称 | 作用 |
|---|---|---|
| 120 | All Sound Off | 一次让所有声部静音 |
| 121 | Reset All Controllers | 把各控制器恢复到默认状态 |
| 122 | Local Control | 0 是关,127 是开:琴键是否演奏合成器自己的声音 |
| 123 | All Notes Off | 松开所有按住的音符 |
| 124 和 125 | Omni Mode Off 和 On | 设备是只听一个通道,还是听所有通道 |
| 126 和 127 | Mono Mode On 和 Poly Mode On | 每个通道一个音符,或者和弦 |
MIDI Association 的列表注明,124 到 127 也会关掉所有音符。急停按钮基本上就是在全部 16 个通道上发送 CC 123 和 CC 120。MIDI panic 列出了确切的字节。
读懂系统消息
系统消息以 F 开头,不带通道,所以线上的每台设备都可能读取它们。F0 到 F7 是系统通用消息,F8 到 FF 是实时消息,它们是唯一允许出现在 SysEx 消息中间的消息。
| 状态(十六进制) | 消息 | 数据 | 更多 |
|---|---|---|---|
| F0 | System Exclusive | 厂商 ID,然后是任意数量的数据字节,直到 F7 | SysEx |
| F1 | MIDI Time Code quarter frame | 一个字节:时间码的一小段 | |
| F2 | Song Position Pointer | 两个字节:从开头起算的拍数,14 位的计数,一拍是 6 个时钟 | |
| F3 | Song Select | 一个字节:哪首歌或哪个序列 | |
| F6 | Tune Request | 无。请模拟合成器调准它们的振荡器 | |
| F7 | End of Exclusive | 无。结束一条 SysEx 消息 | |
| F8 | Timing Clock | 无。每个四分音符发送 24 次 | MIDI 时钟 |
| FA、FB、FC | Start、Continue、Stop | 无 | MIDI 时钟 |
| FE | Active Sensing | 无。可选,设备一旦开始发送,就至少每 300 毫秒一次 | |
| FF | Reset | 无。让接收方回到开机时的状态 |
F4、F5、F9 和 FD 没有定义。时钟、Start 和 Stop 是系统消息,所以它们从不带通道。关于 SysEx 转储和发送它们的 App,请看 Mac 上的 SysEx 资料库页面。
查值得了解的 CC 编号
120 个 Control Change 编号里,许多没有定义,但也有几个在 MIDI 标准里有名字,合成器和 App 都遵循。下面这些来自 MIDI Association 的 Control Change 列表。
| CC | 名称 | 更多 |
|---|---|---|
| 0 和 32 | Bank Select,MSB 和 LSB | MSB 和 LSB |
| 1 | 调制轮 | CC 列表 |
| 2 | 呼吸控制器 | |
| 4 | 脚踏控制器 | |
| 6 和 38 | Data Entry,MSB 和 LSB | NRPN 和 RPN |
| 7 | 通道音量 | |
| 10 | 声像 | |
| 11 | 表情 | |
| 64 | 延音(制音)踏板:0 到 63 为关,64 到 127 为开 | 延音踏板 |
| 65、66、67 | 滑音、消音延音和弱音踏板,开或关 | |
| 98 和 99 | NRPN 编号,LSB 和 MSB | NRPN 和 RPN |
| 100 和 101 | RPN 编号,LSB 和 MSB | NRPN 和 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 模式的旋钮,在值超过一半时触发一次,这就把延音踏板变成了开关。


如果一个控件发送的是音符、CC、Pitch Bend 或 Program Change,InputConfig 就能绑定它。MIDI 转按键和 MIDI 输出讲了设置方法。
如果消息不是你预期的样子
大多数意外来自编号,而不是设备坏了。按这个阶梯往上走,从最小的一步开始:
- 核对通道的数法。字节里是 0 到 15,App 里是 1 到 16。10 通道上的设备,发送 Note On 时是 99。
- 核对音色程序的数法。消息里是 0 到 127,而许多音色列表显示的是 1 到 128,所以 1 号音色发送出去的是 0。
- 检查有没有隐藏的 Note Off。力度为 0 的 Note On 会结束音符,所以满屏 Note On 的日志,仍然可能是在松开琴键。
- 解码原始字节。把它们粘贴到 MIDI 消息解码器里,或者在 MIDI 测试器里看着它们到达。
差一位,是最常见的 MIDI 错误。
深入了解某一种消息
- 音符。力度、音符编号和 General MIDI 鼓映射。
- 压力。通道触后和复音触后。
- 控制器。延音踏板、MSB 和 LSB、NRPN 和 RPN以及 MIDI learn。
- 音色。Program Change。
- 音高。Pitch Bend。
- 时序和安全。MIDI 时钟、MIDI panic 和 MIDI Thru。
- 数据。SysEx。
这里的每个页面都取表格里的一行,并用例子来解释它。如果这些你都是第一次接触,请从 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, Русский, ไทย, 繁體中文
免费。macOS 14 或更高版本。无需账户,数据不会离开你的 Mac。 源代码在 GitHub 上.