2013年05月20日

Android でもMIDIインターフェイスを使えるようになってた

ちょっと前に FL Studio Mobile for Android をご紹介した際に”Android はiOSと違って MIDI キーボードやオーディオ・インターフェイスを接続することが出来ない”的な事を書いたのですがこれは間違いで、実は出来るようになっていました。

主にタブレットに搭載された Android OS 3.1 (より正確には API Level 12 を導入したバージョン)から AndroidOS に USB ホスト機能の制御用APIが追加されていて、これを使ってアプリ側で制御プログラムを書けば USB-MIDI デバイスを使えるみたいです。

USBホスト機能』とは、簡単にいうとホスト機器(この場合Androidのタブレットやスマホ本体のこと)にUSB接続したデバイス(たとえば有線マウス)をホスト側が主体となって制御する機能のことです。

例えばネクナナ君こと Nexus7 をUSBケーブルでパソコンに繋いだとします。するとパソコン側(ホスト)からネクナナ君(デバイス)に入っているファイルを取り出したり、ファイルをネクナナ君にコピーしたり、はたまたUSB充電出来るようになったりします。これはパソコン側に『USBホスト機能』が装備されているおかげで出来るわけです(お店で売っているWindows/Macには必ずついている機能です)。

ということはもし Nexus7 側に『USBホスト機能』があったら、Nexus7 をホストにして別のスマホとかを繋いで同じように使えるのかな? と考えると思いますが、条件はありますがそのとおり。使えます

USBホスト機能をもつアンドロイド端末、例えばキーボード合体/分離ができる変則タブレット ASUS TF101 Transformer に Android Walkman NW-Z1060 を接続すると、あたかもPC接続の時のように”USBでパソコンに接続します”というダイアログが表示され、TF101側で "ES ファイル・エクスプローラー"のようなファイラーを使って Walkman Z のファイルを閲覧したりコピーしたり出来るようになります。

いきなり Nexus7 ではなくTF101トランスフォーマーに話を振ったのは、「条件がある」と書いたとおり Nexus7 の場合は簡単にはいかないからです。Nexus7 は USB ホスト対応機種で有線マウスや外付けキーボードは問題なく動きますが外付けUSBストレージに対応しておらず、アンドロイド・ウォークマンを繋いでもファイラーからウォークマン側のストレージを認識できません。全く方策が無いわけではなく内部的には可能な状態になっているので GooglePlay で公開されている "Nexus Media Importer" というアプリを使うと「一応」アクセスできるようになります。ただし一般のファイラーほど機能性は高くなく、しかも有料アプリです(もちろん製造元である ASUS が公開しているアプリでもないです)。

ついでながらUSBストレージに対応している TF101 トランスフォーマーも、左のUSBポートはうまくいくんですが右のポートは何故かストレージホストになりません(マウスはどっちも使える)。このようにアンドロイドのUSBホスト機能はまだ過渡期にあって『これをやりたい場合こうやってコレを繋ぐと必ず動きます』とは言いにくいのが現状なんですね。

『USBホスト機能』が手持ちの端末と機材でちゃんと機能するのかどうか、どうやったら確認できるか?? これはスペック表にも書いてない事が多く不確定要素が沢山あり、おおざっぱには「有線のマウスやキーボードを接続して使える機種は対応している可能性が高い」とは言えるものの、実際に目の前でブツを繋いでやってみるまで判らない、という状況にあります。

そういう現状を前置きした上で、本題に入ります。

- Nexus7 に Roland の USB-MIDI インターフェイスを繋いで試してみる -

先日ちょっとYoutubeをブラブラと散策していると、"Using a MIDI controller with Caustic 2.1 on Android " という動画を見つけてしまいました。この動画は、Android 用シーケンサー/シンセアプリとしてかなりお勧めな Caustic2 というアプリの作者公式アカウントの宣伝動画ですが、AKAI の USB MIDI キーボードを Android スマホに接続して Caustic 2 を鳴らしています。

「なんだ!?こんなことがアンドロイドでも出来るようになってたんだ!?俺は無知だった!!!ブログで嘘八百書いてしもうたっ!!」と大袈裟に反省した後、ちょっと調べてみました。

今のところは Android OS 側で統括的に MIDI やオーディオ・デバイスを扱う仕組み(ライブラリ/API)が用意されているわけではなく、あくまでもアプリ作者が個々に USB ポートを MIDI デバイスとしてドライブする実装を入れている場合に限るため、一部のアプリが実験的に実装を始めている、というところのようです。

とりあえず見つけたところでは

○"Caustic2"(トライアル版だがセーブ機能以外ほとんど全部使える)

○"Keyboard Sounds Pro - Midi/USB"(有償)

○"普通のアナログシンセサイザー MIDI対応版"(無料)

といったアプリが USB MIDI キーボードを接続して演奏できるようです。

ざっと探しただけなので、他にもあるかもしれませんし、演奏用以外でもたとえばMIDIコントローラー的なアプリだとかMIDIイベントモニター的なものもあったり、さらにはUSBオーディオ・インターフェイスを接続して録音したり波形編集用の良さげなアプリも出現してきているようです。

なんとなく"Android用 MIDI キーボード"が無いといけない気になってましたが、考えてみればそもそも iPhone/iPad と異なり通常規格の USB ポートを備えている端末が多いわけなんで、敢えて"Android用" などと銘打って新しいハードウェアを商品開発する必要はなく、これまでPC用に出ているUSB機器を流用すれば良かったんですね。ただソフトウェアの開発環境、Android のシステム側がまったく音楽に関して整備されていない、あるいはされていなかった、という事だけが問題だったわけです。

Android の音楽周辺も停滞してたわけでなく私がボケーッとしてる間にけっこう色々始まってたんだなあ、と認識を新たにしました。

先に述べたとおり過渡期的な状況なので、 USB MIDI キーボード, インターフェイスだったら何でもいける、 Android 3.1以降で『USBホスト』対応ならどんな端末でもいける、というわけではなく実際やってみると動かないということもあり得るという事を頭の隅に常においておく必要がありますが・・・

見ているだけは辛抱たまらず自分でも試してみたくなったので、押入れから昔使っていた骨董品になりかかってる機材をひっぱりだしてきました。

android-midi-devices-0.jpg

「ヲイヲイまた古いの持ちだしてきたな」とオッサンからツッコまれそうですが・・・だいたい15年ほど昔の機材ですかね。

YAMAHA MU100R
android-midi-devices-mu100r-front.jpg

YAMAHA CBX-K3
android-midi-devices-yamaha-cbx-k3.jpg

GRAVIS SERIAL-MIDI ADAPTOR
android-midi-devices-gravis-midi-adaptor-0.jpg

もっと懐かしい25年ぐらい前の機材もあるんですけど、それはまた別の機会に・・・しかし、ここで重大問題発生!!ていうか最初から気がつけよ、という話なんですが MIDI インターフェイスが今はほとんど絶滅してしまったゲームポート接続タイプでした。

当時日本のパソコン市場で最大勢力であった NEC PC-9801 シリーズにはCバス(ってわかります?)のMPUシリーズとかRS232Cポートに繋ぐMIDIインターフェイスがありましたが、写真のヤツはまだUSBが普及してない時代のDOS/V(ってわかります?)のゲームポートに繋いで使うシロモノです。

しかもこれ、なんとMIDI機器をつないでさらに2つゲームポートを使えるというスグレモノなんです。

android-midi-devices-gravis-midi-adaptor-1.jpg

しかしスグレモノであった時代は遠い過去に。これではどうしようもありません。

せめて音源がもうすこし新しい機材だと音源モジュール側にUSBポートがあってMIDIインターフェイスなしで接続することも出来るんですけど、YAMAHA MU100R のリアパネルにあるのは

android-midi-devices-mu100r-host-selector.jpg

という、これまた先カンブリア時代か??という懐かしのシリアル接続ポートです。ちなみにメイド・イン・ジャパンですよ。

android-midi-devices-mu100r-made-in-japan.jpg

というわけで手詰りになってしまったので梅田のヨドバシに出掛けて、見たところ一番安価だった Roland の USB-MIDI インターフェイス UM-ONE mk2 を買うてきました。

um-one-mk2-unbox-0.jpg

本当はアプリの説明書きとかに動作確認済みのインターフェイスを買ったほうが安全なんですけどね。同シリーズの古いモデルはリストにあったのですが、でもまあ同じシリーズならいけるだろう、とタカをくくりこれにしました。

なお iPad をお持ちの方は、ワタシのように「はたして動くのだろうか??動作リストにも無かったし・・・」などとビクビクする必要もなく、メーカーの保証のもと安心動作できます。

um-one-mk2-unbox-1.jpg

パッケージの中身です。ドライバー、取説、そして本体。 普通は PC の USB ポートに接続し、二股にわかれた MIDI-IN と MIDI-OUT に機材を繋いで使用しますが、PC の代りにネクナナ君を繋ごうというわけです。

um-one-mk2-unbox-2.jpg

Nexus7 の USB ポートはマイクロBタイプなので、普通の大きさの USB ではソケットに入りません。なので、こういうアダプターを用意します。

android-midi-devices-elecom-mpa-maemcb010bk.jpg

こういうのは家電量販店なら600円〜800円ぐらいですかね、日本橋のパーツ屋みたいなとこなら200円とかで売ってたりするかもしれませんが、必ず「スマホをUSBで接続してマウスやUSBメモリを云々」という説明があるものを選びます(※重要)

さて、どのアプリでテストするかですが最初 Caustic2 を使おうかと思ったのですが、Caustic2 はどうも MIDI-IN には対応しているけども MIDI-OUT には対応していないみたいなので、適当なものを探していたところこういうページを発見しました。

"Android USB MIDI Driverのご紹介"
http://blog.kshoji.jp/2012/11/android-usb-midi-driver.html


上の Google Play へのリンクで紹介した MIDI イベントモニターのアプリはこの方が作者のようです。素晴しいことにApacheライセンス2.0で Android USB-MIDI のライブラリを公開して下さってます。アプリのサンプルソースもあるので、有り難くこれを使わせて頂くことにしましょう。画面をタッチして MIDI-OUT にノートON/OFFを流せますし、IN/OUT に流れるイベントを文字で目で見て確認できるからです。

