用Arduino自製USB MIDI效果器板

五月 18, 2016
Facebook
Twitter
身為一個喜歡把科技應用在音樂(結合兩種嗜好)的業餘音樂人,我不斷利用科技來增加舞臺上的樂趣。因為這樣的動機,我製作了一臺可程式化的效果器板,它能透過Wi-Fi連線到數位混音器和多軌錄音機,自動為我們的排練錄音。這個設計都以Raspberry Pi為基礎,而且借助大量的python程式碼才讓它們依照我的意思運作。
我設計它的目的是為了有便宜的效果器板來讓我不用雙手就能操作Loopy HD這類應用程式。這讓我演出時可以和觀眾進行眼神互動,否則我就得不時看著iPad螢幕,並且可能忘記要看著那些來看我演出的觀眾。

Behringer的FCB1010這類的效果器板對特定的用途而言很方便,而且價格實惠(我有買一臺),但它體積很大,攜帶不便。我需要有更小、更單純的裝置來滿足我的需求。

上網查資料時,我發現了幾篇分別討論我需要的功能的文章。這個專題就是這些文章的簡單結合,用來滿足我的需求,希望也能滿足你的。



​元件

iPad對隨時需要做效果的音樂人而言是很棒的平臺。iPad能夠快速處理音訊,進而衍生數種非常好用的音樂應用程式,例如產生循環效果的Loopy HD和提供人聲效果的TC-Helicon VoiceRack FX。這些應用程式不僅能透過觸控螢幕操作,還能接收MIDI指令。

被錯誤命名的「iPad相機轉接器」可以把iPad的Lightning介面轉換成USB master,如此任何USB相容的裝置都可以被蘋果裝置辨識。它可以做為USB對音訊介面或USB對MIDI介面;如果有USB集線器,就能同時有這兩種。本文末會再詳細介紹後者。

我選擇使用Arduino UNO做為這個設計的核心,因為它有個厲害的招式:它的USB介面可以從一般的序列裝置重新程式化成USB MIDI HID裝置。這讓它能隨插即用,符合我的需求。

這招只能用在「真正的」Arduino UNO或具有8u2或16u2 USB介面的「昂貴」中國版。在較便宜的Arduino上安裝CH340 USB轉接器不會有這個效果!

除了Arduino之外,其他需要的材料不多。每個按鈕需要的有:一個腳踏開關、一個電容和一個電阻。這個設計可以輕鬆擴充到11個按鈕。如果需要的話,再花點力氣就能加裝更多。

我花了一些時間為我的設計尋找合適的外殼,但沒有發現適合的。最後我選擇用幾個Conrad出品的Strapubox組裝起來。你也可以用手邊的材料來製作外殼。

我花在這個專題的時間不到一天(不含黏著劑乾燥時間),費用大約20歐元(22.50美元)。

硬體設計

图片

在硬體方面,我從電子元件著手。過往經驗告訴我腳踏按鈕的硬體和軟體都需要去彈跳處理,所以我把按鈕以電容進行橋接。電阻和連接到下拉電阻。

盒子的上方有鑽孔,用來安裝按鈕和接線。
這邊可以輕鬆安裝多達12個按鈕,但我只需要6個。你可以看到連接到按鈕的電線在數位輸入2到7腳位。我在剝皮的電線上包覆一層焊錫,接著把它們壓入連接器就取得很好的連接。需要擴充時,軟體會接收來自8到13腳位的按鈕訊號,不需要改裝。

處理外殼的底部讓我有點頭痛。我發現盒子表面原來不是平面而是斜面。如果直接把它們用螺絲或黏著劑固定在一起,會形成香蕉狀而非平面的效果器板。

針對挪出空間放置穿過盒子的電線,我發現用封口鉗可以輕鬆把它們熔化在一起。在底部的楔之間加上黏著劑可以確保穩固同時維持三個盒子所構成的底部平面。在等待黏著劑乾燥時,我用一塊(黑色)的帆布膠帶把它們固定。帆布膠帶似乎也讓效果器板成品在光滑的地面上不易滑動,所以我把它保留在底部。在等待黏著劑乾燥時,我也用一些重物來把它們壓平(如圖所示)。

黏著劑乾燥的同時,可以來準備軟體。

軟體

按鈕與Arduino的介面
這個專題用的軟體來自Instructables上這個硬體轉MIDI的專題。我只把類比輸入的程式碼移除,並把序列速度變更為MIDI的預設值31250,藉此取得最高相容性。我也為下拉電阻調整軟體,讓按鈕按下時數位輸入會轉為1。最後完成的程式碼如最下方的附錄。

啟動程式碼的除錯後可以看到所有的按鈕都可以在序列輸出運作。接著把除錯關閉,並再次將腳本程式碼傳送至Arduino。

ArduinoMIDI的介面
接著要把UNO的16u2轉換為MIDI HID。

這篇文章說明重新程式化Arduino USB介面的方法。然而,我沒有適合的程式設計硬體,也無法讓軟體順利運作。

因此,我使用來自HIDUINO的韌體檔案並依照這裡的程式化步驟處理,結果很成功。

警告:要確定硬體已經證實可以運作,因為現在要把腳本程式碼燒錄到Arduino需要把介面轉換為序列模式或把程式編輯器連接到Arduino的連接器。

我暫時把一個按鈕連接到重設和接地腳位,如右圖所示,並且簡短按下該按鈕以及在Linus Box執行:

sudo dfu-programmer atmega16u2 flash arduino_midi.hex

接著執行:

sudo dfu-programmer atmega16u2 reset

我從Arduino把USB連接拔除,然後再重新插入後,它就被辨識為USB MIDI裝置了!用MIDI追蹤程式快速檢查顯示所有按鈕都依照預期地登錄為MIDI事件。

連線到蘋果裝置
你可以用蘋果的相機連接器把Arduino的USB接頭連接到iPad、iPhone或iPod。Loopy和其他應用程式會將它辨識為arduino_midi。

接下來可以教Loopy HD如何回應事件:前往Loopy的設定畫面並選取arduino_midi輸入。在這裡可以新增按下(或按住)按鈕和Loopy動作的連結。

新增連結的時候需要選取:
事件,此時按下要連結的按鈕
動作,此時從選項中選取適合的動作
音軌,決定是目前的音軌或特定的音軌

每個按鈕都可以做這樣的設定和嘗試。Loopy有很多功能,會需要再一些嘗試之後才能找到最適合的連結。

關於iPadLoopy HDUSB集線器
我在合併使用(混音座的)音訊介面和自製的USB MIDI效果器板這方面遇到一些困難。音訊和MIDI的輸入都很順利,但因為中間的USB集線器,Loopy的音訊輸出無法運作。在做一些研究並啟動另一個只產生音訊的應用程式後,它就順利運作了。因此,建議你找出插入的順序,並啟動適合你的應用程式。

開心玩音樂吧!
點選此處下載附錄腳本程式碼


保羅‧西吉本
保羅‧西吉本(Paul Sijben)是正職的網路整合專家和業餘歌手。他從學會拿烙鐵的年紀開始就開始製作電子元件,而從Commodore 64推出就開始寫程式碼。
(譯:屠建明)
[原文]
Social media & sharing icons powered by UltimatelySocial