
今回はオーディオ再生処理を学習した。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
関連エントリー
