Music TO GO!

2012年04月11日

iBasso DX100のひみつ2、または、AndroidにおけるALSA利用の実際

一応iBasso DX100インプレからの続きです。(DX100のひみつ1はこちら)
DX100の面白い点の一つはDX100が最近ここで書いているようなAndroidのオーディオ分野への応用のショーケースとなるということです。

前の記事でAndroidの音声システムのことを書いた時に、AudioFlingerではなく、ALSAを使用しているベンダーもあると書きました。もしかしたらiBassoもそうではないかと思い、聞いてみたらやはりDX100ではALSAを使用しているということです。またES9018のドライバーはALSAドライバーを使用しているとのこと。このALSAドライバーはiBassoが作成したものです。
前に書いたようにiBasso DX100では44/16制限のあるAudioFlingerを使わないというのは、音声システムを一からiBassoが新たに書いたと言うよりALSAをうまく利用しているということのようです。ただしそれにしてもかなり作りこんでいます。たとえば他の音楽再生アプリと同時に使うさいにiBasso Musicアプリが96/24を再生して、PowerAmpなど他のアプリが44/16を再生しているときはiBassoのソフトウエア(ミキサー?)で44/16のストリームが96/24にリサンプリングされて同時に混ざってES9018のALSAドライバーに送られるということです。この辺もiBassoが作りこんだところです。iBassoではJNIを用いてALSAを利用しています(後述)。

device-2012-04-09-232917.png
iBasso Musicによる96/24再生

少し整理すると、まずAndroidはJAVAベースなのでアプリを作るためにはJAVAのフレームワークが必要です。それがGoogleが提供するAndroid SDKのMedia Frameworkになります。これはOpenCoreというライセンス条件の緩いライブラリをベースにしています(GPLではなくApache license)。この中に先に書いたPCM出力のためのAudioTrackクラスがあり、さらにミキサーなども加えてAudioFlingerと呼んでいるAndroidの音声システムを構成しているわけです。ところがこの枠組みでは44/16が限界です。(理由はこちらの記事を参照のこと)
それを打開するためにはAndroidはもともとLinuxベースなので、そこにはいっているLinuxの音声システムであるALSAを利用するというわけです。

ただしこのALSA方式は口で言うのは簡単なのですが、問題は実際にどう実装するかということです。
ALSAはJAVAではないので、その繋ぎ目としてJNIを使います。Android NDK(native dev kit)で定義されるJNIのCインターフェースを使用してコードを作成し、そこからALSAのライブラリやドライバーを利用します。iBassoではそうしているようです(これは聞いてみました)。さらにここで生じる問題は、Androidで使われているCライブラリはBionic Libcというもので、普通のGNUなどとは違うということです。これはGPLライセンスを避けるためとかサイズを小さくするためと言われています。つまりALSAが入っているといってもそれがそのままAndroidで使えるかはわからないので、それなりの作り直しが必要かもしれません。ドライバーもAudioFlingerとは異なってきます。

従来のJAVAの世界だけよりは大変ですが、このJNI+ALSA方式ならUSB DACが使えない問題も解決できそうですね、ALSAのオーディオクラスドライバーを使えばよいわけですから。AndroidタブレットでiPadのようにUSB DACを使用して、さらに24bit出力を可能にするためにはこのJNI+ALSA方式が有効となるでしょう。JNI+ALSA方式はAndroidが本格的にオーディオ応用されるキーになるのではないかと思います。

もともとAndroidは携帯電話ですから、リソースに限りがあるというのがまず前提です。その点ではJAVAを使うというのは有効です。つまりAndroidはLinuxベースとよく言われますが、Ubuntuなどのディストリビューションに比べるとリソースやライセンスなどでかなり制約があるということです。
しかし、スマートフォンやタブレットが高性能化していき、オーディオを含めてさらに広い応用範囲が求められるようになると、やはりこのALSA問題をはじめとして、AndroidをLinuxベースのシステムとして再度見直していく必要が出てくるのではないでしょうか?
そのうえでここで書いたようなCによるネイティブコードを実現するNDKとか、Androidカンファレンスのところで書いた外部機器制御のためのADKなどでAndroidの応用というのが拡大していくと思います。iPhoneは100%Apple主導ですが、Androidではそうしてユーザー・ベンダー側で可能性を広げることができるわけです。そうすることでAndroid OSが携帯電話から脱して、あらたなインフラになっていくことができるでしょう。
あ、なんか基調講演みたいになった 笑
posted by ささき at 00:23 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2012年04月02日

AndroidはUSB DACの夢を見るか?

iPadではカメラコネクションキットを用いてUSB DACを使用することができます。それではAndroidではどうなのか、と思いますが結論から言うとまだ現状ではAndroidでUSB DACは使用できないようです。
Androidではタブレット専用バージョンの3.1からUSBホスト機能がついてUSBキーボードなどに対応しました。このUSBホスト機能はスマートフォン・タブレット統合OSであるAndroid4.0にも受け継がれているので、USBホストプラグ(USB Aタイプ)さえついていればUSB DACも使用できるように思ってしまいます。しかし、実のところUSB DACは使えないようです。これは標準ドライバー(USBクラスドライバー)の問題のようで、こちらのGoogleのバグ対応依頼リストに入っています。
code.google.com - Open Issues
Issue 24614: Enable USB audio on the Galaxy Nexus (or any Android 4.0 device)

AndroidってALSAもLinuxの中に入ったままになっているようですが、そちらは生きていないようです。おそらくはGoogleはAudioFlingerがAndroidの標準的な音声システムになっているのでALSAの方はベンダー責任となっているのではないかと思います。AndroidについてはGoogleが標準的に提供している部分とベンダーが作りこんでいる部分がありますが、ベンダーによってはALSAを生かしているところもあるようです。
ですから標準的なAndroid OSで考えると、Googleが上記の問題についてどこかの時点で直しを入れないとAndroidでUSB DACは使えないままでしょう。ただし上にも書いたようにベンダーが対応してALSAを生かすようにすればALSAの標準ドライバーで使えないことはないとも思います。その場合は機種ごとの対応になるでしょう。

