電子ガジェットいろいろ

電子系のガジェットやアプリ開発等の話題を書いてます

iPhoneSDKで効果音の再生方法

効果音等5秒以下の音声ファイルはAudio Servicesで簡単に扱うことができますが、5秒を超えるものは、Audio Queue Servicesを使うことになり、少々ややこしくなります。
ここでは、5秒以下の音声ファイルは簡単に扱う方法を説明します。

(5秒以上の音声ファイルを再生する方法はこちら『iPhoneSDKでサウンドの簡単な再生方法』)

扱えるファイル形式は、AIFF, CAF, WAV ファイルです。

例として、プロジェクトのResourcesに追加したbell.wavファイルを再生する手順を説明します。

フレームワークの追加

プロジェクトのFrameaworksへ"AudioToolbox.framework"を追加します。

インポート文の追加

サウンドを扱うファイルに"AudioToolbox/AudioServices.h"のインポート文を追加する。

#import <AudioToolbox/AudioServices.h>

システムIDの定義

ファイルを読み込み、SystemSoundID型で任意のIDを定義します。
再生したいファイルが複数ある場合は、ファイル毎にIDを定義します。

SystemSoundID idBell;
furl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"bell" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((CFURLRef)furl, &idBell);

再生

音声ファイルを再生したい場所でIDを指定して再生します。

AudioServicesPlaySystemSound(idBell);

AudioServicesPlaySystemSoundは実行後、再生の終了を待たずに次の文を実行しますので、同時に複数再生することができます。

メモリの解放

最後に(dealloc等で)メモリを解放します。

AudioServicesDisposeSystemSoundID(idBell);

iPhone Fan 2009 Spring (MYCOMムック)

iPhone Fan 2009 Spring (MYCOMムック)