Music TO GO!

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) | __→ スマートフォンとオーディオ | このブログの読者になる | 更新情報をチェックする