ちなみにiPadでUSB DACを使う時もドライバーのインストールができないので標準ドライバー以外は使うことができませんので注意してください。これはAndroidも同じだと思います。
なぜPCやMacではドライバーがインストールできるのにスマートフォンではできないかについてはOSのカーネル構造について一歩踏み込まねばならないので、また別の機会にいたします。

*BlueStack App player紹介

一方でAndroidアプリからUSB DACを使用する手段があります。それはいまから紹介するBlueStack App playerを応用することです。これは最近ベータ版がリリースされたことで話題になっています。簡単に言うとBlueStack App playerはWindows7で動作するAndroid仮想環境です。
BlueStack App player - http://bluestacks.com/
パソコンのデスクトップでAndroidを動かすにはさきに書いたCotton CandyやUbuntu for Android、x86ネイティブ版などがありますが、BlueStackはわりと典型的な仮想OSと言えます。

bluestack1.gif

画面はこんな感じでAndroidデスクトップが表示されるのでそこで下部の検索ボックスにアプリ名を入れるとAndroid MarketやAmazon App maketなどいくつかのリポジトリを串刺し検索してアプリをダウンロードします。インストールされたアプリは上のアプリランチャーに登録されてそこから実行ができます。Androidのハードキー(バックやホーム、メニュー)に相当するのは最下端のボタンになります。BlueStackは現状2.3がベースのようです。
またCloud Connectionという仕組みを使うとAndroidスマートフォンで使用しているアプリをBlueStackにCloud経由でプッシュすることができます。

BlueStackでは音楽やBGMの再生も可能です。この場合はWindowsのデフォルトデバイスから再生されるようです。つまり再生先にDACを置くこともできますのでこれを使うわけです。仮想化することによって通常AndroidにはつなげないDAC機器を使用できるということです。

実際にいくつかの音楽再生プレーヤーアプリをインストールしてみました。USB DAC経由でAndroidアプリからけっこうきれいに音楽再生をすることができます。
音楽再生プレーヤーに関してはandLessやMeridian、Winampなどのアプリが動作確認できました。PowerAmpは動作しませんでした。おそらくJavaからCオブジェクトを呼びだすJNIかなんかの例外的なワザを使用しているのではないかと思います。

bluestack3.gif     bluestack2.gif
BlueStack上のandLessアプリ

さて、Angry BirdみたいなAndroidだけにあるアプリを動かしたいならともかく、これでなんの得があるのか、PCで音楽聴くならFoobarで聴けばいいじゃんといわれるかもしれませんが、ここで取りだすのはAudioPhilleo1です。
AudioPhilleo1には下位8bitを判断するスニッファの機能とビットパーフェクトテスターがついています。そこでBlueStack上のAndroidにAudiophilleoのビットパーフェクトテストデータといくつかハイレゾ音源を送って、どういう挙動を示すかを確認してみました。正確に言うとBlueStackの仮想化レイヤーとWindowsの音声システム(DirectSound?)を通る事になりますので念のため。

PCからAudioPhilleo1には24bit幅で送られますが、AudioPhilleo1は下位8bitを動的に確認しているので表示で有効なビット幅が分かります。
実際に試してみると44/16のCDリッピングでははじめ44/16で送出されていますが、途中で24bitがついたり消えたりするのでなにか計算余剰があるように思えます。きれいに下位8bitがヌル(0)にはなっていないようですね。USBドライバーはWindows側なのでそちらの問題のようにも思えます。
44/24や96/24ではやはり16bitと24bitで明滅がおこります。いずれにせよこの再生経路ではきれいな24bitストリームは取り出せていないようです。当然44/24のビットパーフェクトテストデータも通らないのでビットパーフェクトにはなりません、というかビットパーフェクトテストにはなりません。

*PCオーディオは仮想化の夢を見るか?

さきに書いたようにあやしい経路を使用していますのでこれはAndroidがビットパーフェクトかの正しい検証ではありません。
なにをしたかったかというとWindowsの上でAndroidを仮想化してUSB DACを使うことで、仮想化がPCオーディオの世界に応用できないかということを試行してみたかったわけです。もちろんこの方法ならUSBに限らずAndroidからPCの拡張性を活用できます。

今回はWindowsの上でAndroidを仮想化してUSB DACを使う例を示しましたが、このほかにも仮想化PCオーディオとして仮想化LinuxをWindows上で走らせるなんて言うのも面白いかもしれません。
処理は遅くなるだろうに、メリットはあるのか、といわれるかもしれませんが、まじめにひとつあります。それは設置が簡単だということです。
Linux系ソフトウエアはインストールなどが面倒かもしれませんが、仮想化すると設置は単に仮想イメージファイルのコピーで済んでしまうので慣れてない人には有効かもしれません。実際の開発現場でもPCに慣れてないテスターのためにテスト環境を仮想化してコピーして配布するというのは珍しくありません。仮想化ソフトの設置が前提ではありますが、意外と面白い使い方が見つかるかも。
ちなみに仮想化MacOSはライセンスの関係でできません、念のため。
posted by ささき at 23:32 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2012年03月24日

FXI Cotton CandyとAndroidカンファレンス

FXI Cotton CandyはUSBメモリ状の超小型コンピュータです。私は予約いれてるんですが、Androidカンファレンス2012に出展するというので見てきました。
こちらがCotton Candyのページです。
http://www.fxitech.com/products/
AndroidカンファレンスということでiPhone使ってたら冷たい視線で見られるかと思ってましたが、会場にはiPadやMacがゴロゴロしましたので堂々と出してました 笑。

Cotton CandyはこういうUSBメモリのような小型コンピュータで、ディスプレイとキーボード以外はすべて中に入っています。入出力のためには両端にUSBオスとHDMIがついてます。OSはAndroidまたはUbuntuです。

IMG_7665.jpg   IMG_7669.jpg

青い小さいボタンはBluetooth、白い窓はLED(ステータス)このほかにmicro USB(タイプB)とmicro SDスロットがついています。

IMG_7667.jpg   IMG_7666.jpg

