简体中文
MIDI 里的 MSB 和 LSB 是什么意思?
InputConfig 在 Mac App Store 免费提供。支持 macOS 14 或更高版本,无需账户,不追踪,开源。
MSB 和 LSB 是一个数的两半,这个数一个 MIDI 数据字节装不下。一个数据字节能表示 0 到 127,两个放在一起就能表示 0 到 16,383。MSB 是最高有效字节,是粗调的那一半。LSB 是最低有效字节,是细调的那一半。完整的数值等于 MSB 乘以 128,再加上 LSB。
这种配对是 MIDI 标准的一部分,出现在四个地方:Bank Select、弯音轮、CC 的细调,以及叫作 RPN 和 NRPN 的参数编号。
算出数值
| MSB | LSB | 数值 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 127 | 127 |
| 1 | 0 | 128 |
| 64 | 0 | 8,192,正中间 |
| 127 | 127 | 16,383,最大值 |
MSB 的一步相当于 LSB 的 128 步。很多设备只发送和读取 MSB,所以大多数控件是按 128 步移动的。
在 Bank Select 里使用
一条 Program Change 只能找到 128 个音色。要找到更多,设备会把音色分到不同的音色库(bank)里,先用 Bank Select 选好音色库。
| 顺序 | 消息 | 通道 1 的字节(十六进制) |
|---|---|---|
| 1 | CC 0,Bank Select MSB | B0 00,然后是 MSB |
| 2 | CC 32,Bank Select LSB | B0 20,然后是 LSB |
| 3 | Program Change | C0,然后是音色编号 |
要等 Program Change 到达,音色库才会真正切换。手册里把音色库写成一个数时,指的是 MSB 乘以 128,再加上 LSB。先发音色库,最后发音色编号。MIDI Program Change 讲了其余的部分。
在弯音轮里找到它们
弯音轮总是在一条消息里带着两半,细调的一半在前:E0,然后是 LSB,再是 MSB。正中间,也就是没有弯音,是 LSB 0 和 MSB 64,等于 8,192。弯音轮是少见的每次都用满全部 16,384 步的常用消息。MIDI 弯音轮解释了它的范围。
把 CC 和它的细调一半配对
0 到 31 号控制器,每一个都有一个编号大 32 的搭档,负责细调的一半。CC 1,也就是调制轮,配 CC 33。CC 7,也就是音量,配 CC 39。想要更细控制的设备会同时发送两个,不需要的设备只读第一个。CC 32 到 63 是 CC 0 到 31 的细调一半。MIDI CC 列表列出了每一对。
在 RPN 和 NRPN 里看到它们
一个参数编号需要两半来选定参数,再需要两半来设定数值:CC 101 和 100,或者 CC 99 和 98 负责选择,CC 6 和 CC 38 带着数值的 MSB 和 LSB。一个 NRPN 就是先后发送的两对 MSB 和 LSB。MIDI NRPN 和 RPN带你走一遍例子。
检查你的字节
本站的 MIDI 消息解码器能用一个数值构造出弯音轮,并以十六进制、十进制和二进制显示两半,也能把粘贴进去的 Bank Select 和 Program Change 字节还原成文字。设备选到了错误的音色库时,先查它的手册要求 CC 0 放哪一半,CC 32 放哪一半。我做了 InputConfig,一款可以用游戏手柄发送 Control Change 和 Program Change 的免费 Mac App,它的 MIDI 输出页面列出了它会发送什么。
简短总结
- MSB。这是粗调的一半,每一步相当于 128。
- LSB。这是细调的一半,每一步相当于 1。
- 数值。MSB 乘以 128 再加上 LSB,得到 0 到 16,383 的一个数。
两个 7 位的字节组成一个 14 位的数。
常见问题
MIDI 里的 MSB 和 LSB 是什么的缩写?
分别是最高有效字节(most significant byte)和最低有效字节(least significant byte):一个 14 位数值被拆在两个 7 位数据字节里,粗调和细调各占一半。
怎样用 MSB 和 LSB 计算 MIDI 数值?
把 MSB 乘以 128,再加上 LSB。MSB 为 1、LSB 为 0 时是 128。MSB 为 127、LSB 为 127 时是 16,383。
Bank Select MSB 和 LSB 是什么?
CC 0 是 Bank Select MSB,CC 32 是 Bank Select LSB。两个都发送,再发一条 Program Change,就能选到前 128 个之外的某个音色库里的音色。
一定要发送 LSB 吗?
通常不用。很多设备只用 MSB。至于 Bank Select,要查手册:有的设备两个都要,有的只要一个,而且要哪一个也不一样。
MSB 和 LSB 哪个先发?
对于 Bank Select 和参数编号,通常先把 MSB 作为单独的一条消息发送。在弯音轮消息内部,LSB 在前。
为什么 MIDI 字节只有 7 位?
最高位用来标记状态字节,也就是一条消息的开头。数据字节让这一位保持为空,剩下 7 位,范围就是 0 到 127。
更多中文页面
详细指南(英文)
作者说明。Ryleigh Newman 开发了 InputConfig,因为双手活动不便,每天都用手柄操作自己的 Mac。本页译自英文。Mac 的语言设为简体中文时,App 的主要按钮和菜单显示为中文,本页使用这些名称,并在括号中附上英文名称。App 的其他部分和网站的其他页面都是英文。
本页的其他语言版本: English, العربية, Čeština, Dansk, Deutsch, Español, Suomi, Français, עברית, Magyar, Bahasa Indonesia, Italiano, 日本語, 한국어, Norsk, Nederlands, Polski, Português, Русский, Slovenčina, Svenska, ไทย, Türkçe, Українська, Tiếng Việt, 繁體中文
免费。macOS 14 或更高版本。无需账户,数据不会离开你的 Mac。 源代码在 GitHub 上.