今回はオーディオ再生処理を学習した。iOSでオーディオを再生させるのに、下記のフレームワークがあるみたい。
- Media Player
- AV Foundation
- Audio Tool Box / Audio Unit
- OpenAL
この中でAV Foundationフレームワークを使ったサンプルを作った。参考書の音声のサンプルデータはGarageBandで作ったとの記載があったので、自分も試しに作ってみた。
最初のプロジェクト作成で”Loops”を選び、GarageBandの素材を選び、メニューの”Share”->”Export Song to Disk…”で.aifファイルを出力した。
多重再生させるためにCAF(Core Audio Format)形式のデータを用意する必要があり、Macでは標準で”afconvert”(/usr/bin/afconvert)が入ってるとのこと。
afconvert -f ファイルフォーマット -d データフォーマット@サンプリングレート 入力ファイル 出力ファイル
afconvert -f caff -d ima4@22050 ./sound1.aif ./sound1.caf
// BGMの再生 - (IBAction)playBGM:(id)sender { // BGM用のオーディオプレーヤーが作成されていなかったら作成する if (!self.bgmPlayer) { // BGMのファイルへのURLを取得する NSBundle *bundle = [NSBundle mainBundle]; NSURL *fileURL; fileURL = [bundle URLForResource:kBGMName withExtension:@"caf"]; // オーディオプレーヤーを作成する self.bgmPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:NULL]; } // リピートの設定 if (self.repeatSwitch.on) { self.bgmPlayer.numberOfLoops = -1; // 停止するまでリピート } else { self.bgmPlayer.numberOfLoops = 0; // リピートしない } // BGMを再生する [self.bgmPlayer play]; } // 効果音の再生 - (void)playSound:(NSString *)name { // 指定されたサウンドファイルへのURLを取得する NSBundle *bundle = [NSBundle mainBundle]; NSURL *url; url = [bundle URLForResource:name withExtension:@"caf"]; // URLが取得できなかったらなにもしない if (!url) { return; } // オーディオプレーヤーを作成する AVAudioPlayer *player; player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL]; // このビューコントローラをデリゲートする [player setDelegate:self]; // 再生する [player play]; // このままにしておくと、作成したplayerが解放されてしまうのでプロパティsoundArrayに入れておく [self.soundArray addObject:player]; }
Chapter04-015までやった。
参考サイト
iPhoneソーシャルゲーム開発
posted with amazlet at 12.07.12
林 晃
シーアンドアール研究所
売り上げランキング: 245996
シーアンドアール研究所
売り上げランキング: 245996
関連エントリー