简体中文

MIDI 里的 MSB 和 LSB 是什么意思?

在 Mac App Store 下载 InputConfigInputConfig 在 Mac App Store 免费提供。支持 macOS 14 或更高版本,无需账户,不追踪,开源。

MSB 和 LSB 是一个数的两半,这个数一个 MIDI 数据字节装不下。一个数据字节能表示 0 到 127,两个放在一起就能表示 0 到 16,383。MSB 是最高有效字节,是粗调的那一半。LSB 是最低有效字节,是细调的那一半。完整的数值等于 MSB 乘以 128,再加上 LSB。

这种配对是 MIDI 标准的一部分,出现在四个地方:Bank Select、弯音轮、CC 的细调,以及叫作 RPN 和 NRPN 的参数编号。

算出数值

MSBLSB数值
000
0127127
10128
6408,192,正中间
12712716,383,最大值

MSB 的一步相当于 LSB 的 128 步。很多设备只发送和读取 MSB,所以大多数控件是按 128 步移动的。

在 Bank Select 里使用

一条 Program Change 只能找到 128 个音色。要找到更多,设备会把音色分到不同的音色库(bank)里,先用 Bank Select 选好音色库。

顺序消息通道 1 的字节(十六进制)
1CC 0,Bank Select MSBB0 00,然后是 MSB
2CC 32,Bank Select LSBB0 20,然后是 LSB
3Program ChangeC0,然后是音色编号

要等 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, 繁體中文

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