今度はQUICCO SOUNDのmi.1というBLE MIDI I/Fを扱ってみる。
前回と同様、RaspberryPiにBLEドングルを接続してBluezを使用するが、今回はサンプルソースコードがないので自力で調べてみる。
そこで、LightBlueというソフトを使用。Macにインストールする。
参考URL
LightBlueを使ってmi.1に接続すると、Servicesに三つ出てくるので順番にいろいろ見ていくが、結論から言うとUUID03b80e5a-ede8-4b33-a751-6ce34ec4c700
これを選択すると一つのCharacteristicsにたどり着く。
7772e5db-3868-4112-a1a9-f2669d106bf3
これがBLE MIDIのR/WをするUUIDになる。
ここで右側にSubscribeボタンがあるので押してみる。
そして試しにmi.1をMIDI鍵盤につないでキーを押すと、なにやら反応することがわかる。
これで受信が出来るらしい。
送信は、Subscribeの下の方にあるWrite Hexテキストボックスに入れる。
ここにMIDIコマンドを入れてやる。
音を鳴らすのと止めるのだけ簡単に書く。
Command | Meaning | Param1 | Param2 |
---|---|---|---|
90 | Note-on | Key(0-127) | Velocity(0-127) |
80 | Note-off | Key(0-127) | Velocity(0-127) |
音を出すには、0x90,0x45,0x7fあたりを突っ込んでみる。
テキストボックスには90457fと入れてみる。
しかし鳴らない。
で、SubscribeしたときのHex情報を見てみると、0x8080FEとなっていて、おそらくヘッダ情報がつくのだろうと推測。
まずはその通りやってみた。
8080fe90457f
鳴らず。
そこでSubscribeしたときに鍵盤を叩いてみるとどうなっていたか、やってみると0x8080904568って具合に帰ってくる。
feはいらなかった、ということで808090457fと入れると、見事に鳴った!(もちろん試行錯誤の過程を省いたわけでここまでこんなにすんなりとはいってない)
あとはBluezで同じことをやってみるだけ。
[XX:XX:XX:XX:XX:XX][LE]> primary
attr handle: 0x0001, end grp handle: 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0008, end grp handle: 0x000b uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x0016 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x0017, end grp handle: 0x001a uuid: 03b80e5a-ede8-4b33-a751-6ce34ec4c700
attr handle: 0x001b, end grp handle: 0xffff uuid: 00001530-1212-efde-1523-785feabcd123
03b80e5a-ede8-4b33-a751-6ce34ec4c700
のhandleは0x0017
なので、
[XX:XX:XX:XX:XX:XX][LE]> char-desc 0x0017
handle: 0x0017, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0018, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0019, uuid: 7772e5db-3868-4112-a1a9-f2669d106bf3
handle: 0x001a, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x001b, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x001c, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x001d, uuid: 00001532-1212-efde-1523-785feabcd123
handle: 0x001e, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x001f, uuid: 00001531-1212-efde-1523-785feabcd123
handle: 0x0020, uuid: 00002902-0000-1000-8000-00805f9b34fb
7772e5db-3868-4112-a1a9-f2669d106bf3
のhandleは0x0019
になる。
[XX:XX:XX:XX:XX:XX][LE]> char-write-req 0x0019 808090457f
OK。
ノートOFFするときは
[XX:XX:XX:XX:XX:XX][LE]> char-write-req 0x0019 8080804500
で音は消える。
これでRaspberryPiから無線でMIDI動かせちゃうね!