ラベル ライブラリ の投稿を表示しています。 すべての投稿を表示
ラベル ライブラリ の投稿を表示しています。 すべての投稿を表示

2015年1月28日水曜日

Android用のBLE MIDIライブラリのご紹介

去年から、Android端末上でBLE MIDI通信を使えるようにするライブラリを作っていました。(→前回の記事を参照)
AppleがBluetooth Low Energy MIDI Specification(PDF)を公開していたのを先日見つけたので、その仕様に合うよう実装してみました。

このライブラリを使って出来ること:
  • AndroidアプリとBLE MIDIなデバイスとが接続でき、演奏やイベントの記録などをすることができます。
  • iOSやOS X上で動くBLE MIDIなアプリとも接続できます。
  • Android LollipopかつPeripheral機能がサポートされている端末では、端末をBLE MIDIデバイスとして振る舞わせることができます。
注意:
このAppleの仕様は、まだMIDI公式から承認されていません。以前問い合わせをしたところ、「ドラフトの仕様はあるが絶賛議論中だよ。議論を見たかったら会員になってね」とのことでした。公式としてリリースされる仕様ではAppleのものとの食い違いが出てくるかもしれません。頑張って追従します。

ライブラリの機能

このライブラリを使うことで、AndroidはBLE MIDI CentralとPeripheralの機能を使えるようになります。

BLE MIDI Central機能とは

AndroidアプリがBLE MIDIデバイスを探して、接続します。アプリはデバイスとMIDIメッセージを送受信できます。
この機能にはAndroid JellyBean MR2(4.3 / API Level 18)以降が必要です。ペアリング機能を使うにはAndroid KitKat(4.4 / API Level 19)以降が必要です。

BLE MIDI Peripheral機能とは

AndroidアプリがBLE MIDIデバイスとして振舞います。アプリは他の端末上(Android, iOS, OS X)のCentralなアプリから接続して使用されます。


2014年11月10日月曜日

BLE MIDIのAndroid向けライブラリを作っています

iOS 8での新機能、MIDI over Bluetooth LEの最初のデバイス「mi.1」がindiegogoにて発表されていたので、早速投資して3つポチりました。


その後、ブツが届いたのはいいのですがファームウェアが導入されておらず、実際に使えるようになるまでにしばらく掛かりました。
製品版ではファームウェア書き込み済の状態で出荷しないとユーザが混乱しそうです。

まだmi.1が届いていないうちから、Android 4.3にて追加されたBluetooth LEのAPIを使ってMIDIっぽい通信をするライブラリを書いていました。
Appleが仕様を作るとして、極力既存のMIDIと互換を持たせたシンプルな形に実装するだろう、おそらくBluetooth LEにレガシMIDIのデータをそのまま垂れ流す程度のものだろう、などと想像しつつ先行して実装していました。
mi.1のファームウェアを更新した後、受信したデータをログに出したりしつつプロトコルを調整して、受信までは動作確認できました。

というわけで、まだ道半ばですが現状報告な感じで。

2012年11月2日金曜日

Android USB MIDI Driverのご紹介

Android USB MIDI Driverって?

「Android 3.1 (API Level 12)以降向けの、USB MIDIを使うためのライブラリ」です。
Android 3系のタブレットや、Android4系のスマートフォンを使って、特に改造やroot化することなしに、USB MIDI対応の楽器や機器を繋げることができるようになります。

注意:端末がUSB Host機能に対応している必要があります。USB Host対応端末であっても、USB MIDI機器が認識しない場合があります。

USB MIDI対応デバイスの例:キーボード、電子ピアノ、シンセサイザー、音源モジュールなどの楽器・コントローラ、変換ケーブルなどのPC用MIDIインタフェースなど。

ライブラリのソースコードは、こちらのgithubリポジトリからダウンロードできます。Apache ライセンス バージョン 2.0です。
https://github.com/kshoji/USB-MIDI-Driver

応用アプリの例

  • (楽器のほうの)キーボードを使ってプレゼンを操作
  • 演奏をディスプレイ上にリアルタイムで可視化
  • TENORI-ON/monomeのようなインタラクティブなシーケンサー
  • 加速度やジャイロなどのセンサーを使用したコントローラ
などなど…