iOSゲーム本”iPhoneソーシャルゲーム開発”の写経6:音声の再生

Screen Shot 2012-07-21 at 11.20.53
今回はオーディオ再生処理を学習した。iOSでオーディオを再生させるのに、下記のフレームワークがあるみたい。

  • Media Player
  • AV Foundation
  • Audio Tool Box / Audio Unit
  • OpenAL

この中でAV Foundationフレームワークを使ったサンプルを作った。参考書の音声のサンプルデータはGarageBandで作ったとの記載があったので、自分も試しに作ってみた。

Screen Shot 2012-07-21 at 10.05.36 Screen Shot 2012-07-21 at 10.18.06
最初のプロジェクト作成で”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ソーシャルゲーム開発
林 晃
シーアンドアール研究所
売り上げランキング: 245996

関連エントリー

  1. iOSゲーム本”iPhoneソーシャルゲーム開発”の写経9:Game Centerでの認証
  2. iOSゲーム本”iPhoneソーシャルゲーム開発”の写経8:動画の再生
  3. iOSゲーム本”iPhoneソーシャルゲーム開発”の写経5:アニメーション処理
  4. iOSゲーム本”iPhoneソーシャルゲーム開発”の写経3:storyboardでの画面作成
  5. iOSゲーム本”iPhoneソーシャルゲーム開発”の写経7:音声再生処理の組込み
This entry was posted in 未分類 and tagged , , . Bookmark the permalink.