たま日記

たまに書く

BLE MIDIライブラリを使ってみた

以前BLE MIDIの記事を書いたのだけどVSCodeでは試していなかった。改めて、VSCode + PlatformIO + M5StackでBLE MIDIを使えるようにする方法を調べてみた。

マザーボード上のBluetoothを使って実験したのだが同梱されていたWi-Fiアンテナを付けないと、Bluetoothまで接続不可能だったり不安定になったりする(付けたら解決した)

※PIO HomeのタブはVSCodeの左端の縦に並んでいるPIOアイコン→QUICK ACCESS→PIO HOME→Openで開くことができる

(1)プロジェクトの作成

PIO Homeの「New Project」で新しいプロジェクトを作る。

  • Name : BLE test
  • Board : M5Stack Core ESP32
  • Framework : Arduino

BLE testというフォルダが作成され、その中に.pioとかlibとかsrcとかいろいろフォルダが作成される。

(2)標準?のライブラリを使う

BLE MIDIにはいくつかのライブラリが選択できる。まずは何も設定しないでも使える次のライブラリを試す。これを使ってるのかな?以前使ったものと同じ。
github.com

BLE_MIDI.inoをコピーしてプロジェクトBLE test/src/main.cppにペーストするだけで使える。ただし#include <Arduino.h>を追加する必要あり。ビルドしてM5StackにUploadする。書き込みサイズは979872 bytes。

(3)Windows10との接続

メニュー→設定→Bluetoothまたはその他のデバイスを追加する→Bluetoothを押す。サンプルコードに書いてある通り「ESP32 MIDI Example」として発見できる。事前にKORG BLE-MIDI Driverをインストールしておいた。

ここまでの作業で、0.5秒おきに真ん中のドを鳴らし続けるBLE MIDIバイスになる。例えばLMMSを起動して最初に表示されるTripleOscillatorを鳴らすことができる。

(4)ESP32-BLE-MIDIライブラリ

別のBLE MIDIライブラリを使ってみる。noteOn()とかsetPitchBendCallback()とか便利な関数が用意されている。
github.com
BLE test2というプロジェクトを新たに作ってPIO Homeの左端の縦に並んでいるLibrariesアイコンをクリックする。「BLE MIDI」で検索。いくつか表示される。「ESP32-BLE-MIDI by Maxime ANDRE」をクリックしてAdd to Project→Select a projectに「BLE test2」。Addするとプロジェクトにライブラリが追加される。具体的には

  • platformio.iniに「lib_deps = max22/ESP32-BLE-MIDI@^0.2.2」が追記される
  • BLE test2\.pio\libdeps\m5stack-core-esp32\ESP32-BLE-MIDI\にライブラリがダウンロードされる

Arduino IDEと違い、ライブラリはプロジェクトごとに管理されるらしい。lib_deps = ...を記述するだけでもOKらしい

サンプルコードはgithubにもあるVSCodeのライブラリのページ内にもある。01-Basic-Midi-DeviceのコードをBLE test2/src/main.cppに張り付けてビルド&アップロードする。1秒おきに真ん中のラを鳴らし続けるMIDIバイスになる。書き込みサイズは980672 bytes。

(5)BLE-MIDIライブラリ

もう一つのライブラリを使ってみる。プロジェクトにaddすると、一緒にArduinoBLE・MIDI Library・NimBLE-Arduinoライブラリがaddされる。
github.com

サンプルコードのうちMidiBle.inoをビルドしてみる。#includeを変更。hardware/BLEMIDI_ESP32_NimBLE.hを生かして、
hardware/BLEMIDI_ESP32.hの行をコメントアウトする。ESP32-NimBLE-MIDIという名前で発見できる。真ん中のドを鳴らし続けるMIDIバイスになる。書き込みサイズは560352 bytes。小さい。

(6)まとめ

最後に試したライブラリを使ってみよう。小さいので。