示例:預(yù)設(shè)跳轉(zhuǎn) MIDI 設(shè)置
示例:預(yù)設(shè)跳轉(zhuǎn) MIDI 設(shè)置
一次學(xué)會(huì) MIDI 控制器
徐唯軼
建個(gè)系統(tǒng)來提質(zhì)增效降本
專欄:工程師聊音樂設(shè)備
2022-12-03

目標(biāo):Hotone Ampero II Stomp 預(yù)設(shè) P49-3
跳轉(zhuǎn)到指定預(yù)設(shè)時(shí),其數(shù)字計(jì)算涉及到效果器的預(yù)設(shè)框架,這里選擇了 Hotone Ampero II Stomp 為示例。
假定我們需要跳轉(zhuǎn)到預(yù)設(shè) P49-3。

查找對應(yīng)的 MIDI 指令說明書
在《誰在定義 MIDI 指令?》中,MIDI 指令定義有 3 方:MIDI 官方、MIDI 設(shè)備廠商、MIDI 使用者(即用戶自定義)。
對于效果器這類設(shè)備來說,廠商定義是最常見的形式,所以設(shè)定 MIDI 效果器指令時(shí),對應(yīng)效果器的 MIDI 指令說明書是必備的。
中文通常叫“MIDI 控制信息列表、MIDI 地址表”。
英文關(guān)鍵詞:“MIDI Implementation ”。
當(dāng)然任何時(shí)候搜索“MIDI”都是有幫助的。

擴(kuò)展閱讀鏈接:
徐唯軼:誰在定義 MIDI 指令?
https://zhuanlan.zhihu.com/p/570936916

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

很多人在這里被整暈,就是不明白預(yù)設(shè)切換的 PC 指令,和 CC#0 有什么關(guān)系。
這是因?yàn)?PC 指令只有 128 條,對應(yīng) 128 個(gè)預(yù)設(shè)。而 Hotone Ampero II Stomp 共 300 個(gè)預(yù)設(shè),明顯不夠分。
所以需要分成 3 組,組1、組2 各 128 個(gè)預(yù)設(shè),組3 收尾剩下 44 個(gè)預(yù)設(shè)。
這個(gè)分組指令就是 CC# =0。

MIDI 說明書查找小結(jié):
類型:CC,預(yù)設(shè)組分組指令。
數(shù)據(jù)1:0,CC#。
數(shù)據(jù)2:0-2,根據(jù)說明,或計(jì)算選擇取值。
類型:PC,預(yù)設(shè)指令。
數(shù)據(jù)1:0-127,第一和第二組,CC 中是0組和1組,因?yàn)橛?jì)數(shù)從0開始。0-43,第3組,CC 中是2組。

擴(kuò)展閱讀:
《徐唯軼:MIDI 三大基礎(chǔ)指令》,有展開的說明、對比、與解釋。
https://zhuanlan.zhihu.com/p/570596417

計(jì)算預(yù)設(shè)位置序號
Hotone Ampero II Stomp 以 3 個(gè)預(yù)設(shè)為一組(Bank),P00 為第一組。
P49-3 前面就有 49 組,每 3 個(gè)預(yù)設(shè)。P49-3 本身是第 50 (49+1)組的第 3 個(gè)預(yù)設(shè)。
所以 P49-3 的位置:49×3+3 = 150。注意是:第 150 個(gè)預(yù)設(shè)。
此時(shí),也就看出了跳轉(zhuǎn)預(yù)設(shè)指令設(shè)置時(shí),必須以具體的效果器為準(zhǔn),因?yàn)橐唤M的設(shè)定存在區(qū)別:
如有的是從 P01 開始為第一組,P49-3 就是 (49-1) ×3+3 = 147,變成第 147 個(gè)預(yù)設(shè)。
又或者一組有 4 個(gè)預(yù)設(shè),P49-3 就是 49×4+3 = 199,變成第 199 個(gè)預(yù)設(shè)。

計(jì)算CC 數(shù)據(jù)2,分組數(shù)據(jù)
相對組1是 0-128 號預(yù)設(shè),組2是 129-256 號預(yù)設(shè)。
因?yàn)?128 < 150 ≤ 256,所以 P49-3,第 150 個(gè)預(yù)設(shè)在第 2 組。
注意前面是 150 一定大于 128,后面是 150 小于或者等于 256。
第 2 組編號:2-1= 1
再次強(qiáng)調(diào),MIDI 的計(jì)數(shù)是從 0 開始計(jì)數(shù),第 2 組,在數(shù)據(jù)表達(dá)上是 1,因?yàn)榍懊孢€有一個(gè) 0 是第 1組。

