大変便利で気に入ってるMIDIコントローラーがある。接続はUSBのみで、昔ながらの5ピンDIN端子のMIDIには対応しておらず、直接シンセや音源モジュールに接続できない。
そういった場合にはPC経由で接続するか、お高い変換器を使うしかない。
マイコンボードなどを少しかじっている筆者としては、「こんな高いもの買えない!千円くらいで作れるんじゃないの?!」と思ったので調べてみた。
大変ありがたいプロジェクトを発見。Raspberry Pi PicoやRP2040搭載ボードをUSB MIDIホスト変換に使うというもの。
今回はこちらをビルドして書き込んでみた。
開発環境の構築
Raspberry Pi Picoの開発はいくつかの方法があるが、今回は一番プレーンでスタンダードなC/C++ SDKを使用する。
少し前まではWindowsでの開発環境の構築は面倒だったらしいが、今ではインストーラーで簡単に入れられるらしいのでこちらを使っていく。ここでは詳細な手順は省くので、不安な方は他でインストール方法を参照してほしい。
Raspberry Pi Pico Windows Installer - Raspberry Pi
やっていく
midi2usbhostの取得
midi2usbhostはGitHubで公開されているが、zipでダウンロードするとサブモジュールが取得されないので、gitコマンドを使う。「Pico - Developer PowerShell」ではgitコマンドが使える。今回はDocuments\Pico-v1.5.1\midi2usbhostに展開した。
git clone --recursive https://github.com/rppicomidi/midi2usbhost.git
ライブラリの更新
midi2usbhostのREADMEにある通り、TinyUSBライブラリを更新する必要がある。gitコマンドを使う方法が紹介されているが、zipで落として展開しよう。
SDKのインストール先
C:\Program Files\Raspberry Pi\Pico SDK v1.5.1\pico-sdk\lib\tinyusb
にTinyUSBがあるので、zipを展開して上書きする。
ビルドと書き込み
スタートメニューから「Pico - Visual Studio Code」を開く。初回起動時はなにやら色々なダイアログが出るが、たぶん全部はいで大丈夫。
VSCodeの「ファイル」メニューから「フォルダを開く」で先程展開したフォルダを開く。
画面下のステータスバーの「No active kit」をクリックし、「GCC なんちゃら arm-none-eabi」を選択。
画面左サイドバーのCMakeを開き、Build All Projectsをクリック。Outputに「[build] Build finished with exit code 0」と出力されたら完了。
ビルドが完了すると、buildフォルダ内に「midi2usbhost.uf2」が作成されるので、これをマイコンボードに書き込む。
マイコンボードをPCに接続し、BOOTを押しながらRESETを押すと、RPI-RP2と書かれたドライブが出現する。こちらに先程生成された「midi2usbhost.uf2」をドラッグアンドドロップでコピーする。書き込みは一瞬なので、一呼吸おいてから取り外そう。
結線
必要な部品
- Raspberry Pi Pico(RP2040搭載互換ボードでも可)
- 33Ω抵抗
- 5ピンDINコネクタ or 3.5mmTRSコネクタ
- USB OTGアダプタ
今回、マイコンボードはSeeed Studio XIAO RP2040を使用した。USBコネクタがType-Cで使いやすい(百均のOTGアダプタがそのまま使える)。
アリエクで300円の互換ボードはピンヘッダから入れた電源がUSBジャックから出なかったのでうまくいかなかった。おそらくちょっとした工作が必要だろう。
DINコネクタまたは3.5mmTRSコネクタを次の通り結線。
- 9番ピン -[33Ω]- Sink(5またはTip)
- GND - Shield(2またはSleeve)
- Vcc(3.3V) -[33Ω]- Source(4またはRing)
さいごに
材料費2千円未満でUSB MIDIコントローラーをMIDIにする変換器ができた。お気に入りのnanoKEY2を接続して使用してみた。遅延はほとんど感じられない。
小さくて取り回しの良いnanoKEY2とガジェット系シンセの組み合わせの相性は抜群だ。