携帯向けのFlashコンテンツ、FlashLite(1.1&2.0)で音の出るゲームを開発すると、必ずといっていいほどひっかかるポイントがあります。それはサウンドまわりの実装方法。PC用のFlashPlayerと同じように実装しても音が再生されないのです。

今日はFlashLiteのサウンド実装について、実体験をもとに解説していきます。


FlashLite向けのサウンド再生方法

大事なことなので二度言いますが、携帯向けのFlashLiteコンテンツを開発するときのサウンド実装方法はPC向けFlashとは異なります。

PC向けのコンテンツでライブラリ内にある音声ファイルを再生するには、音声ファイルのプロパティでリンケージ設定をしattachSoundで生成したり(AS2の場合)、AS3では音声ファイル自体にクラス名を設定して、newしてインスタンスを作成して使います。

ここで必要になってくるのは、wavやmp3といった実際の音声ファイルですが、FlashLiteではそれに加えて、拡張子が「.mmf」や「.mld」、「.mid」といった携帯向けの音声ファイルが必要なのです。wavファイルを例に説明します。

実はライブラリ内に置いたwavファイルは実際には使われないダミーデータで、パブリッシュしてswfを生成するときに実際使われるのは、音声ファイルのプロパティから参照される外部「.mmf」「.mld」「.mid」ファイルなのです。

だったら最初から携帯向けの音声ファイルをライブラリに置けばいいじゃん!という声も聞こえてきそうですが、試してみると読み込みエラーのようです。

mmfファイルをFlashライブラリに読み込もうとしたときのエラー

というわけで、しぶしぶwavファイルのプロパティから外部mmfファイルを参照するべく設定します。

設定するには、ライブラリ内のwavファイルのプロパティを開き、「書き出し設定」→「デバイスサウンドの参照」欄に外部mmfファイルのパスを通します。

音声ファイルのプロパティからmmfファイルを参照する

これでOKです。


…ちょっと待った! で、その「mmf」や「mld」フォーマットのデータはどうやって作るの?という声が聞こえてきそうですが、僕はこのツールを使わせてもらっています。wavデータから各携帯キャリア向け音声ファイルを一括で書き出せる超便利ツール「WAV2MLD」です。


キャリアごとに再生できる音声ファイルの形式が違う!

さきほど「各携帯キャリア向け音声ファイル」と言いましたが、…そうなんです!DoCoMo、au、softbankなど、各キャリアの機種によって読み込める音声ファイルが異なります。

携帯向けFlashコンテンツを作るにあたっての一番の壁は、やはりここではないかと。

で、さきほどから何度も文中に登場している「.mmf」「.mld」「.mid」形式のファイル。キャリア別に同じ音声素材から別途これらのファイル形式に変換し、ファイルぶんのswfを用意しなければなりません。

といっても、3キャリアとも別々の形式ではなく、auとsoftbankの携帯は「.mmf」形式、DoCoMo向けには「.mld」形式でOKのようです。ちなみに「.mld」形式のファイルは、いわゆる着メロのデータと同じ形式とのこと。

ほかに「.mid」という形式が使えるそうなんですが、実際に使ったことはまだありません。拡張子から見て推測するに、機種ごとに搭載されているMIDI音源を使用するのかな…?確証が持てないので、今回は実際の音声ファイルを再生する部分の解説にとどめておきます。


その上、DoCoMoは機種別で再生できるmldファイルが違う!

で、説明はまだ続きます。見出しのとおり、DoCoMo向けには「.mld」ファイルが必要ですが、このファイル形式の中でも各メーカーの機種別でまたまた別々のファイルが必要らしいです。ドコモダケ、と覚えておきましょう。詳しくは、さきほど紹介した「WAV2MLD」ツールのページ内「概要」に対応機種別のファイル書き出し方法が明記されています。

というか、このツールを使えば各キャリア別、各機種別にも一括で書き出してくれるので、基本的にはツールにおまかせ、で平気だと思います。


今後の携帯Flashはどうなる?

つい先日、こんな記事を見つけました。

Adobe Max 2008 特別セッションレポート
「Flash Lite」の名はなくなり、「AIR Lite」が出現?

日本の携帯業界については「ガラパゴス化」だとかいろいろ言われていますが、iPhoneやAndroidなどのスマートフォンの登場で確実に携帯Flashの立場も変化していきそうです。(って言われ続けてもうだいぶ経ちましたが)

いまのところiPhoneではFlash自体が表示されないですが、とりあえず開発側の意見としては、au、DoCoMo、softbankの3キャリアではひとまず技術仕様を統一してほしいなぁ、と切に願っています。

それではみなさん、よい携帯Flashライフを!


KAYACでは、モバイルコンテンツ開発が得意なFlasherを募集しています!!


HTML5飯