chakokuのブログ(rev4)

日々のごった煮ブログです

MicroPython版BLEでBLE MIDIを実装してiPhoneと接続

いくらSnifferでBLEパケットを取ろうとしてもAdvertiseしか取れない状況なので、何が正しいのか分からずじまいだけど、、MicroPythonで実装したBLEMIDIとiPhone上の音楽アプリ(KORG Module)と接続はできた*1

MicroPython側ではドレミファ・・・と連続的にNoteOn/Offさせていて、それに合わせてピアノやシンセが再生されるまでにはなった。MicroPythonでBLE MIDIのひな型ができたので、次は、MIDIプログラミングにより、ドミナントとかコード進行を鳴らしたり、各コードでアルペジエータとかを演奏させたい。

f:id:chakoku:20200908223744p:plain
ESP32上で実装したBLE MIDIKORG Moduleと接続

ご参考に。。GATTのServiceとCharacteristicの定義は以下

#//BLE MIDI
#//Service	03B80E5A-EDE8-4B33-A751-6CE34EC4C700
#//Characteristic	7772E5DB-3868-4112-A1A9-F2669D106BF3

BLE_MIDI_UUID = bluetooth.UUID('03B80E5A-EDE8-4B33-A751-6CE34EC4C700')
BLE_MIDI_CHAR = (
    bluetooth.UUID('7772E5DB-3868-4112-A1A9-F2669D106BF3'),
    bluetooth.FLAG_READ | bluetooth.FLAG_NOTIFY | bluetooth.FLAG_WRITE_NO_RESPONSE,)
BLE_MIDI_SERVICE= (
    BLE_MIDI_UUID,
    (BLE_MIDI_CHAR,),
)

*1:iPhoneの設定>BuletoothにはESP32版BLE_MIDIが表示されることがなかった。アプリから直接MIDIをScanするとESP32が発見され、接続できた。なぜなのか分からず