nodeでBluetooth MIDI

nodeのモジュールnoble/blenoを使って、Bluetooth MIDI でiPhoneとPCを接続する実験です。Bluetooth MIDIはBluetooth LE(Bluetooth Low Energy)を使ったMIDI伝送のフォーマットです。Bluetooth MIDIの 仕様書はこちらのpdfを参照して下さい。

今回実験した環境は以下の通りです。


USB Driverの入れ替え

NodeでBluetoothを利用するには、USBのドライバを標準のものに取り換える必要があります。Bluetooth DeviceをUSBに刺した状態でデバイスマネジャーを確認してみます。以下のように、Bluetoothのデバイスが表示されます。

標準ドライバに差し替えるために、Zadig というアプリを使います。アプリは http://zadig.akeo.ie/ から、"Zadig 2.5" をダウンロードしました。

zading_2.5.exe を起動し、Options > Listを選択すると、以下のように表示されます。

左側のBTHUSBを、右側のWinUSBに入れ替えます。WinUSBはMicrosoftの標準ドライバです。WinUSBについてはこちらhttps://docs.microsoft.comを参照して下さい。

Replace Driver を押すと、インストールが始まります。私の環境では、一瞬Zadingが”応答なし”になりヒヤッとしますが、しばらく待つとインストールが成功します。

デバイスマネジャーを再度確認すると、Bluetoothの項目が消えて、ユニバーサルシリアルバスデバイスが表示されていることがわかります。

※注ドライバーを元に戻したいときには、CSR8510A10を削除し、Bluetooth Deviceを抜き差しします。詳細はこちらHelp, Zadig replaced the driver for the wrong device! How do I restore it?を参照してください。

パッケージのインストール

2つのパッケージ、noble と、blenoをインストールしておきます。

> npm install noble
> npm install bleno

Bluetooth MIDIの受信モジュール、node ble-midi.jsをGithubに置きましたのでダウンロードして下さい。コマンドプロンプトで以下を打ち込むと、Bluetooth MIDI のデバイス待ちになります。

https://github.com/mikatahara/BluetoothMIDI/ble-midi.js

> node ble-midi.js 


iPhoneとつなぐ

Bluetooth MIDIをチェックするために、iPhoneで"MIDI Wrench"を立ち上げます。左上の設定ボタンを押します。


Setting画面の一番下にMIDI DEVICES, Bluetooth MIDI の項目がありますので、これをクリックします。


"MyBLEDevice"というデバイス名が表示されます。この名前は、ble_midi.js で設定している名前です。"Not Connected"になっていると思いますので、この欄をクリックします。


node.js が動作しているコマンドプロンプト側にiPhoneのMACアドレスが表示されます。


左上のSettingsをタッチします。 Settingの画面に戻りますので、Doneを押して元の鍵盤に戻ります。


鍵盤を押すと、Bluetooth MIDI で通信が行われ、node.js が動作しているコマンドプロンプト側に MIDI のコマンドが表示されます。