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