FC2ブログ

鈴の音情報局blog

携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。
本家の鈴の音情報局はこちら→http://suzunone.0g0.jp:8800/
スマホ・携帯端末アクセス[ランキング][アクセスシェア(グラフ)] (毎年10/1にログをクリア)

AndroidのサウンドAPIの遅延問題はJB以降でほぼ解消

AndroidはiPhoneよりも後発で登場し、今や既にiPhoneを完全に超えてしまいました。
しかしAndroidが不得意で、iPhoneの方が得意な分野がまだ一部残されています。
リアルタイムサウンドの世界です。

DTMやミキサーのアプリ等ではまだまだAndroidはiPhoneの後塵を拝しています。
それはアプリ開発メーカーがサボっているからでしょうか?

いえ、そうではないです。
Androidの仕様が長らくそれらを邪魔をしてきたのです。

その辺りの歴史を振り返りながら現状がなぜこうなっているかを見ていきます。

DTMやるならAndroidを買ってはいけない ~ combuのDTM & ミキシング
現在、携帯電話のシェア第2位を獲得するなど、大躍進中のAndroidではありますが、音楽制作方面になると、てんで弱いのが現状です。(2010/09/16)

これは2010年9月の記事。

Android OS 1.6を搭載したXperia X10(SO-01B)が日本で登場したのは2010年4月。
まだGalaxy S(SC-02B)やIS03が登場する前のお話。

世界市場でもAndroid 2.1が出始めた頃で、まだまだAndroidは端末もOSも初期の初期。
(この状況を考えるとHTCはすごかったんだなと再認識させられます)

この頃のAndroidに搭載されているJavaVMであるDalvikVMはまだまだ速度が遅く、
JITも実行ハード支援も無い事から、端末の動作自身がかなりもっさり状態でした。

おまけにサウンド関係を高速に実行できるAPIもなく、DTMどころか普通に音を鳴らす
にも遅延を感じる状態。DTMを語る以前にそもそも端末自体が遅いという状況でした。

なので上記の記事はまっとうというか、端末を使ってみればDTMに使いたいと思う人は
まずいないだろうという状況で書かれた記事だと言えます。

Android 2.3 GBでKhronos OpenSL ESという標準APIがサポートされます。
これで遅延などの問題はずいぶん改善するのですが、しかしそれでもリアルタイム系
のアプリからすると、理想レベルには届いていません。
「作れなくはないけど不満の有るレベル」のモノしか作れません。
理由はまだまだ遅延が大きく、50~100msレベルで遅延します。たった0.1秒レベルの
遅延ですが、耳で聞くと違和感が爆発するレベルでの大きな遅延です。

そうしてAndroid 4.0 ICSでは2.3から特に大きな変更は無し。
Androidはサウンドの遅延に対して手を打たないままでした。

その状態でのAndroidのDTMの世界はこんな感じです。
第506回:AndroidのDTMアプリが充実しない理由とは?
~「WaveSynth」のクリムゾンテクロノジーに聞く開発の課題 ~ AV Watch

iPhone/iPadのDTMアプリが数多く存在し、いろいろと話題になる中、Androidはパッとしない。確かにアプリ自体は登場してきているものの、「使える」レベルのものが少ないのだ。
そんな中、iPhone/iPad用のGM/GS音源メーカーとして実績のあるクリムゾンテクノロジーがAndroid用のGM音源アプリ「WaveSynth for Android」を99円でリリースした。見た目も機能も従来からあったiPhone用のWaveSynthとまったく同じ。128音色、1ドラムキットでピッチベンド機能、ポルタメントのON/OFF、モノモードのON/OFF、そしてリバーブとコーラスを搭載するという仕様のアプリである。(2012/05/14)

このクリムゾンテクロノジーのWaveSynth for Androidは2.3以上向けで開発されています。
なのでKhronos OpenSL ES以上のサウンドAPIが登場しなければ、Androidの世界での
サウンド環境は良くならないという事です。

そんな状況でAndroid 4.1 JBで満を持してというか、ようやくというか、
サウンドの遅延問題に手が入りました。

Androidのサウンド環境はJelly Beanで劇的に進化する ~ GIZMODO
音楽好きなみなさん、音楽アプリ開発者のみなさん、大変お待たせしました! Android 4.1 Jelly Beanではいよいよサウンド環境が整い、音楽や音声アプリが満足に使えるクオリティに達します。
これまでのAndroidは、ハードウェア的にもOS的にもなかなか厳しいサウンド環境に悩まされていました。そこでグーグルはJelly Beanできっちり改善を行うとともに、そのパフォーマンスが十分に出せるようハードウェアのメーカー側にも厳しい基準を設けました。また、新たなサウンド環境を利用したいアプリ開発者のために無料のクロスプラットフォームlibpdライブラリもありますので、後ほどご紹介していきますね。(2012/07/12)