使い方は大きく2通りあって、まずUSB端をPCに接続してストレージ内にあるWinslave.exeソフトを立ち上げるとウインドウが開くのでそこでAndroid/Ubuntuが実行できます。この場合キーボードとマウスは接続したPCのものを使います。下の写真のようにですね。

IMG_1292.jpg

セミナーではFXIのプレゼンターが熱がこもって板書始めましたが、WinslaveはCotton Candyから見た場合、仮想Androidデスクトップのシンクライアントということになります。キーボードなどI/Oは仮想化(抽象化)されてFXI独自プロトコルのパケットでPC/Cotton Candy間でUSB経由で通信されるということですね。

IMG_7676.jpg

もう一つはHDMIをモニターに接続することです。モニターを簡単に動画再生用などにも使えます。この場合はキーボードとマウスはBluetoothです。またUSB端を給電のために電源かPCにつなぐ必要があります。使ってないモニターをスマートTV的にも簡単に応用できるというわけです。

IMG_1298.jpg   IMG_1291.jpg

またHDMIとUSBを同時に使うことができますが、別々に表示させることはできません。(デモではUSB延長ケーブルを使ってました)

IMG_1296.jpg

PC上のウインドウではAndroidのハードキー(バックとかホーム)に相当するメニューが設けられています。デモはAndroid 2.3(Gingerbread)で行いましたが、製品版は4.0(IceCream Sandwitch)になるとのこと。つまりキーも変わるのでメニューも再構築するとのこと。
OSはAndroidとUbuntuが使えますが、同時ではなくどちらか一方をSDカードにダウンロードすることで使えるそう。

IMG_1301.jpg

プレゼンのセミナーも見てきました。FXIはノルウェーの会社だそうでデモしてたのはアジア支部の韓国の人でした。製造も韓国。代理店募集中だそう。発売は5月末ー6月になりそうです。
ロードマップも用意されて発展させていくようです。FXIの人も"I'm here for you"と言ってましたが使う人が考えて行くものですね。こちらに開発フォーラムもあります。
www.cstick.com

IMG_7660.jpg

私も最近はAndroidも興味あるので他の展示も見てきました。上のAndroidをx86でネイティブ実行させるプロジェクトも面白かったですね。PCで動作できるライブCDをもらったので試して見ようと思います。
先日CanonicalがUbuntu for Androidを発表しましたが、Androidをデスクトップでも共用して使うというのであれば素直にこういうネイティブ実行のようなアプローチの方が良いのではないかと思いますね。

AR系もいくつも出てました。風景にカメラをかざすと山の名前がわかる山カメラなんかは典型的なAR応用例ですね。
http://yamacamera.aqua-scape.net/
ARでは画像認識と組み合わせたのもあります。例えば手のひらにCGキャラクターを立たせるというものです。

IMG_7675.jpg

手のひらに沿わせるには画像認識も必要なわけです。これは手を閉じた状態でのみで動作をして手を動かすとキャラクターも動きます。ちなみにこれデモは初音ミクだったんですが、写真撮るというと初音ミクは撮影禁止ということでオリジナルキャラになりました 笑。肖像権があったんですねえ。

またロボットやマイコン制御などの組み込み制御系も多々ありました。これはAndrovieという頭部にAndroidスマートフォン乗っけて制御ができるロボットです。
http://www.vstone.co.jp/products/androvie/

IMG_7658.jpg

AndroidではAndroid Open Accessoryという機器制御のためのフレームワークがあるようです。これポイントなのは本来コントロールする側のAndroidがUSBホストではなくデバイス側になることで接続する機器の方から電力供給してもらうことができるというもの。機器にはネットワーク接続などを簡単に提供できます。スマートフォンならではの工夫でしょうか。
http://japanese.engadget.com/2011/05/10/android-open-accessory-arduino/

Androidは自由に応用できるところが面白いところですが、反面基本的なところで問題もあります。前に書いた断片化もそうですが、例えばこの7notesの手書き認識のデモです。

IMG_7657.jpg

認識率自体はいいんですが、Androidの場合はタッチパネル精度よくない問題というのがあってこうしたタッチ入力はきれいに描けないのでやっかいですね。このデモしてる7noteの人も下記のように書いてます。
http://www.atmarkit.co.jp/news/201105/27/7notes.html
Androidで線がまっすぐ引けない問題という言い方もあります。たとえば下記の例ですね。
http://www.engadget.com/2010/03/24/moto-touchscreen-comparison-recruits-robotic-implements-for-heig/
反面でAndroidならIMEを選べるので標準入力IMEとしてWeb入力などどこにでも使えます。iPhoneだとAtok Padみたいにあるアプリからしか使えません。これはAndroidとiPhoneの違いを端的に語る例ではあります。

ちなみにオーディオ系サークルや発表はありませんでした。
DX100を使って「Androidで高音質再生研究会」なんていうのも面白いかも。
posted by ささき at 23:17 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2012年03月16日

「新しいiPad」がひらく世界

本日新しいiPadが発売されます。
iPad3とも言われた新iPadは単に「新しいiPad」と呼ばれました。たしかにMacbook Air 2やiMac 4などとは呼ばれませんからね。発表会においてCEOのクックがポストPCについて言及したように、これで「名実ともに」iPadもデスクトップやノートブックの仲間入りを果たしたというわけです。
しかしこの新しいiPadにはさらなる可能性があります。

この新しいiPadにはいくつかの改良点がありますが、やはり最大の特徴はAppleがレチナディスプレイと呼ぶ高精細な液晶ディスプレイです。レチナ(Retina)とは網膜のことで、目では(粗さが)判別できないというような意味です。クラシックカメラのメーカーやクラカメショップなんかにもレチナというのがありますね。ピクセル数は従来のiPad2の1024x768から2048x1536に進歩しました。これは264ppi(dpi)に相当しますが、単に4倍の密度になったということやフルHDをさえ超えるということに留まりません。
300dpiというのは紙印刷においてはひとつのマジックナンバーです。つまり紙に印刷するのと同じ解像度でディスプレイにも表示ができるようになったということです。これにより人類はついに実用的な電子の紙を持ったということになります。
新しいiPadは初日だけで100万台売れたと言われますが、実験室の中のように一部の人だけではなく、数百万台・数千万台と売れていくデバイスでそれが可能になった意義は大きいと言えるでしょう。iPhone4でも同様な高精細ディスプレイですが、A4やレターのようなごく一般的な普通プリント用紙のサイズで300dpi近い解像度を持つということは別な意味を持ちます。

