简体中文

什么是 MIDI Program Change?

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

Program Change 是告诉设备切换到另一个音色、音色预设或预设的 MIDI 消息。它只带一个 0 到 127 的数字,别的什么都没有。给 General MIDI 设备发送音色 0,得到的是钢琴。发送 40,得到的是小提琴。要找到超过 128 个的音色,先发送一条 Bank Select。

我做了 InputConfig,一款发送和接收 MIDI 的免费 Mac App,所以最后几节讲怎样用按钮发送 Program Change,以及怎样用它切换布局。

步骤

  1. 在设备的音色列表里找到你想要的音色的编号。
  2. 查看设备是从 0 还是从 1 开始数音色,如果从 1 开始,就减去 1。
  3. 如果音色在另一个音色库里,先发送 Bank Select:CC 0,然后是 CC 32。
  4. 在设备监听的通道上发送 Program Change。

读懂这条消息

部分数值含义
状态字节0xC0 到 0xCFProgram 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 ChangeControl 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, 繁體中文

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