又有攪局的朋友出現(xiàn)了,有的 MIDI 控制器設(shè)定,為了照顧直觀的感覺,在輸入時(shí),就是從 1 - 128。
當(dāng)用戶輸入后,再 MIDI 控制器自己統(tǒng)一減 1,變成真實(shí)數(shù)據(jù)。如這里的真實(shí)數(shù)據(jù)就是 1 表示第 2 組。

這里我們定義底層數(shù)據(jù)監(jiān)控得到的數(shù)據(jù)為真實(shí)數(shù)據(jù),即只有 0-127。
因?yàn)殡娔X只懂這個(gè)的 127,不懂 128。

另一方面,如果根據(jù) MIDI 控制信息列表,可以看到 P49 屬于 P42-3 - P85-1,CC 0 = 1
只是通常作為工程師,我們會(huì)用 Excel 建立一個(gè)小的計(jì)算模型,只要輸入 49 和 3,就能自動(dòng)生成對應(yīng)的數(shù)據(jù),而計(jì)算邏輯就是本文的細(xì)節(jié)。

最終 CC 分組指令如下:
類型:CC,控制指令,啟動(dòng)預(yù)設(shè)組分組。
數(shù)據(jù)1:0,CC#,由 Hotone Ampero II Stomp 給定。也是絕大多數(shù) MIDI 設(shè)備的選擇。
數(shù)據(jù)2:1,由上文推導(dǎo)得到。

計(jì)算 PC 指令數(shù)據(jù)1,預(yù)設(shè)位置
第 150 號預(yù)設(shè)在第 2 組:150-128= 22,第 22 號。
數(shù)據(jù)1 具體的位置編號:22-1= 21,輸入真實(shí)的 PC 指令數(shù)據(jù)1 為 21。
同樣減 1,也是因?yàn)?PC 指令也是從 0 開始計(jì)數(shù)。

最終 PC 預(yù)設(shè)位置指令如下:
類型:PC,預(yù)設(shè)指令,跳轉(zhuǎn)到指定的預(yù)設(shè)位置。
數(shù)據(jù)1:21,由上文推導(dǎo)得到。
數(shù)據(jù)2:PC 沒有 數(shù)據(jù)2 這個(gè)字段。實(shí)際在監(jiān)控中,這里會(huì)默認(rèn)一個(gè)無效數(shù)據(jù)。

輸入 MIDI 指令
在 MIDI 控制器,或 DAW 中輸入 2 條指令。
第 1 條指令:1(通道) - CC(控制) - 0(數(shù)據(jù)1,啟動(dòng)分組)- 1(數(shù)據(jù)2,選擇第2組)
第 2 條指令:1(通道) - PC(預(yù)設(shè)) - 21(數(shù)據(jù)1,第2組,第22號)

這里我們假定將 Hotone Ampero II Stomp 設(shè)定為 1 號設(shè)備,其接收通道為 1。
在 MIDI 控制器中,會(huì)需要手動(dòng)、逐條輸入。在 DAW 通常是在 MIDI 軌道設(shè)定中選擇輸出為:通道1。

對于第 1 條的指令,當(dāng)分組為第1組時(shí),CC#0=0,部分效果會(huì)默認(rèn)選擇這個(gè)。
即沒有第 1 條指令,只有第 2 條預(yù)設(shè)跳轉(zhuǎn)指令,MIDI 效果器會(huì)自動(dòng)選擇第 1 組的對應(yīng)位置。
這里不推薦這樣,因?yàn)檫@是全憑產(chǎn)品的設(shè)計(jì)潛規(guī)則。而有的效果器,在沒有分組指令時(shí),會(huì)默認(rèn)上一組分組。這樣在一個(gè)有分組指令,和一個(gè)沒有分組指令的預(yù)設(shè)之間反復(fù)切換時(shí),會(huì)有跳轉(zhuǎn)到錯(cuò)誤的位置的可能。所以請輸入完整的指令,以免出現(xiàn)莫名其妙的異常。

以上就是預(yù)設(shè)跳轉(zhuǎn)指令的設(shè)定示例。
相對其他多數(shù)僅單指令的設(shè)定,預(yù)設(shè)跳轉(zhuǎn)是需要 2 條指令共同完成。

下一篇將講解開關(guān)類指令的設(shè)定。

示例:預(yù)設(shè)跳轉(zhuǎn) MIDI 設(shè)置
一次學(xué)會(huì) MIDI 控制器
徐唯軼
建個(gè)系統(tǒng)來提質(zhì)增效降本
專欄:工程師聊音樂設(shè)備
2022- 06-24