そもそもコンピューターの画面がいま白地に黒文字が基本なのはなぜかわかりますでしょうか?
もともとコンピューターディスプレイは昔のIBMなんかの大型メインフレームのように黒字に緑文字でした。それが白地に黒文字になったのはMacの祖先である米ゼロックス社が開発したAltoが始まりです。このAltoが現在のすべてのウインドウとデスクトップメタファーを持ったパーソナルコンピューターのミトコンドリア・イブです。コピー機を創ったゼロックス社は70年代に未来のコピー機を考えるにあたり、コピー機を電子の世界に移し替えるという考え方をしました。つまりコピー機で印刷されるように画面に表示したかったわけです。それが白地に黒文字の画面の始まりです。これによりビットマップディスプレイが生まれました。それをジョブズがゼロックスの研究所から盗み取り、さらにゲイツがそれをコピーしたわけです。それがMacとWindowsのはじまりです。(ジョブズがMac開発チームのモットーを海賊としたのはそれなりの意味があります)
このようにもともと画面と紙は同一が理想でした。

Macは72dpi(ppi)という画面解像度にこだわっていました。これはDTPで使われることが多かったMacにとって画面で見たサイズで印刷できるWysiwyg(What You See Is What You Get)という概念にこだわっていたからです。Wysiwyg(ウィズウィグ)というのはたとえば画面に表示されるワープロの原稿をA4の紙に印刷したときに、その紙を画面に持ってきたときに大きさが一致しているということです。つまり72dpiの整数倍である144dpi、288dpiが紙に印刷するデバイス(プリンタ)になります。

iPad2と新しいiPadではいいかえるとMacにおけるレーザーライター(300dpi)とイメージライター(144dpi)の違いがあります。イメージライターではいいところレポートを印刷する程度だったMacがレーザーライターの表現力でDTPという新しい世界を切り開きました。そして288dpi(Wyswigモード)のレーザーライターでDTPの世界を創ったAppleがまた264dpiのiPadで印刷に代わる新しい世界を開くことができるというわけです。
いままでコンピューターの画面のフォントは見やすさが優先でしたが、これからはフォントも印刷と同じように細かい刎ねやカーニングのようなデザインやレイアウトが重要になります。それは本の印刷と同じで、世界各国の文化もより反映することができるということです。たとえば欧米フォントはセリフとサン・セリフ(セリフなし)に大別できますが、セリフとは文字の飾りを意味しています。それらは文化的な背景によるところが大きいわけです。これによりディスプレイは紙を超えられないというハードルは超えられていくでしょう。

もちろん減法混色による紙印刷と加法混色によるディスプレイでは発色の原理が根本的に違うので、ディスプレイがいくら進化してもまったく紙と同じものはできません。しかし別な世界も開けます。ppiとdpiを言い換えたように、印刷ではハーフトーンという網点で画像を形成するのに対してピクセル個々に諧調が持てるディスプレイはさらに表現力が多彩です。

作家ウンベルトエーコは"もうすぐ絶滅するという紙の書物について"の中で「本はスプーンのように完成されていて一度発明されたらそれ以上うまく作りようがない」と述べています。そうした意味ではiPadは本の"再発明"となる可能性のあるものかもしれません。真の意味での「電子書籍」というものはここから始まるとも言えます。この新しいiPadが新しい紙であり、新しい本となっていくでしょう。



posted by ささき at 01:45 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2012年02月12日

続 Androidは24ビットの夢を見るか? (またはDX100のひみつ)

昨日iBasso DX100の2ndバッチのプリオーダーが始まり、私も予約をしました(今回の価格は$765で予約には手付金の$200が必要です)。
http://www.ibasso.com/en/products/show.asp?ID=78

そのついでにiBassoに質問をしてみました。それは前の記事で書いたようにAndroidでは16bitまでが限界のはずなのになぜDX100では24bitが可能かということです。その答えをもらいました。

まずAndroidは基本的にはLinuxのオーディオと同じでOS自体は192/24対応できる、しかし通常ではAndroidのAudioFlingerにおいてミキシングやサンプルレート変換がなされて44/16が最大となるとのこと。(48/16かも)

ここでAudioFlingerというのはAndroidにおけるCoreAudioとかAlsaみたいな音声システムです。Androidもそこでやはりミキサーがあって音がミキシングされてサンプルレート変換がなされるというわけです。Flingerは投げる人っていう意味なので、オーディオ信号をハードに投げる部分ですね。LinuxベースといってもAudioFlingerはAndroidのために書かれたものでALSAには依存していないということです。

話を戻すと、ミキサーで44/16に制限されるなら、はじめ私は「(Windowsみたいに)ミキサーをバイパスしたのか」と聞いたところ、そんな簡単ではない、と言われました。なんとiBassoは音声システム自体を書き換えた、ということです。つまりこのAudioFlingerに相当するすべてをiBasso独自のコードで書き換えたというわけです。Macで例えるならintegerモードみたいなのを実装して回避したんではなく、CoreAudio自体を書き換えたという感じですね。これはすごい。
そのため、PowerAmpなどAudioFlingerベースのプレーヤーアプリでは44k/16bitがやはり上限であり、仮にDX100にPowerAmpを乗せたとしても44/16が最大となるとのこと。

ここからは推測ですが、携帯OSはパソコンとはプロセッサパワーも違うので構造も異なり、かなり純粋なモノリシックに近い構造になっています。おそらくライブラリーなどは静的にリンクしてるでしょう。その辺も含めてiBassoがAudioFlinger相当の新しいライブラリをDX100用に構築したとしても、上のようにiBasso製のプレーヤーは192/24対応であり、PowerAmpは44/16までになると思います。
前の記事で書いたことは後者に相当するAudioFlingerでの制限となります。仮にAudioTrackで24bit設定出来たとしても続くミキサーで16bit化されるなら意味はないでしょう。


