简体中文
什么是 MIDI Program Change?
InputConfig 在 Mac App Store 免费提供。支持 macOS 14 或更高版本,无需账户,不追踪,开源。
Program Change 是告诉设备切换到另一个音色、音色预设或预设的 MIDI 消息。它只带一个 0 到 127 的数字,别的什么都没有。给 General MIDI 设备发送音色 0,得到的是钢琴。发送 40,得到的是小提琴。要找到超过 128 个的音色,先发送一条 Bank Select。
我做了 InputConfig,一款发送和接收 MIDI 的免费 Mac App,所以最后几节讲怎样用按钮发送 Program Change,以及怎样用它切换布局。
步骤
- 在设备的音色列表里找到你想要的音色的编号。
- 查看设备是从 0 还是从 1 开始数音色,如果从 1 开始,就减去 1。
- 如果音色在另一个音色库里,先发送 Bank Select:CC 0,然后是 CC 32。
- 在设备监听的通道上发送 Program Change。
读懂这条消息
| 部分 | 数值 | 含义 |
|---|---|---|
| 状态字节 | 0xC0 到 0xCF | Program Change,通道 1 到 16 |
| 数据字节 | 0 到 127 | 音色编号 |
总共就是两个字节。通道 1 上的音色 5 用十六进制写是 C0 05。Program Change 没有附带的数值:这个编号就是整条消息。
从 0 数还是从 1 数
这条消息带的是 0 到 127。很多键盘和音色列表显示的是 1 到 128。两者说的是同样的 128 个音色,所以钢琴在线路上是音色 0,在面板上是音色 1。如果出来的音色和你要的差了一个,说明两端是从不同的数字开始数的。General MIDI 乐器列表把两列并排显示。
用 Bank Select 找到超过 128 个的音色
Program Change 在当前音色库里选 128 个音色中的一个。Bank Select 选择音色库,它以两条 Control Change 消息的形式,在 Program Change 之前发送。
- CC 0。Bank Select 的粗调一半。很多设备只用这一个。
- CC 32。Bank Select 的细调一半。
- 然后是 Program Change。音色库在下一条 Program Change 到达时才生效。
单独的 Bank Select 不会让你听到任何变化,因为它在等后面的 Program Change。设备用哪些音色库编号,要看它自己的手册。
和 Control Change 区分开
| Program Change | Control Change | |
|---|---|---|
| 它做什么 | 切换到另一个音色或预设 | 移动一个控件:旋钮、推子、踏板 |
| 它带什么 | 一个数字,0 到 127 | 一个控制器编号和一个数值,各自 0 到 127 |
| 多久发一次 | 需要切换时发一次 | 控件移动时持续发送 |
Program Change 选音色,Control Change 塑造音色。MIDI CC 列表有所有的控制器编号。
用按钮发送一个
在 Mac 上,InputConfig 通过它自己的虚拟 MIDI 端口,用游戏手柄按钮、键盘按键、脚踏板或 MIDI 打击垫发送 Program Change。每按一次,就按编号调出一个音色,编号从 0 数起。一个按钮对应一个音色,换音色时手不用离开乐器。MIDI 输出有设置方法。
用它切换布局
反过来也行。从 MIDI 控制器传进来的 Program Change 可以作为 InputConfig 一行的输入,每次音色变化时触发一次,而这一行可以启用一个预设。这样控制器上的一个音色按钮,就能切换它的打击垫所发送的整套快捷键。控制器的音色按钮变成了布局开关。Mac 上的 MIDI 转按键讲了这个做法。
简短总结
- 是什么。这是一条切换音色的两字节消息:状态 0xC0 加通道,再加一个 0 到 127 的数。
- 超过 128 个。先发送 Bank Select,也就是 CC 0 和 CC 32,再发 Program Change。
- 差一个。线路上从 0 数起,很多屏幕上从 1 数起。
一个数,一个通道,声音就换了。
常见问题
MIDI Program Change 消息是什么?
一条两字节的消息,告诉设备切换到另一个音色或预设。第一个字节是 0xC0 加通道,第二个是音色编号,0 到 127。
Program Change 和 Control Change 有什么区别?
Program Change 切换到另一个音色,只带一个数字。Control Change 移动单个控件,比如音量或滤波器,带一个控制器编号和一个数值。
怎样选择编号超过 128 的音色?
先发送 Bank Select,也就是 CC 0,通常还有 CC 32,再发送 Program Change。设备用的音色库编号列在它的手册里。
为什么我的 Program Change 选错了音色?
通常是差了一个。这条消息从 0 数音色,而很多设备从 1 显示,所以要把屏幕上的编号减去 1。如果差得很远,就是设备在另一个音色库里。
MIDI 有多少个音色?
每个音色库 128 个,在消息里编号为 0 到 127。Bank Select 再乘以设备拥有的音色库数量。
更多中文页面
详细指南(英文)
作者说明。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 上.