ドムドムその13:効果音を鳴らそう

サルでき.jp > 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) > ドムドムその13:効果音を鳴らそう

2009/10/30 09:00 投稿先 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) 投稿者 カワサキ タカシ

うやくここまで来ました。ざっくり作るよ最終章。

効果音を鳴らそうのコーナーです。
これでだいたい当初想定していた機能ができあがります。
ドムドムその1:設計図を書いてみよう

ほんとはあれもこれもそれもだいたい全部直したいところですが、

「売り物作らないとApp Storeへの公開手順が紹介できないでしょ?」
という天の声が聞こえますので、ほどほどで仕上げに移らせていただきます。

さて、残った大きな山、効果音なんですけど。
作ってみて一言。

「コードは短いけど難易度はスーパー」でした。

コレはもしかしたらつべこべ言わずに丸暗記パターンかもしれません。

ご一読いただいて、
難しいようでしたら暗記しちゃってください。

ではでは。参ります。

ファイル入手
ドムドムその13:効果音を鳴らそう

まずは効果音の元となるサウンドファイルを手に入れなければなりません。

・ご自身で制作できる方は制作を
・財力がある方は素材集の購入を
・お時間のある方はフリー素材の検索を

いずれかの方法でぴったりな効果音を入手してください。

私は今回はこのサイトのファイルを利用させていただきました。
効果音素材

iPhoneの対応しているオーディオフォーマットは、
AAC、保護されたAAC、MP3、MP3 VBR、Audible、Apple Lossless、AIFF(CAF)、WAV

書いてありますので、WAVはOKですね。

響き渡るクリアな音色、Tsuzumiサウンドをチョイスです。

あれ?ドムドムじゃなかったっけ?

グループ追加、ファイル読み込み
ドムドムその13:効果音を鳴らそう
<クリックで拡大>

ファイルを入手しただけではiPhoneからは見えませんので、
Xcode上に新しいグループ、Soundsグループ※を追加してください。
※名前は適当でOKです。

グループを足したら「既存ファイル」を読み込みます。
グループの下に効果音ファイルが表示されたらOKです。

(しれっとImageグループの場所もResourcesの下に移しましたよ。素材は素材の中に。)

domdomViewController.h
ドムドムその13:効果音を鳴らそう
<クリックで拡大>

次に今まで無かった展開。フレームワークを追加します。

Frameworksグループを右クリックして「既存のフレームワーク」を選択、
AudioToolbox.frameworkを追加してください。

で、
そのままヘッダーファイルの最初に
#import <AudioToolbox/AudioServices.h>
インポートします。

効果音は常に使うわけではないので、
使う必要が出た時に自分で組み込めってことみたいですね。

domdomViewController.h
ドムドムその13:効果音を鳴らそう
<クリックで拡大>

インポートができたら、
ヘッダーに効果音用のインスタンス変数を宣言しておきます。

SystemSoundID soundID;

domdomViewController.m
ドムドムその13:効果音を鳴らそう
<クリックで拡大>

で、ここが最難関。
効果音を鳴らすときの準備です。
準備なのでビューがロードされた直後、つまり viewDidLoad に追加です。

NSString *path = [[NSBundle mainBundle] pathForResource:@”Tsuzumi” ofType:@”wav”];
NSURL *url = [NSURL fileURLWithPath:path];
AudioServicesCreateSystemSoundID((CFURLRef)url, &soundID);

とりあえず理解しておくべきポイントは、ファイル名の指定方法ですね。

pathForResource:@”Tsuzumi” ofType:@”wav”

この形で「名前はTsuzumi」「拡張子はwav」と書いています。

1行目から読むと、
Tsuzumi.wavが置いてある場所をバンドル(ファイルの塊)から取得。
ファイルパスをURLの形式に変換。
URLをCFURLRefでキャスト(型変換)してオーディオファイルを読み込み、
成功したらsoundIDにポインタを渡す。

うーん。わかるようなわからないような。

処理が枝分かれしていませんので、
お作法、と思ってこのまま覚えてしまうのもアリだと思います。

ここまでが下準備です。

domdomViewController.m
ドムドムその13:効果音を鳴らそう
<クリックで拡大>

後は効果音を鳴らしたいところに下記コードを仕込めばOKです。

AudioServicesPlaySystemSound(soundID);

今回は壁にぶつかった時に音を鳴らしますので、
4方の壁との衝突判定時に入れておきましょう。

書けましたか?

それでは「ビルドして進行」してみましょう!

ポン!
ポン!
ポン!
ポン!
ポン!
ポン!

いよぉっ!

お疲れさまでした!
これでドムドム、ざっくり一通り完成です!

まずはこれまでの道程を思い浮かべて、勝利の美酒に酔いしれましょう!

ドムドムその13:効果音を鳴らそう

関連する記事:


Advertisement