いずれにせよAndroidもなかなかに奥が深いものです。探してみるとPulseAudioをAndroidにポートしている人なんかもいますね。RockboxでALSAライブラリーを取り込んだのもちっょと近いでしょう。
先日Googleが、自社ブランドの家庭向け無線オーディオ機器を開発中とのニュースがありました。おそらくAndroid搭載のネットワークプレーヤーとかB&O Beolink12のAndroid版みたいなものでGoogle Musicリンク可能なものでしょう。
http://www.itmedia.co.jp/news/articles/1202/10/news031.html
Android搭載のオーディオ機器というのもこうした工夫・発展で面白くなってくるかもしれませんね。
posted by ささき at 23:47 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2012年02月08日

Android(Walkman Z)向けのRockbox紹介 -と- Androidは24ビットの夢を見るか?

本記事はAndroid(Walkman Z)向けのRockbox紹介と、Androidの少し深いところの話の二本立てでお送りします。

-- Android(Walkman Z)向けのRockbox --

少し前の記事でPowerAmpなどのFLACやAppleロスレスが再生できるAndroidアプリを紹介しましたが、これらはマニアックと言うよりはいわゆる一般向け音楽アプリではあります。
そこでオーディオ向けに特化したものとしてRockboxのAndroid版を紹介します。つまり高音質のWalkman ZでRockboxが動きます。

device-2012-02-07-001806.png

* Rockboxとは

わたしはiPod4GとiHP-140でRockboxを使ってましたが、うちのブログでもしばらくRockboxを扱ってなかったので一度紹介します。
iPodなどの携帯プレーヤー(DAP)にはもともとメーカー製のファームウエア(基本ソフト)が入っていますが、Rockboxは汎用のDAP用のファームウエアで、もとから入っているメーカー製のファームと交換できます。つまり操作画面の見た目はまったく異なるものになります。Rockboxではオリジナル機種のUIとは異なるRockbox独自のメニュー選択式のUIを使用します。
利点としてはたいていのメーカー製のファームウエアよりも音質がよいと言うことと、対応ファイル形式が広いのでDAPの対応ファイルを増やすことが出来るということです。たとえば私はiHP-140なんかはもっぱらFLACを使用するために使用していましたし、iPod4Gではより音質を高めるためにインストールしました。また、イコライザなど音に関する機能はかなり詳細です。何機種も使っている人は使い勝手を統一できると言うメリットもあるかもしれません。
たいていはデュアルブートでオリジナルのファームと切り替えて使用します。
曲名などメタデータはデータベース機能で管理します。Rockboxは汎用基本ソフトなので広い機種に対応しますが、フォントなど画面解像度に合わせてカスタマイズが必要になる場合があります。

Rockboxのホームページはこちらです。
http://www.rockbox.org/

かなり広いDAPに対応しています。以前から機種は微妙に拡大していて、iPod Classicも対象になっていますし、最近ではHifiman HM601やHM801などがサポートされてHeadFiなんかでも取り上げられていますね。わたしはこれはやってませんがHifimanでAppleロスレスが使用できるようになるんでしょう。

Rockboxはフリーですが、基本的に「自己責任」で使うものです。安定の度合いによって段階がありますが、今回紹介するAndroid版はもっとも低いUnusable(使い物にならない)に指定されています。ただし後で書くように実際はかなり普通に使えます。

* Rockbox for Androidとは

普通はRockboxってファームウエアというか基本ソフトをすっぽりと交換するものなんですが、Androidではアプリとなっています。そのためインストールはアプリのインストールに準じますので、iPodなどでやっていたRockboxとは多少異なります。

Rockbox for AndroidはGoogle summer of codesというオープンソースのプログラミング・コンテストと言うかプロジェクトのために立ち上げられたもので、Google summer of codes 2009のテーマとして採用されたものということです。もともとはモトローラ携帯にRockboxを移植した人がいて、そのコードがベースになっているようです。Rockbox for AndroidとしてはオープンソースのSDLライブラリをベースにはじめたようですが、PCM関連などはAndroidはLinuxですからALSAベースに変えているとのこと。
こちらRockbox wikiです。
http://www.rockbox.org/wiki/RockboxAsAnApplication2010

つまりRockbox for AndroidとはRockbox同等の機能を持ったAndroidの音楽再生アプリということになります。

* インストールの仕方

ただのアプリになったのでiPodあたりのRockboxより導入はかなり簡単です。ただしAndroid Market経由ではないのでそこがポイントです。

いくつかビルドがあるのですが、はじめから日本語対応しているのでこちらがお勧めです。
MCtek Wikiさんのサイト
http://www.mctek.tk/cgi-bin/wiki/wiki.cgi?page=FrontPage

準備
アストロ(Astro)ファイルマネージャアプリを用意してください。これはAndroidマーケット以外のアプリであるapk形式をインストールするためです。アストロ自体はAndroidマーケットからダウンロードできます。定番ですので入れておいたほうがよいです。Pro版でなくてもインストーラとして使えます。

次にAndroidの(システムの)設定→アプリケーション→提供元不明アプリを許可するにチェックを入れてオンにしてください。
(危険ですので念のため、ただこれができることがiPhoneに比べて自由だと言われるゆえんのひとつです)

インストール手順
上記ホームページのAndroid/Rockbox/Buildから480x800のファイルをダウンロードしてください。(このページには480x854のところにWalkman Zが書いてありますが480x800が正しいと思います)
apkファイルをPCにダウンロードするか直接Walkmanでダウンロードしてどこかのディレクトリに置きます。PCでダウンロードした場合はUSB接続でAndroidのsdcard以下のどこかにコピーしてください。
上記のapkファイルのあるディレクトリをアストロで開いてapkファイルを選択し長押しでコンテキストメニューを出して、インストールを押します。あるいはアプリケーションマネージャからインストールしてください。

あっけないほど簡単で、iHP140などでおなじみRockboxの鬼門の日本語フォント設定もする必要はありません。
ちなみにapkインストールは上記以外にも方法がありますので、手馴れた方法がある人はそれでも良いと思います。

