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

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なアプリから接続して使用されます。


2015年1月21日水曜日

MIDI over Bluetooth LE library for Android

I've been developing the library to enable BLE MIDI feature on the Android devices from last year. The Apple Bluetooth Low Energy MIDI Specification(PDF) had revealed at December 2014. And finally, I implemented all of features on the specification.

Using this library, the app can connect with BLE MIDI devices, and BLE MIDI compatible iOS/Android/OS X apps. On the Android Lollipop, the app can act as BLE MIDI device.

Note:
This Apple's specification has not been approved by MIDI Manufacturers Association(MMA). I've asked about the specification to MMA at the past, but it was under discussion with MMA members.
The MMA's official release version's specification might be different from Apple's one.

The library's features

With this library, the Android can provide BLE MIDI Central / Peripheral features.

BLE MIDI Central feature

The Android app can host BLE MIDI devices. The app can receive MIDI messages from BLE MIDI devices, and send MIDI messages to them.
This feature requires Android KitKat(4.4 / API Level 19) or later.

BLE MIDI Peripheral feature

The Android app can pretend as BLE MIDI device. The application on the another machine(Android / iOS / OS X) can connect with the Android app.

2012年12月26日水曜日

[Android Advent Calendar] 自作のUSBデバイスを、Androidで動かす

Android Advent Calendar 2012/12/26(表) 向けの記事です。裏は@l_b__さんです。

今年の後半にかけてAndroidのUSBホスト周りに少し詳しくなってきた、@kshojiです。Android USB MIDI Driverなどというものを作って公開しております。

USBデバイスを自分で作って、Android側でドライバを書いたら、好きなデバイスを作ってAndroidで自由に動かせて、楽しいんじゃないかなー。ということで、今回この記事を書いてみます。
TwitterのTLで尋ねてみると、USB HIDなデバイスが今時の流行っぽいので、それに乗ってみることにします。USBデバイスの自作と、そのデバイスに対応するアプリ作成の参考になれば嬉しいです。

AndroidがUSBホストに対応

Android OS 3.1からUSBホスト機能に対応して、アプリで、JavaのAPIを使ってUSBデバイスのドライバが書けるようになりました。LinuxのデバイスドライバといえばC(libusb)で書く、もしくはカーネル側をいじるという印象があるので、これはすごく画期的なことだと思います。なんといっても、Javaはとっつきやすいですから。

Android SDKにもUSBミサイルランチャを操作するサンプルが付いています。USBミサイルランチャは色々な環境でサンプルとして使われているようです。

注:必ずしもUSBデバイスであればなんでも認識する、というわけではないようです。HTC J ButterflyではUSB HIDなデバイスは認識しましたが、USB MIDIなデバイスは認識しませんでした。

AndroidでのUSBホストの使いかた

Android の USBホストの公式ドキュメントはこちらからどうぞ。

githubのリポジトリにこの記事用のコード一式を置いてみました。
いちおう、見通しがよくなるようにしているつもりです。
…と言っても、AbstractDeviceActivityクラスあたりから見ていくと、なんとなくわかるかな、程度ですが。WTFPLにしてあるので、煮るなり焼くなりお好きにどうぞ。