APIの環境を整えるだけでなく、ハードメーカーにも一定の基準を設けてサウンドの
レイテンシの削減を目指しています。Googleがようやく重い腰を上げてサウンドAPIの
改善に手を着けた形です。
    Jelly Beanはグラフィックの進化も素晴らしいですが、サウンドは需要の多い機能を搭載してきた印象。具体的にはこんな感じです。
  • USBオーディオがサポートされ、Androidオープンアクセサリ開発キット(ADK)を用いた出力が可能
  • HDMIポートを通じたマルチチャンネルオーディオをサポート
  • ハードウェア、ソフトウェアのメディア・コーデックは低レベルアクセスが可能に
  • オーディオレコードトリガー
  • オーディオ処理
  • シームレスな再生を可能にするオーディオ連結
  • メディア・ルーティング(アップルのAirPlay的な機能)

恐らく太字にした3行目と6行目辺りが今回の件に関して有用なAPIなんじゃないかなと思います。

Android 4.1 JerryBeans以降で作れば遅延の問題はほぼ解消されるのではないかなと思われます。
ハード毎の個体差という問題は初めは出るかも知れませんが、それは時間薬でしょう。
とりあえず、このAPIが広がれば地縁関係の問題は一掃されるかなと思います。


あとAndroidはJavaで動作しているので仮想マシンのおかげで遅いという人がいます。
しかし実際にはよほど下手くそなプログラマで無い限りは現状のハードとOSで遅く
なる事はほぼありません。

私は以前特定環境向けの簡易言語を構築していた事が有りますが、当時のハードでも
動作が速すぎる位の速度が出ており、下手くそプログラマーがろくでもないコードを
組まない限りは速度面でほぼ問題になることは有りません。

一部例外が有るとすれば大量のビットマップ等をループで処理しなくてはならない等
の状況等が有ります。その際でもJNIで解決できます。JNIはネイティブのAndroidでネイティブの
プログラムを書く為のインターフェイスで、C/C++やOpenGL ESを使って高速なコードを
書けるようにしたインターフェイスです。(その気になればアセンブラでも組めるのかな?)

まあコードの速度が欲しければこれで解決する糸口は有ります。
ただ私が考える問題はそこじゃないんですよ。
素人が考える以上にVMでも十分早いんで。

予想外なGC(ガーベージコレクション)が一番厄介です。
要するにメモリの整理の事で、高級言語には付き物の問題です。
過去には素人が誰でも組めたBASICでもGCの問題は言われていました。
遅いマシンだと30分ぐらいピタッと止まったりとか、普通では考えられないような事が
起こります。

Androidで起こるGCは二種類。
Javaパフォーマンス改善 - Full GCの原因とその解決方法について ~ syboos.jp
  • 「Scavenge GC」:NEW領域を対象とした短時間で終了するガベージ・コレクションで、New 領域が不足した場合に実行されます。
    ※Scavenge GCの実行時間が0.1秒未満がベスト
  • 「Full GC」:Old 領域が不足した場合実行されます。 Full GCが行われている間は、他の処理ができなくなり、システムは一時的に停止し応答しません。
    ※Full GCの実行時間が1秒未満がベスト

避けようと思えば意図的にほぼ避けることは出来るので、この処理だけはきっちり
しておかないとVMだからどうとか言っていると思わぬことになってしまいます。
まあ全部JNIで組んでしまえばGCなんて関係なくなりますからそうしてもいいのですけど。


Androidのサウンドの問題点はこれらでほぼ解決できると思われます。
今までiPhoneに後れを取っていたこの分野もこれから取り返して欲しいですね。
関連記事
  1. 2013/07/23(火) 19:22:42|
  2. 携帯
  3. | トラックバック:0
  4. | コメント:0
<<「ローエンドは出さない」はずのソニーのローエンド端末 | ホーム | 「ソニー」がサムスン対アップルのニュースタイトルに並んで書かれる日が来るのか?>>

コメント

コメントの投稿(投稿時には必ず何らかの名前を付けてください)


管理者にだけ表示を許可する

(名前を入れないとクリックできません)

トラックバック

トラックバックURLはこちら
http://suzunonejh.blog15.fc2.com/tb.php/3877-408afa11
この記事にトラックバックする(FC2ブログユーザー)

最近の記事

機能リンク

最近のコメント

カテゴリー

ブログ内検索

ブログリンク

RSSフィード

QRコード

QR

月別アーカイブ



メールフォーム

お問い合わせ・ご質問はこちらから。

名前:
メール:
件名:
本文:

suzunone.m(あっと)gmail.com に
直メでもOKです。