* Rockboxの操作性

操作は完全にタッチパネルに対応していてAndroidのハードキーのバックボタンも効きます。Rockboxのメニュー階層とも親和性が良いですね。設定項目など機能はほぼ実装されているようです。データベースもバックグランド処理で更新ができます。
ファイル形式はFLACもAppleロスレスも対応しています。

device-2012-02-07-001953.png     device-2012-02-07-002203.png

Androidらしくウィジェットにも対応しています。ウィジェットを作る際にはボタンのカスタマイズと大きさの指定が可能です。

device-2012-02-07-001454.png     device-2012-02-07-001731.png

device-2012-02-07-002115.png

アルバムアートの表示も可能ですが、なぜか全画面のときに操作パネルがうまく表示されないように思います。私もRockbox忘れかけてるんでスキンかなにかで指定できるのだったかもしれません。ウィジェットではOKですので、選曲を全画面で行って操作はウィジェットでやるならほとんど問題はありません。
長く聴いてるといろいろと不安定ですが、多少注意していれば普通に使えます。
しかしRockboxもずいぶん進化したものだと思いますね。

* 機能と音質

ファームではなくアプリではありますが、Rockboxはやはり音は良いと感じますね。
この前あげたアプリ間ではイコライザーを抜きにするとさほど音質は変わりませんが、イコライザオフにした聴き比べでもPowerampより鮮明で音場も立体的です。ベルの音なども先鋭的で明瞭さが感じられます。
Android端末でも音質に特にこだわっているWalkman Zとはなかなか相性がよいです。

音質にかかわる設定ではRockboxではさまざまな選択が可能です。
例えばDithering(ディザリング)設定を設定メニューからオンにすることができます。Ditheringは基本的にはビット幅とかサンプルレート変換するときの仕組みです。
ソフト的にクロスフィードを行うことも出来るので、左右の音を適当にミックスして音場を自然なものにすることも可能です。
また、イコライザもPowerAmpよりもずっと詳細で多岐の設定項目があります。さすがにこの辺はRockboxは本格的です。またイコライザを使う際にはPowerAmpのところでも書きましたが、調整することで歪みやすいので全体のゲインを落としておくと良いです。RockboxではPre-cutというのがその機能に当たります。

もちろんWalkmanドック経由でも使用することができます。

* まとめ

安定性の問題とか、非正規のapkインストールという点はありますがWalkman Z1000シリーズもってる人は試してみると面白いでしょう。怪しいファームの交換ではなくアプリのインストールなので素性は良く、iBasso DX100でもおそらく使えると思います。
AndroidベースのDAPってなかなか遊べるし、いろんな使い方を模索できるのが面白いと思います。


-- Androidは24ビットの夢を見るか? --

と、一応締めといて、ここから第二部ですが、Rockboxを使ってたらちょっと面白いことを見つけました。(*以降内容はちょっと濃くなります)

Walkman Zのスクリーンキャプチャは前に書いたようにAndroid SDKのDalvik Debug Monitor Service(ddms)というデバッグ環境を立ち上げて撮るんですが、これやってたらRockboxは他のアプリと違ってデバッガに認識されるのに気がつきました。開発するためのデバッグシンボルがついた状態でビルドされているわけですね。調べたらRockbox for Androidのwikiでもddmsとの連携について書いてありました。
そこで実際に音を出している状態でデバッガにアタッチして中を見てみました。

ddms2.gif

左ペインの上の携帯の形をしたアイコンがWalkman Zで、その下に表示されているorg.rockboxという項目がRockboxのDalvik VMです。AndroidではプロセスごとにVMをホストするという考え方なので、このDalvik VMというのは普通のコンピュータで言うところのプロセスのようなものです。つまりその中での実行単位はスレッドとなります。それでDalvik VMに対してデバッガをアタッチして実行スレッドの状態をスレッドツールでモニタしているのが上の画像です。ほんとはデバッガを使って実行中のメモリーアロケーションの遷移を見たかったのですが、それはできませんでした。

Androidは開発言語はJAVAですが、オブジェクトはJAVAではなくDalvik(ダルヴィック)という仮想マシン(VM)で実行されます。ですからAndroidアプリはJAVAであるという言い方は完全に正しいわけではありません。DalvikとJavaの違いはDalvikがレジスタベースであるのに対してJavaがスタックベースであると言うことです。一般にスタックベースのアーキテクチャというのはリソースを節約するためか移植性のためです。もともとJavaがTVなどのセットトップボックスのファームのために開発されたと言う経緯がそれを物語っています。それにたいしてレジスタベースのほうがハードよりで速い実行速度を期待できます。このことはAndroidというものを語るのに少し重要な差かもしれません。

話を戻すと、つまりddmsで目的アプリのDalvik VMにアタッチすることでプロセスの実行状況がわかります。上の画像ではRockboxのDalvikVMにおけるスレッドの状況が表示されています。実際の音楽再生中です。

ここでAndroidの音楽再生についての簡単な解説ですが、Androidではandroid.mediaパッケージというインターフェースで提供されるMediaPlayerクラスかAudioTrackクラスを使います。MediaPlayerクラスはハイレベルのフレームワークでAudioTrackクラスはより低レベルな処理ができます。
上の画像のようにスレッドモニタリングして見るとRockboxではAudioTrackクラスを使用しているのがわかります。
ここで気が付くのはwriteメソッドというPublicメソッドのほかにnative_write_byteというクラス定義にはないメソッドがあります。基本的にはwriteメソッドだけでPCMデータを出力して、Androidのミキサーに渡すことができますが、writeの中でさらにprivate使用されているのか、オーバーライドのようなことをしてRockboxのコードの中で定義しているのかもしれません。

ここでAudioTrackクラスを詳細に見てみると、下記のように定義されています。
Android開発者サイト
http://developer.android.com/reference/android/media/AudioTrack.html

AudioTrack(int streamType, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes, int mode)