さてさて、およそ10年ぶりくらいに MU100R の電源を入れると・・・・おおーっ、動いた!! さすが日本製!!!・・だからかどうかはともかく、若干不安だった液晶にも不具合なく綺麗に立ち上がってくれました。

android-midi-devices-mu100r-power-on.jpg

動かしてそういえばと思い出したんですけども、パワーオンのウェルカム・メッセージがこのキスマークのと、なんか得体の知れないキャラクターみたいなのが出る時とあるんですよね。

こっちがその得体の知れない生き物。

android-midi-devices-mu100r-mu-kun.jpg

ミュー君だかミュージ君だか、あるいはミュージッ君みたいな名前だったような気がするんですが思いだせません。ネットをちょっと検索してみたけど見付からなかったです。ご存知の方はよければご一報を。

Nexus7 に先程ソースからビルドしたサンプルアプリを流しこみ、USB ケーブルを繋ぎます。アプリは起動状態にしたままで、買ったばかりの UM-ONE mk2 をネクナナ君に接続。

android-midi-um-one-mk2-con-nexus7.jpg

すると、このようなダイアログが出ますので許可します。

android-midi-driver-sample-0.png

インターフェイスに通電されていることを示すLEDが灯り、ちゃんと動いているっぽいので、ひとまず安心です。とりあえず5000円をドブに捨てなくて済みました。

android-midi-um-one-mk2-con-nexus7-succeed.jpg

ところが画面の鍵盤(灰色のボックスが並んだ部分)をタッチしても、全然音源が鳴らない。信号のLEDがチカチカするので、たしかに MIDIノートは送られてるように見えるんですが・・・ここで、結線を確認して間違いに気がつきました。MIDI-OUT のケーブルだと思ってたのが・・・・

android-midi-um-one-mk2-con-midi-out.jpg

わかります?よく見ると "CONNECT TO MIDI OUT" と書いてあるんです。つまりこれは普通で言うところの "MIDI-IN" です。キーボードとかの MIDI-OUT と書いてあるポートに"接続しなさい"というのですから実際は MIDI-IN ポートなんですね。まぎらわしいわっ!!

おそらく間違いやクレームを減らすための"親切表記"なんでしょうね・・まあよく注意して見なかった私も迂闊でした。というわけで "CONNECT TO MIDI-IN" と書かれたケーブル、つまり実質の MIDI-OUT を MU100R の MIDI-IN に繋ぎなおします。

android-midi-um-one-mk2-con-midi-in.jpg

で、アプリの鍵盤を押して見ると・・・

android-midi-driver-sample-play-mu100r.png

動画:


鳴ったよーー!!

というわけで紆余曲折ありましたがなんとか実験成功です。キーボード YAMAHA CBX K-3 を繋いだ実験も一応うまくいったようです。ただ鍵盤が悪いのか、他の理由かわかりませんが不要なMIDIイベントがものすごい勢いで流れ、たまにアプリがハングアップしてしまうようです。鍵盤の入力をリアルタイム・レコーディングできるアプリもすぐには見当らないので(Caustic2 は音符のリアルタイム・レコーディングはタッチUI鍵盤でも出来ない仕様)、レイテインシとか動作については今後ボチボチ調べていきましょうか。

ところで、Android Walkman Z こと NW-Z1060 は OS 4.0 にバージョンアップしてからブルートゥースのキーボードやマウスが使えるようになりました(HIDプロファイルに対応、出荷時の 2.3 の時は非対応)。ひょっとしてUSBホストにも対応してたりとかしないだろうか・・・と淡い期待を抱いて、変換コネクタを使って無理矢理に接続を試みてみました。結果・・・駄目でした。そもそもUSBマウスやキーボードですら機能せず、Walkman Z はUSBホストには全く対応していないか、またはケーブルが対応していないようです。

android-midi-um-one-mk2-con-walkman-z.jpg




スポンサードリンク
posted by blogsapo at 22:21 | Comment(3) | TrackBack(0) | モバイル・周辺機器 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
解説記事、非常に参考になりました。
ミュージ郎じゃなかったですか?
Posted by itschy at 2013年08月27日 12:59
>itschyさん
コメント有り難うございます。

「ミュージ郎」ご指摘いただいて、ああっ!それだ!!と思って
あらためて検索してみたんですが、「ミュージ郎」はローランドの
シーケンサーソフト(とかそのへんのシステム)の名前でした。
昔のことなんで私も頭のなかで何時の間にか「ミュージ郎」が
このキャラの名前だった、みたいに混ぜこぜになってしまっていた
みたいです。こいつに名前はなかったのかもしれません…。

Android の USB-MIDI インターフェイスについては、
自作のプログラムを作成して色々試していて、近々記事しようかと
思ってますので、よろしければまたご覧ください。
Posted by blogsapo at 2013年08月29日 01:09
大変参考になりました
トライしてみます
Posted by あだあだ at 2015年01月08日 12:39
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。