第506回:AndroidのDTMアプリが充実しない理由とは?
~「WaveSynth」のクリムゾンテクロノジーに聞く開発の課題 ~
WaveSynth for Android |
iPhone/iPadのDTMアプリが数多く存在し、いろいろと話題になる中、Androidはパッとしない。確かにアプリ自体は登場してきているものの、「使える」レベルのものが少ないのだ。
そんな中、iPhone/iPad用のGM/GS音源メーカーとして実績のあるクリムゾンテクノロジーがAndroid用のGM音源アプリ「WaveSynth for Android」を99円でリリースした。見た目も機能も従来からあったiPhone用のWaveSynthとまったく同じ。128音色、1ドラムキットでピッチベンド機能、ポルタメントのON/OFF、モノモードのON/OFF、そしてリバーブとコーラスを搭載するという仕様のアプリである。
クリムゾンテクノロジー 開発ユニット ユニットリーダーの小出英生氏 |
そのWaveSynthの開発者であるクリムゾンテクノロジー、開発ユニット ユニットリーダー小出英生氏に、実際AndroidがDTM系のプラットフォームとして使えるものなのか、なぜ、これまでアプリが充実していないのかなどについて聞いてみた。
■ Android向けDTMアプリ開発における最大の課題
クリムゾンテクノロジーという会社を知っている人はあまり多くないかもしれない。Digital Audio Laboratoryでは、以前「DDP TOOLS」というものを取り上げたことはあったが、一般にはあまり表に出てこない、縁の下の力持ち的な会社だ。しかし、PC用、iOS用の音源開発メーカーとしては非常に実績があり、業界内では名の通った開発会社ではある。iOSだけに絞っていえば、クリムゾンテクノロジー自身で出しているアプリはiPhone用の「WaveSynth」や、今回Android版と同時リリースとなったiPad用の「WaveSynth Pro」、またGM音源を用いたSMFプレーヤーの「m16」などで、それほど多くはない。
iPhone用のWaveSynth | iPad用のWaveSynth Pro |
しかし、同社の音源エンジンが使われているアプリとしては、ゲーム感覚でピアノ練習ができるiPad版アプリの「FingerPiano Plus」や、セガのカラオケアプリのセガカラ、Avid Technologyの譜面系アプリである「Avid Scorch」、PG Musicの「Band-in-a-Box」、BOOWYのBAD FEELINGの布袋ギターソロをiPhoneで演奏できるという「CUT FEELING」……と著名なアプリがズラリと並んでいる。そのため、知らず知らずのうちにクリムゾンテクノロジーの音源を使っていたという人も少なくないだろう。
そのクリムズンテクノロジーが、ついにAndroidのプラットフォームに参入したというのは、かなり興味深いところ。まずは、なぜこのタイミングでAndroid版を出したのかについて尋ねた。
クリムゾンテクノロジーのソフトウェアシンセサイザのアーキテクチャ |
小出氏(以下、敬称略):そもそも、iPhone版のWaveSynthを出したのは2009年4月でした。それまでPC版のソフト音源をいろいろと手がけてきたので、ちょっと暇な時期に移植してみたというのがスタートです。その後はこのソフト音源をライセンス提供したり、それに関連してiPhone系の受託開発という仕事が中心。この3年間はiPhoneベッタリという感じでした。自社アプリもやりたいけれど、なかなか忙しくて手が回らないというのが実態。その一方、エンジニアのモチベーションアップというのもひとつの課題となっていました。
――そこでAndroidということですか?
小出:そうですね。やはり自分たちにとって新しいことをするというのもモチベーションアップにつながりますし、自社ブランドで出すというのも大きなポイントです。また、われわれとしてもAndroidにおいては出遅れ感が強まっていました。世の中、かなりAndroidが普及しているのに、iOSばかりやっていて、Androidには何も手をつけていなかったですから……。
WaveSynthのiPad版(右)とAndroid版(左)を持つ小出氏 |
――実際Androidの世界に踏み入れてみてどうでしたか?
小出:かなり出遅れていてマズイなと思っていました。ところが回りを見渡してみると主要メーカーのアプリがひとつもないので、正直なところ驚きました。iOSで活躍している楽器系、音楽制作ソフト系のメーカー、ベンダーが出揃っているものだとばかり思っていたのに、誰もいないのです。プレーヤー系アプリや、着歌系アプリはいろいろあるけど、楽器系アプリがない。確かに、チャチなピアノアプリなどはたくさんありました。サンプリングデータのループ処理すらしていないものが多く、たとえばオルガン音源なのに、キーを押していると数秒もしないで音が止まっちゃう。これなら十分参入の余地はありそうだし、やっていけるのでは……、と思うようになりました。とにかく、まずはやらないと、何も始まらないですからね。
――iOSと比較してAndroidはオーディオ、MIDI関連のAPIがなくてダメ……、なんて話を聞いたことがあります。またAndroidの場合、基本的な開発環境はJavaを使うと思うのですが、Javaでは反応速度が重要な楽器アプリは難しいのではないですか? その辺、取り組んでみていかがでしたか?
小出:そうですね、まずJavaでやっていたら、楽器は無理ですね(笑)。でもその下のレイヤーにAndroid NDK(Native Development Kit)というものがあります。これを使うことでAndroidのプログラムの一部または全部をC/C++で開発できるようになります。われわれのこれまで築いてきた音源もCでできていますので、Android NDKを利用することで比較的簡単に移植可能になるのです。また、実はAPIもそこそこ揃ってきているんですよ。MIDI系のAPIもあるし、Android 2.3以降、ネイティブで叩けるオーディオAPIも追加されています。OpenSL ESというのがそれです。
――OpenSL ES??
小出:はい、3DグラフィックのAPIにOpenGLというものがありますが、OpenGLと同様、The Khronos Groupという非営利団体が策定したオーディオのAPIが、OpenSL ESです。
――なるほど、Webで調べると出てきますね。ロイヤリティフリーのクロスプラットフォーム対応のハードウェア・アクセラレーション型オーディオAPIである、と。単にオーディオの入出力というだけでなく、MIDIがはいっていたり、エフェクトが入っていたりもするようです。
オーでディオ入出力以外に、MIDIやエフェクトも入っている |
小出:そうなんです、オーディオ系のAPIがごっそりと入っている。GoogleはこのOpenSL ESにAndoroid 2.3を対応させたというので、これは使えそうだ、となったのです。さっそく使ってみると、レイテンシーがまったくダメでした。そのことが、現状のAndroidの最大の問題といっていいでしょうね。
――レイテンシーが大きいとリアルタイムに演奏する楽器としても、エフェクトとしても致命的ですからね……。
小出:とはいえ、まずはこれでやってみようと取り組んでみました。ここでは、オーディオ出力とシンセサイザの演算部分をCで組み、これでOpenSL ESのオーディオ出力部分のみを叩いています。一方画面に表示させた鍵盤のタッチを検出するところはJavaで書きました。仕様的には、3年前にiPhone用に出したWaveSynthとまったく同じです。
iPhone版と同じGM音源なので、入っている音色もすべて同じ |
――画面もまったく同じだし、出てくる音色も同じようですね。セッティング画面もほぼ同様です。コーラスとリバーブが搭載されていることや、チューニングなどの設定もiPhoneのものとそっくり同じになっています。もっともiPhone用は先日Android版が出るタイミングでバージョンが2.0となり、かなり機能強化されたので、現行製品で比較すると結構違いますが、従来のiPhoneのWaveSynthと比べれば同じですね。
セッティング画面 | コーラスとリバーブも搭載 | チューニングなどの設定もiOS版と同じ |
小出:ただ、iOSにおけるCoreMIDI対応の機器やLine6のMIDI MobilizerのようなMIDIインターフェイスが存在せず、外部のMIDI機器とやりとりする術がないので1パートしか鳴りません。つまりマルチティンバーにはなっていないのです。本当は内部的にはマルチティンバーになっているのですが、MIDIを叩く口がないので……。ただ、音はしっかり鳴るのですが、レイテンシーばかりはいかんともしがたい状況ですね。
――先ほどのAndroid NDKを使ってCで書いていてもですか……。
小出:そうですね。タッチパネルで感知した情報をJavaで拾って、ネイティブに渡すという一方通行になっています。ネイティブ側では、シンセサイザの合成演算を行なって、オーディオのAPIへと渡しているのですが、遅れるんですよね。もちろん、ある程度バッファリングしなくてはならないのは事実です。でも、今までの経験で言うと、オーディオを出力する際に、どのくらい遅れるかは一定のはずです。もし、バッファサイズが小さすぎる場合は、処理が追いつかずにブチブチと音が途切れる形になるはずです。ところがAndroidで試してみると、デバイスによって遅れ方が違うのです。とりあえず、自分たちの持っている機種をいろいろと使いながら、できるだけレイテンシーが小さくなるように調整したのですが……。たとえば、手元のGALAXYとXperiaで比較してみると、Xperiaのほうが断然早い。ただ、その原因がハッキリとしないのです。おそらくオーディオの話とJavaでのタッチセンスの大きく2つがあり、とくにタッチの取り扱いが機種によって違い、そこが大きなネックになっているのでは……と疑いだしているところです。
――レイテンシーの要因がタッチパネル側だ、と。
問題の解消のため、様々な手立てを講じているという |
小出:はい、タッチを疑ってるのは、パーカッション系のアプリで加速度センサーを用いてシャカシャカと鳴らすもののほうが、早く反応し、レイテンシーが小さいのです。この辺は今後の大きな改良課題ですね。また、Javaを使ってのタッチパネル周りの開発で非常に困ったのは、タッチの取り扱いが機種によって違ったり、ビューの扱いがiOSと大きく違ったことです。
――たとえばどんなことですか?
小出:iOSのWaveSynthでは、開発しやすくするために、画面をビュー単位で分けて作っていました。具体的には鍵盤ビュー、ピッチベンドのビュー……といった具合ですね。Androidでももちろん、ビュー単位で開発できるようにはなっているのですが、致命的な問題がありました。それは1つのビューがタッチを奪うと、ほかが動かないのです。たとえば、ピッチベンドを動かすと、鍵盤が反応しなくなってしまうのです。
――それでは、演奏できないじゃないですか(笑)。
小出:そうなんです。Android 4になるとマルチビューで使えるらしいのですが、今回はあきらめて、鍵盤もピッチベンドもすべて1つのビューにまとめてなんとか動かしています。
GALAXY NEXUS(下)にWaveSynth for Androidをインストールして、iPhone版(上)と比較 |
――なるほど、いろいろと苦労されているんですね。今回出した、Android版のWaveSynthを私の手持ちのGALAXY NEXUSに入れてみました。画面はiPhone版よりも大きいし、弾きやすそうに思えるのですが、実際に弾いて比較してみると明らかにAndroid版は大きいレイテンシーがあって、厳しいですね。
小出:GALAXY NEXUS、ほかの端末に比較するとまだいいんですけどね。ただ、弾きにくいことは事実。これからもまだまだ改良していこうと思っています。
――ということは、これに懲りず、まだAndroidベースでの音源開発に力を入れていくという意思表明ですね。
小出:iOSと比べてAndroidへの取り組みは3年も遅れましたが、結果的に他社が出していなかったので、先行メーカーになることができました。今後とも積極的にAndroidには取り組んでいき、このマーケットを攻めていきたいと思っています。
――ありがとうございました。
以上、小出氏にAndroidでのソフトシンセ・アプリの開発事情について伺ってみたが、いかがだっただろうか? インタビュー中の話題でも少し触れたが、Android端末の中ではかなり高速な部類に入ると思われるGALAXY NEXUSでも、結構なレイテンシーがあって、リアルタイムでの演奏には向かない感じだ。実感値で200msecといったところだろうか。といったって、鍵盤を高いほうから低いほうへ、さっと指をスライドさせれば、高速に、そして確実にドシラソファミレド…というように演奏はされる。改めて、なぜたかだか200msecの遅延でうまく演奏することができないのかを探ってみた。最大の理由は、音が出たことを確認できないと、人間が次のキーへ指を移すことがしにくい、ということのようだ。つまり、アタックが200msecの音色を演奏するのと近い感覚である。
とはいえ、クリムゾンテクノロジーでは、今後もAndroidに力を入れていくとのことなので、期待したいところ。ぜひ、うまい突破口を見つけ、AndroidにおけるDTMの世界を引っ張っていっていただきたい。