ここではaudioFormatがビット幅の指定で、sampleRateInHzがサンプルレートです。modeはファイルなど大きいサイズのソースから再生するときはstreamで指定し、小さいサイズの時はバッファを指定します。セッションを使えるクラスもありますが省略します。
ここでポイントはサンプルレートはintで定義されてある意味好きに値を設定できるのですが、audioFormatはいわば列挙型でENCODING_PCM_16BITかENCODING_PCM_8BITのどちらかしか値をとることができません。下記はENCODING_PCM_16BITの説明です。

public static final int ENCODING_PCM_16BIT
Audio data format: PCM 16 bit per sample. Guaranteed to be supported by devices.
Constant Value: 2 (0x00000002)


これは整数で固定値 2(0x2)のリテラルですから勝手に10進で24などと設定することはできません。つまりAndroidでは普通に開発する分においては音楽再生は16bitまでで24bit(ハイレゾ)は使うことができないということになります。
iBasso DX100なんかはどうやって24bitだしているのか興味あるところですが、おそらくメソッドをオーバーライドしてなにか作りこんでいるんでしょう。いずれにせよAndroidで24bit再生するにはそれなりのハードルがあるといえます。

そして容易に推測できると思いますが、iPhoneでの24bit出力も実は似たような問題があり、iPhoneは16bitまでというのもそこから来ています。つまりiOSにおいても24bit整数の指定もしくは型がなかったということです。これはFLAC PlayerのDanとの話で確認したことですが、DanによるとFLAC Playerではそこをなんとかして解決したと言うことです。
ただしいまでは標準のMusicアプリが24bit対応しているところを考えると、今のiOSでは少なくともiPadのビルドについては24bitを標準対応しているのではないかとも思います。


ちなみに蛇足ではあるんですが一応説明しておくと、Androidという名前はフィリップKディックの小説(映画名ブレードランナー)でのNexus 6型アンドロイドから来ているといわれています。実際にディックの遺族とGoogleで訴訟騒ぎがあったんですが、GoogleのリファレンスモデルがNuxus OneからはじまったのにNexus Sなどに名称が変わったのはNexus+数字は使わないと言うことで話がついたのではないかと思います。ここは単なる推測ですが。
posted by ささき at 23:53 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2012年01月31日

進化するiPadのUSBオーディオ

Antelope AudioがZodiac GoldとiPad+カメラコネクションキットを使用してiPadからZodiacに接続して384kを再生している例が動画で掲載されています。
Youtubeのリンク http://www.youtube.com/watch?v=3Modabpck0Q&feature=colike

Zodiac GoldのUH2モードを使用しているのでUSB Audio Class2でiPadに接続しています。以前iPadのハイレゾ出力を検証したときにも192kまでやったのでclass2対応だとは思ってましたが、ここで改めてiPadのUSBドライバーがUSB Audio calss2対応しているのが分かりました。Win7でさえ未対応ですから、タブレットでそこまでやるのはきちんとした動機があるのでしょう。

以前iPadのハイレゾ検証をしていたときはアップル標準の再生アプリはiPodアプリで、そのときは48k/24が最大でした。そのため、192kまで使いたいときはFLAC Playerが必要でした。
しかし、iOS5.0.1になって標準の再生アプリがミュージック(Music)アプリとなってからは標準でハイサンプリング対応したようです。下記のフェーズテックさんのブログでこの結果を受けて再試をしてくれてますので参考にご覧ください。
http://phase-tech.com/digital/blog/?itemid=123

ここではiTunes経由では48kまでしか転送できないのでライブラリー共有機能でiPadに出力しています。(以前書いたAudioStreamの記事でもそうしてましたね)
ちっょとひっかかるのはアンテロープが384kのMP3で上記動画を撮ったと言っていることです(わたしのtwitterも参照ください)。384kの音源がないのでツールで作ることになると思いますが、MP3ではそもそも48kまでしか対応していないように思えますね。またなぜMP3?とか、作ったとしてどうやってiPadローカルに転送したかですが、この辺はいま聞いています。

ここでのポイントはアップルがきちんとこの辺について改良をしてきていると言うことです。iPadとオーディオの関係についても見落としていないと言うことでしょう。
もしアップルがそこまでオーディオに興味を示しているならあとはAirPlayがどう変わるか、iPhoneのiOSがどう変わるか、と言うことにも注意したいところです。
上で書いたのはすべてiPad+カメラコネクションキットが前提ですので念のため。
posted by ささき at 23:42 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2011年12月27日

AndroidのOSアップデート問題

Walkman Z買ったのはAndroidを少し勉強したいというのがあったけど、実はあまりその目的にそぐわない点もあります 。それはOSのアップデート問題です。

本日Sony Tabletが最新のAndroid OSである4.0(通称Ice Cream Sandwich)にアップデートする予定があるという発表がなされましたが、これでちょっとWalkmanももしかしたらアップデート出来るかもという薄い望みも出来てきます。
http://www.itmedia.co.jp/news/articles/1112/26/news023.html
この記事でさえ英国ではという但し書きが付いていますが、iOSなら当たり前の最新のOSにアップデート出来るか分からないというのがAndroidの抱える大きな問題です。
この前会社の知人が実はiPhone持ってたのがわかったんですが、OSが4.2だったんで愕然としました 笑。最新のOSが出た途端にみな競ってアップデートするiPhoneだとこういうのは笑い事ですが、考えてみると多くのAndroid端末では実はそういう状態なわけです。

これはAndroid端末のOS断片化問題と言ってこちら記事で可視化されて一目了然です。 http://theunderstatement.com/post/11982112928/android-orphans-visualizing-a-sad-history-of-support
これは発売後1-3年経過したスマートフォン端末が常に最新でいられるかというグラフで、緑が常に最新のOSが使えてる状態です。 一目瞭然にiOSとAndroidの差が明暗別れています。
Androidでは珍しく優等生のNexusはいわゆるGoogleのリファレンス機であることに注意してください。

Androidの断片化の理由の一つはこの記事のようにリファレンス機問題として語られます。
http://s.news.mynavi.jp/news/2011/12/12/086/index.html
この点に関しては是正も試みられてはいるようですが、この問題の根っこにあるのは、実のところ開発機種が多いAndroidでは端末機メーカーの利益率は高くないためにいったん売ったら旧端末に手(コスト)をかけたくないということがあるのではないかと思います。
こちらもご覧ください。
http://maclalala2.wordpress.com/2011/12/27/スマートフォンのアップデートは年に一度でいい/

