LEの最初のデバイス「mi.1」がindiegogoにて発表されていたので、早速投資して3つポチりました。その後、ブツが届いたのはいいのですがファームウェアが導入されておらず、実際に使えるようになるまでにしばらく掛かりました。製品版ではファームウェア書き込み済の状態で出荷しないとユーザが混乱しそうです。LEのAPIを使ってMIDIっぽい通信をするライブラリを書いていました。LEにレガシMIDIのデータをそのまま垂れ流す程度のものだろう、などと想像しつつ先行して実装していました。mi.1のファームウェアを更新した後、受信したデータをログに出したりしつつプロトコルを調整して、受信までは動作確認できました。いうわけで、まだ道半ばですが現状報告な感じで。MIDIのプロトコル(解析・検証中)BLEデバイスの設定BLEの受信データは1パケットあたり最長で20bytesです。これを連続して投げることでシリアル通信のようなことを実現できます。Responseとなっていました。mi.1では、1つのChacteristicでこの2種類を兼ねているようです。データの内訳mi.1から受信されたデータを眺めると、先頭の2バイトはヘッダ情報のようでした。この部分がMIDIのノートONメッセージという感じでした。0x80」で固定されているようでした。いう時にこの部分の変化があるかは、いろいろテストしてみて検証していきます。Exclusiveなど長いデータの場合にデータがどう受信されるかも試せていません。後日、サクっとデバッグ用デバイスを作ってテストしてみます。Shieldで受信して、データが送ったものと一致することを確認するというデバイスを作ってみました。Outの中央のピンをGNDに接続して5Vが取れるように修正してあります。mi.1のケーブルがUSBのソケットと干渉して結構厳しいです。いうツールは作ってみると便利で、いくつかバグがあったのを発見できました。Androidと同様のアプリを実装しました。MIDI送受信と、ログ表示機能と、演奏機能が実装されています。Playにて公開します。ソースコード最新版のコードをgithubに置いています。絶賛開発中のため、developブランチ上にあります。現時点では、受信タイムラグが相当あってそのバラ付きもあるので、リアルタイム演奏できないクオリティです。ラグの原因がAndroidライブラリ側なのかmi.1側なのかも切り分けできていません。LEのAPIがあって、そちら向けのライブラリ開発もしていたのですが、「データを連続して受信したときに受信イベントハンドラの呼ばれる順番がバラバラになる」という致命的な欠陥にぶつかったため、ライブラリ開発は頓挫しています。10)に期待しています。以下のような機能追加・修正を予定しています。MIDI送受信処理を全体的にテスト・デバッグします。→mi.1が15バイト以上の長さのSysExを受け付けない(無視する)ようなので、そのテストができていません。それ以外の全てのMIDI機能はテストしてデバッグが完了しています(2014/11/13追記)。mi.1→Android方向に高頻度にデータを送信すると、たまに情報抜けが起きています(2014/11/13追記)。MIDIデバイスをエミュレーションできるようにしていきます。7もPeripheral非対応になったので頓挫しています。Issueには登録済で開発者も認識しているようなのでリリース版では使えるようになっている...かもしれません。5も7もPeripheralが使えませんでした(2014/11/13追記)。Serviceとして使えないかを検証して、サンプルアプリを記述します。