RedBearLab.comのBluetooth 4.0 Low Energy BLEシールド v2.1というArduino用のボードを持っています。8年程前に買ったモノと思われます。このボードを使って、ArduinoとMACをBluetooth MIDIでつないで見たいと思います。
WebサイトRedBearLab.comは、現在ではこのサイトにアクセスできませんになってしまいます。RedBearLab.comのGuithubであればアカウント(https://github.com/RedBearLab)が残っています。このボードについても少しばかり商品紹介ページが残っているだけでした。
ジャンパーが、REQN=9, RDYN=8に接続されていることをチェックして下さい。
なを、私の持っているボードは技適マークが付いていませんので、実験のみに使用し実用には使っていません。
ArduinoはUNOを使います。Bluetooth 4.0 Low Energy BLEシールド v2.1には、NORDIC社のnRF8001といチップが搭載されています。このチップ用のライブラリRBL_nRF8001と、RedBearLab.comのBLE SDKをインストールします。
Arduino\libraries\RBL_nRF8001\src\RBL_services.hをこちらのモノと置き換えます。RBL_services.hには、Bluetoothの機能を定義するUUIDと、Bluetoothの通信を規定するGATTの情報はこのファイルに書かれています。これをBluetooth MIDI用のモノと取り替えます。
https://github.com/sieren/blidino/tree/master/Legacy%20Projects/nRF8001-BLE-Proto/RBL_nRF8001
/* Bluetooth MIDI Test Sketch */ #include <RBL_nRF8001.h> void setup() { Serial.begin(115200); ble_set_pins(9, 8); ble_set_name("BlueMIDI"); ble_begin(); } uint8_t v=0; void loop() { uint8_t flag=0; uint8_t c; if ( ble_connected() ) { // Send MIDI Data ble_write(0x81); ble_write(0x82); ble_write(0x90); ble_write(0x33); ble_write(v); } v++; v &= 0x7F; while ( ble_available() ) { c=ble_read(); // Receive MIDI Packet Serial.print(c,HEX); flag=1; } if(flag) Serial.println(); ble_do_events(); delay(500); }
MacでMIDI Studioを開きます。
右上のBluetoothのマークをクリックします。
Bluetooth Configurationのダイアログが開きます。MIDI Bluetooth Devicesを検索しています。
Arduinoに電源を供給していれば、BLIDInoというデバイスを見つけてくれます。
Connectをクリックします。MIDI StudioにBluetooth のマークの入ったデバイスが表示されます。
Send And Receive MIDIを開き、Input DeviceとしてBLIDIno Bluetoothを選択します。Input MonitorにBlIDInoから定期的に送られてくるNote Onが表示されます。
Send And Receive MIDIを開き、Output DeviceとしてBLIDIno Bluetoothを選択します。OutputにNote Onのメッセージを記載し、Outputをクリックすると、Note OnがBLIDInoに送られます。
BLIDInoが受信しているデータをモニターするには、Arduino UNOに接続しているPCでシリアルモニターを立ち上げます。Start & Readをクリックし、UNOに接続します。
受信したデータは、以下のように表示されます。千島の2バイトはタイムスタンプですので、後半3バイトがMIDIのメッセージです。