ホーム > Arduino, ESP8266/ESP32 > BLE MIDIコントローラ(1)

BLE MIDIコントローラ(1)

2019 年 5 月 7 日

ごぶさたしております。一年ぶりのblog更新です。

BLE-MIDIコントローラの作成編、第一回です。

1. はじめに

ESP-32ではWiFiに加え、Bluetoothを使うことが出来ます。

昨年はWiFi経由でOSCで通信を行いましたが、BLE-MIDIを使うとよりシンプルな構成のMIDIコントローラが作成できそうです。

ble-midi-ms

BLE-MIDIデバイスとして利用する方法について、試した結果を記述します。

2. 開発環境

ESP-32の開発環境としては、ESP-IDFとArduino ESP-32があります。

BLE関係のドライバは共通なのでどちらも使えます。Arduinoの方が設定が楽なのでできればArduinoを優先して使いたいと思います。

ただし、アップデートが頻繁なため古いソースコードだと動かない場合があるようです。

開発環境に含まれているライブラリのバージョンなどに注意が必要です。

BLEの開発元はこちらになります。

https://github.com/nkolban/esp32-snippets

このレポジトリはいろいろ入っていて分かりづらいのですが、BLE関係のソースコードは以下の場所にあるようです。

https://github.com/nkolban/esp32-snippets/tree/master/cpp_utils

※Arduino ESP32やESP-IDFに含まれているため、ここのソースコードを入れる必要はありません。

うまく動かない場合には、Issueを参照してみると良いでしょう。

https://github.com/nkolban/esp32-snippets/issues

3.BLE-MIDIの設定方法

BLE-MIDIを使うためには、BLEのプロファイルとして、デバイス側で次の値を利用します。

MIDI_SERVICE_UUID        “03b80e5a-ede8-4b33-a751-6ce34ec4c700”
MIDI_CHARACTERISTIC_UUID “7772e5db-3868-4112-a1a9-f2669d106bf3”

macOSXの場合、デバイスとのペアリングにはMIDI studioを使い次のような手順が必要になります。

https://developer.apple.com/library/archive/qa/qa1831/_index.html

midi-studio-macOSX

また、iOSでも「設定」「Bluetooth」からペアリングが必要です。

macOSX, iOS共に、一度接続が切れると自動で再接続されない仕様のようです。再度同じ手順で接続が必要になります。

4. Examples

以下のソースコードを参考にして、ボタン押下でNote On/Offを送るプログラムを使い動作の確認をしました。

https://github.com/neilbags/arduino-esp32-BLE-MIDI

拙作ESP32基板に5ボタンのシールドを使い、Arduino 1.8.8 + ESP32 1.0.1で動作させています。

macOSXのGarageBand, iOSのMusic Studio, bs-16i, TouchOSCで動作を確認できました。

ble-midi-gb02

確認に使ったコードは、以下の場所に置いてあります。

https://github.com/kuwatay/ble-midi

5. 今後の予定

BLE-MIDIでESP32から信号が送れることを確認できました。次のステップは以下の項目になります。

  • BLE-MIDI経由の信号受信
  • ステップシーケンサの移植
  • バッテリー駆動化(基板作成?)
  • Windows 10など他の環境での動作確認
  • ハイブリッドデバイス化(WiFi + BLE)

また、@tadfmacさん作成中の「コネクタブル・ミラー」と接続する予定ですので、接続方法を検討しています。

(To Be Continued)

カテゴリー: Arduino, ESP8266/ESP32 タグ:
コメントは受け付けていません。