基于Arduino Micro或Leonardo的簡單USB轉(zhuǎn)MIDI適配器,可以過濾MIDI數(shù)據(jù)(可選)。
硬件部件:
- Arduino Micro × 1個
- 6n137光耦合器× 1個
- 1N4148 –通用快速開關(guān) × 1個
- 電容100 nF × 1個
- 電阻220歐姆 × 3
- 電阻10k歐姆 × 1個
- 通孔電阻,470歐姆 × 1個
- LED(通用) × 1個
- LED支架× 1個
- DIN音頻/視頻連接器,5觸點 × 2個
- 一塊通用PCB× 1個
- PCB安裝座× 1個
軟件應(yīng)用程序和在線服務(wù):
- Arduino IDE
我在網(wǎng)上搜索了如何使用Arduino構(gòu)建USB轉(zhuǎn)MIDI適配器的方法,但不幸的是,我只找到了效果不佳的解決方案(不良的MIDI軟件或硬件實現(xiàn))。因此,我決定自己構(gòu)建一個并將結(jié)果放在hackster.io上。
我使用帶有面包板的Arduino Leonardo構(gòu)建了第一個原型。一切正常后,我改用Arduino Micro構(gòu)建了焊接版本。兩者均基于ATmega32u4,后者具有本地USB,可將其作為USB MIDI接口呈現(xiàn)給您所連接的PC。
MIDI使用光耦合器和一些電阻器來創(chuàng)建完全隔離的電流環(huán)路。該電路是非常標(biāo)準(zhǔn)的電路,我使用了6n137,因為它的速度很快且廣泛可用。如電路圖所示,只有MIDI OUT連接器的引腳2接地,這是MIDI的標(biāo)準(zhǔn)配置。
最終結(jié)果的一些照片:
在軟件方面,我決定使用出色的Control Surface庫。與某些其他庫或手動編碼的實現(xiàn)不同,Control Surface可以正確處理稍微復(fù)雜的MIDI協(xié)議的所有不同方面。
Control Surface還允許您添加各種附加功能。例如,您可以添加一些電位計,踏板或連接到模擬/數(shù)字輸入的按鈕,以添加額外的MIDI控件。只需在Control Surface網(wǎng)站上查看更多信息,它就很容易做到!
您還可以注冊回調(diào),以便可以在從MIDI傳遞到USB或其他方向之前處理數(shù)據(jù)。就我而言,我使用它來修復(fù)Roland D50合成器的MIDI實施損壞。每次按下最后一個鍵時,D50都會發(fā)送“關(guān)閉所有音符”命令。現(xiàn)代實現(xiàn)(例如我使用的大多數(shù)VST樂器)都將其解釋為所有運行中音符延音的立即硬性中斷。通過過濾掉“所有音符”,D50可以再次用作主鍵盤。
我在Control Surface庫中遇到的一個問題是,它不能很好地處理大型SysEx軟件包。嘗試使用D50編輯器/圖書管理員時,這會導(dǎo)致錯誤,因為它發(fā)送了相當(dāng)大的SysEx軟件包。我在源代碼的注釋標(biāo)題中添加了有關(guān)如何解決此問題的說明。編寫該庫的人表示,一旦2.x版本問世,此問題將得到解決。
我提供了基本的USB到MIDI接口的源代碼,以及帶有“所有音符已關(guān)閉”過濾功能的版本。
當(dāng)然,您也可以使用其他庫或編寫自己的MIDI實現(xiàn),該硬件應(yīng)與任何具有USB MIDI和串行MIDI支持的MIDI庫一起使用。