示例:预设跳转 MIDI 设置
示例:预设跳转 MIDI 设置
一次学会 MIDI 控制器
徐唯轶
建个系统来提质增效降本
专栏:工程师聊音乐设备
2022-12-03

目标:Hotone Ampero II Stomp 预设 P49-3
跳转到指定预设时,其数字计算涉及到效果器的预设框架,这里选择了 Hotone Ampero II Stomp 为示例。
假定我们需要跳转到预设 P49-3。

查找对应的 MIDI 指令说明书
在《谁在定义 MIDI 指令?》中,MIDI 指令定义有 3 方:MIDI 官方、MIDI 设备厂商、MIDI 使用者(即用户自定义)。
对于效果器这类设备来说,厂商定义是最常见的形式,所以设定 MIDI 效果器指令时,对应效果器的 MIDI 指令说明书是必备的。
中文通常叫“MIDI 控制信息列表、MIDI 地址表”。
英文关键词:“MIDI Implementation ”。
当然任何时候搜索“MIDI”都是有帮助的。

扩展阅读链接:
徐唯轶:谁在定义 MIDI 指令?
https://zhuanlan.zhihu.com/p/570936916

在《Hotone Ampero II Stomp MIDI 控制信息列表》中,查得:

很多人在这里被整晕,就是不明白预设切换的 PC 指令,和 CC#0 有什么关系。
这是因为 PC 指令只有 128 条,对应 128 个预设。而 Hotone Ampero II Stomp 共 300 个预设,明显不够分。
所以需要分成 3 组,组1、组2 各 128 个预设,组3 收尾剩下 44 个预设。
这个分组指令就是 CC# =0。

MIDI 说明书查找小结:
类型:CC,预设组分组指令。
数据1:0,CC#。
数据2:0-2,根据说明,或计算选择取值。
类型:PC,预设指令。
数据1:0-127,第一和第二组,CC 中是0组和1组,因为计数从0开始。0-43,第3组,CC 中是2组。

扩展阅读:
《徐唯轶:MIDI 三大基础指令》,有展开的说明、对比、与解释。
https://zhuanlan.zhihu.com/p/570596417

计算预设位置序号
Hotone Ampero II Stomp 以 3 个预设为一组(Bank),P00 为第一组。
P49-3 前面就有 49 组,每 3 个预设。P49-3 本身是第 50 (49+1)组的第 3 个预设。
所以 P49-3 的位置:49×3+3 = 150。注意是:第 150 个预设。
此时,也就看出了跳转预设指令设置时,必须以具体的效果器为准,因为一组的设定存在区别:
如有的是从 P01 开始为第一组,P49-3 就是 (49-1) ×3+3 = 147,变成第 147 个预设。
又或者一组有 4 个预设,P49-3 就是 49×4+3 = 199,变成第 199 个预设。

计算CC 数据2,分组数据
相对组1是 0-128 号预设,组2是 129-256 号预设。
因为 128 < 150 ≤ 256,所以 P49-3,第 150 个预设在第 2 组。
注意前面是 150 一定大于 128,后面是 150 小于或者等于 256。
第 2 组编号:2-1= 1
再次强调,MIDI 的计数是从 0 开始计数,第 2 组,在数据表达上是 1,因为前面还有一个 0 是第 1组。

又有搅局的朋友出现了,有的 MIDI 控制器设定,为了照顾直观的感觉,在输入时,就是从 1 - 128。
当用户输入后,再 MIDI 控制器自己统一减 1,变成真实数据。如这里的真实数据就是 1 表示第 2 组。

这里我们定义底层数据监控得到的数据为真实数据,即只有 0-127。
因为电脑只懂这个的 127,不懂 128。

另一方面,如果根据 MIDI 控制信息列表,可以看到 P49 属于 P42-3 - P85-1,CC 0 = 1
只是通常作为工程师,我们会用 Excel 建立一个小的计算模型,只要输入 49 和 3,就能自动生成对应的数据,而计算逻辑就是本文的细节。

最终 CC 分组指令如下:
类型:CC,控制指令,启动预设组分组。
数据1:0,CC#,由 Hotone Ampero II Stomp 给定。也是绝大多数 MIDI 设备的选择。
数据2:1,由上文推导得到。

计算 PC 指令数据1,预设位置
第 150 号预设在第 2 组:150-128= 22,第 22 号。
数据1 具体的位置编号:22-1= 21,输入真实的 PC 指令数据1 为 21。
同样减 1,也是因为 PC 指令也是从 0 开始计数。

最终 PC 预设位置指令如下:
类型:PC,预设指令,跳转到指定的预设位置。
数据1:21,由上文推导得到。
数据2:PC 没有 数据2 这个字段。实际在监控中,这里会默认一个无效数据。

输入 MIDI 指令
在 MIDI 控制器,或 DAW 中输入 2 条指令。
第 1 条指令:1(通道) - CC(控制) - 0(数据1,启动分组)- 1(数据2,选择第2组)
第 2 条指令:1(通道) - PC(预设) - 21(数据1,第2组,第22号)

这里我们假定将 Hotone Ampero II Stomp 设定为 1 号设备,其接收通道为 1。
在 MIDI 控制器中,会需要手动、逐条输入。在 DAW 通常是在 MIDI 轨道设定中选择输出为:通道1。

对于第 1 条的指令,当分组为第1组时,CC#0=0,部分效果会默认选择这个。
即没有第 1 条指令,只有第 2 条预设跳转指令,MIDI 效果器会自动选择第 1 组的对应位置。
这里不推荐这样,因为这是全凭产品的设计潜规则。而有的效果器,在没有分组指令时,会默认上一组分组。这样在一个有分组指令,和一个没有分组指令的预设之间反复切换时,会有跳转到错误的位置的可能。所以请输入完整的指令,以免出现莫名其妙的异常。

以上就是预设跳转指令的设定示例。
相对其他多数仅单指令的设定,预设跳转是需要 2 条指令共同完成。

下一篇将讲解开关类指令的设定。

示例:预设跳转 MIDI 设置
一次学会 MIDI 控制器
徐唯轶
建个系统来提质增效降本
专栏:工程师聊音乐设备
2022- 06-24