よく雑誌のスマートフォン機種紹介では機能が多く語られますが、Androidでは長く使いたい端末を選びたい時は機能の他にNexusみたいなリファレンス機を選ぶと言う観点もあるでしょうね(国産でリファレンス機があれば、という但し書きがさらに付きますが)。
posted by ささき at 09:02 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする

2011年12月25日

Walkman ZとAndroidとアップルロスレスとFLAC

Walkman Zを購入しました。この新しいWalkmanは基本ソフトにAndroid(2.3)を搭載していますから、これで私もAndroidデビューしました。

20111217-111347.jpg
Walkman ZとK3003

Walkman Zはデジタルのままで増幅まで可能なS-MASTER形式フルデジタルアンプを搭載していてDAP(携帯オーディオプレーヤー)としては明瞭感や立体感はなかなか良いものがあると思います。
Walkman Z自体のレビューはほかでもたくさんあると思いますので、ここでは高音質の音楽再生可能なAndroid機としてのみ書いていきます。Walkman Zにははじめから音楽再生のできるWalkmanアプリが添付してきますが、これはSONYの純正なので従来のWalkman同様に基本的にはSONYの音楽ファイルの圧縮形式であるATRACを使用します。(ATRACはかつてのMDのCODECだったものです)
しかしそれでは私のような人はCDをATRACでリッピングしなおしが必要かというとそうではなく、AndroidですからFLACなど汎用フォーマットが使用できるAndroidの音楽プレーヤーアプリを別にインストールすればよいわけです。こうしてSONYのWalkmanでFLACのみならずAppleロスレスが使用できるという面白いことになります。これがオーディオプレーヤーの基本ソフトにAndroidのような標準的なOSを使うメリットと言えるでしょう。

以下AndroidでFLACまたはアップルロスレスが使用できる音楽プレーヤーアプリをいくつか紹介します。すべてアンドロイドマーケットから購入・ダウンロードができます。

PowerAmp
メーカーサイト
http://powerampapp.com/
FLAC, Appleロスレスが使用可能
(有料$4.99 - 試用期間あり)

device-2011-12-24-153315.png   device-2011-12-24-213822.png   

これが私が今メインで使っているもので有料ですが一番おすすめです。ネットがつながっていればアルバムアートワークがなくてもタグ情報をたよりにアートワークをネットからダウンロードしてくるので便利です。ただたまにアルバムアートでないものを持ってくることはあります。音楽ファイルは/sdcard以下であればどこにあってもスキャンしてライブラリに組み込めるようです。

device-2011-12-24-213420.png   device-2011-12-24-155023.png

イコライザー機能が充実していて、StreoXという音場を広げるDSPや、イコライザーの方にトーンコントロールもついているという点も面白いところですそれぞれはカットすることも可能です。Walkmanではイコライザーも有効に効くようですが、音が割れやすいのでイコライザーを使うときはPreamp設定ではじめにゲインを落としておくと良いかもしれません。
そのほかにもスリープタイマーや歌詞表示機能など機能も盛りだくさんです。はじめ無料版としてアプリをダウンロードして、気に入ったら15日以内にマーケットからライセンスを購入します。

WinAmp
メーカーサイト
http://www.winamp.com/android
FLACが使用可能($4.99の有料版のみでFLACが使えます)
これはWindowsでもよく使われているWinAmpのAndroid版です。WinAmpの大きな特徴はPCのWInAmpとWiFiで同期ができる機能です。これはPCでWinAmp使用している人にはかなり便利でしょう。

device-2011-12-24-213957.png   device-2011-12-24-214506.png   device-2011-12-24-214657.png

Winampもイコライザーが使えます。右下のクロスフェードは曲の遷移のさいのフェード機能です。
トラックで異なるボリュームレベルを統一できるリプレイゲインなどの機能を持っているのもPCプレーヤー譲りかもしれません。

andLess
FLAC, Appleロスレスが使用可能

device-2011-12-24-215314.png   device-2011-12-24-215213.png

シンプルですが、問題なく使えます。無料でアップルロスレスが使いたいという人はまずこちらでもよいでしょう。

Meridian
FLACが使用可能

device-2011-12-24-215633.png   device-2011-12-24-215906.png

Meridianもわりと人気のプレーヤーで、こちらもなかなか機能豊富なプレーヤーです。無料ですが広告が表示されます。

このほかにもMortPlayerというアプリもFLACが使用できます。
けっこういろいろとあるのですが、全体的にいうと有料であってもPowerAmpをお勧めします。

下の画像はホーム画面のキャプチャです。

device-2011-12-24-220020.png

iPhoneとはことなりAndroidはウィジェットと呼ばれる小さなウインドウでコントロールができます。このデスクトップに出ているSHANTIのアルバムが表示されているコントロールウインドウはPowerAmpのウィジェットです。

これらのアプリのWalkmanへの音楽ファイル転送の一般的なやり方はUSBストレージ接続でPC(あるいはMac)に接続して、Walkman Zの/mnt/sdcard/musicフォルダの下に音楽ファイルをPCからコピーします。この点、iTunesやSONYのXアプリとは異なりますので注意ください。WinAmpでは先に書いたようにPCのWinAmpからWiFi転送ができます。
このPCにつなぐとUSBストレージになるというのはiPhoneにないAndroidの柔軟さの一つではあります

反面でAndroidの欠点のひとつは画面キャプチャが撮りにくいという点で、本記事のキャプチャはPC側にAndroid SDKをインストールしてWalkman(Android)とUSBデバック接続をしてデバッグ用のツールでスクリーンをキャプチャしています。いったん設定すればあとは簡単ですが、設定はかなり面倒ではありますね。
なおWalkman(Android)とPCとはDropboxを使ってデータ共有しています。iPhoneともこのDropbox経由でデータ共有しています。iPhoneとはブックマークはDolphinで共有できるなどテクニックはいろいろありますが、その辺はまた。
posted by ささき at 10:52 | TrackBack(0) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする