第11回 サウンドを使ってみる今回は,iアプリで利用できるサウンドについて取り上げる。
途中,NTTの公式ツールがリリースされたりして話題を一時,中断してしまったが,ゲームを作るというテーマで今回はサウンドを取り上げたい。読者からも数通ほどサウンドを扱ってほしいというメールをいただいていることから,iアプリのサウンド関係に興味を持っている人が多いようだ。 iアプリでサウンドを使う以前にグラフィックの取り扱いを説明したが(第6回参照),iアプリでは,グラフィックとほとんど同じ手続きでサウンドを取り扱えるMediaSoundとAudioPresenterというクラスが用意されている。これを使えば,簡単にサウンドを鳴らすiアプリを作ることができる。 手順はまず,グラフィックのときと同様にMediaManagerを使ってサウンドデータを取り出さなければならない。次のようにする。 MediaSound ms 上記のサウンド名のところはサウンドデータのファイル名を指定する。これはグラフィックのときと同様だ。 次に,このサウンドデータの使用を宣言する。ここまではグラフィックと同じなので,グラフィックの取り扱い(第6回参照)の説明も参照してほしい。 try { 以降がサウンドデータ独特の手続きになる。まず,サウンドを再生するAudioPresenterを作成する。 AudioPresenter ap = ここで作るapとは,サウンドを再生するデバイスのようなものだ。このapに対して,先に取得したMediaSoundをセットする。 ap.setSound( ms ); あとは次のようにして再生するだけだ。 ap.play(); AudioPresenterは,サウンドの再生開始,中断,終了をMediaListenerに送信する機能を持っている。使い方は後半の実際に動くコードの中で説明しているので,そちらを参照してほしい。 何のデータが使えるの!?という具合に,サウンドの再生はごく簡単だ。問題は上記で「データ名」としたデータに何が使えるかだろう。 iアプリのドキュメントにも記載されているように,使用できるデータは「iメロディ形式」に限定されている。着メロにも使われているデータなのでよく知っているという読者も多いと思うが,iメロディ形式は一種のMIDIデータ(楽譜のデータ)で,携帯にプリセットされている音色を使って演奏するためのデータだ。 iメロディ形式のデータを作成するツールはフリーやシェアウェアを含めて数多く発表されている。オンラインソフトのサイト(Vectorなど)で着メロツールを探せば,いくらでも見つけることができるはずだ。 ……と,ここまで読んで「PCM音は使えないの!?」と思った読者も多いだろう。ゲームには効果音が付きもの。効果音のために是が非でもPCMサウンドが使いたい。 “PCMサウンドが使えない”と書いているiアプリの参考書もあるが,実は使える。ただし,サウンドデータに何が使えるかは「機種依存」なのだ。503iのミニマムな仕様としてはPCMが使える必要はなく,メーカーの独自機能として使えるようにしている,というのが実情だ。 そのため,自作iアプリでPCMデータを使う場合,動作対象機種を制限することになる。機種を制限したくないのなら,PCMデータは使わないほうがいい。 今のところ,「N503i」では8または4ビット,4または8KHzのレートのADPCMデータが再生できることが分かっている。筆者が作成したデータは,「SO503i」「F503i」ではうまく鳴らすことができなかった。多分に機種に依存するようだ。 さらに,もう1つ問題がある。PCMサウンドや16色和音など,503iをフルサポートできるiメロディ作成ツールが,まだほとんどないという点だ。必死に探し回ったところ,「MLD Creator 16 Ver.1.3」というシェアウェアがサポートしていることが判明した。 このツールはNAKA氏のページ(注:回線が細いようなので,ソフト本体はVectorなどからダウンロードしたほうがいいだろう)で配布されている。このツールを使ったiメロディデータの作り方は,付属ドキュメントを参照していただきたい。 このツールを使いN503i用にPCMサウンドを含むiメロディデータを作成し,サンプルアプリを作ってみた。リストはここにあるのでダウンロードしてほしい。また,503iを所有している人は,ここでダウンロードできる。ただし,N503i以外の機種で正常に再生できるかどうか保証の限りではない。試してみていただきたい。
関連記事 [米田 聡,ITmedia] Copyright © ITmedia, Inc. All Rights Reserved. モバイルショップ
最新スペック搭載ゲームパソコン
最新CPU搭載パソコンはドスパラで!!
FEED BACK |