Publish 2018.12.28
Last Update 2020.11.21
追記------
BLE-MIDIライブラリを使う方法はこちら。断然コードがシンプルになります。
----------
久々にドラムネタです。
今回はふと思い立ってBLE MIDIを使って無線でPCと接続してみました。
使うボードはESP32です。
ESP32−DevKitC ESP−WROOM−32開発ボード:
無線、高周波関連商品 秋月電子通商-電子部品・ネット通販
秋月で購入しましたが、Amazonなどいろんなショップで取り扱っています。
ESP32はArduinoIDEで開発ができて、WiFiモジュールとBluetoothモジュールが内臓されてるにも関わらず純正arduino UNOの半額以下で手に入るという超絶便利なボードです。
以下手順です。
まずESP32をArduino IDEで使うために初期設定が必要です。
多くの人が解説してくれてますのでそちらを。Macの場合はPCにドライバをインストールしないと書き込めないので注意。
ESP32 用 Arduino 開発環境の初の安定版 1.0.0 がリリースされたのでセットアップした 20180730 版 - Qiita
続いて回路です。
ESP32とピエゾと1MΩの抵抗です。USB給電できるので電池ボックスはなくても可です
33番ピンにピエゾを繋ぎます。
電池ボックスを繋ぐのはコードを書き込んでからでいいので、こんな感じで。1点注意ですが、このESP32の開発ボードはちょっと幅が大きいんです。
大きいとどうなるかというと、ブレッドボードに刺した際にどちらか一方しか使えなくなっちゃいます。
というわけで、片側にしか電源レーンがついてないブレッドボードを使いました。
ブレッドボード 6穴版 EIC−3901: パーツ一般
秋月電子通商-電子部品・ネット通販>
続いてコードです。
今までお世話になっていたArduino MIDI Libraryは無線では使用できません。残念。
とはいえESP32を使ってBLE MIDIを使用している人はたくさんいるようなので先人の知恵をお借りします。
いくつかコードが共有されてて試したもののうまくPC側で認識されず...
こちらのスレッドを参考にして接続できました。
MIDI over
BLE ·
Issue #510 · nkolban/esp32-snippets
上のスレッドの冒頭にあるコードに、以前書いたセンシングのコードを移植しました。
このコードをESP32に書き込みます。
(自作したライブラリと併用できるかなと思ったのですがコンパイルできませんでした。いろいろ修正しないといけなさそうだったのでとりあえず今はライブラリなしで。そのうちESP32にも対応させる予定です。)
コードを書き込めたら、続いてPCに接続します。
37行目で定義したデバイス名で認識されます。
KORGがBLE MIDIの接続ガイドを公開しているのでこちらを参考に。
Macの場合はいちいちAudio MIDI設定を開かないといけないのですが、その手間を省くアプリまでKORGは提供してくれてます。ありがたい。
PCに繋いでGarageBandで動作している映像がこちら。
BLE MIDIは最近初めて使ったのですが、こんなに遅延が少ないんですね。というか有線との違いはほとんど感じられません。
せっかく無線なのであえて電池ボックスを使用してます。手持ちの電池ボックスが単三4個サイズしかなかったので大きいですが、バッテリーを用意すればもっと小さくなりそうです。電池はどれくらい持つのかは試してません。
いろいろ調べてると似たような製品を見つけました。
25個までトリガーを増やせるとのこと。
トリガーから直接PCにBluetoothで飛ばすのではなく、ハブを有線でPCに接続してそのハブに無線でトリガーから信号を送ってるみたいです。信号の処理はハブで行うのでトリガーのバッテリー消費は少なそうです。一方、今回のプロトタイプではセンシングから信号の処理、BLE経由でのMIDIの送信を1つのボードで行っているのでトリガーを増やせばその数だけPCに接続されるMIDIデバイスが増えちゃいます。
Vresa Triggerのようなシステムを作ろうと思ってるわけではありませんが、こんなに簡単にBLE MIDIが使えるならもうちょっと遊んでみようと思います。
試しに作ってみるかーぐらいの感じだったのですが、せっかく動いたので次回は3Dプリントしたパッドに今回のプロトタイプを内蔵させてみます。