« iPhoneアプリ「Slotカウンタ」、不正落ちの件 | メイン | 文字列の変換について »

音楽と、効果音の再生

BGMの再生と、効果音の再生方法について。

とりあず、BGMは *.mp3、効果音は *.wav を用意して
リソースとしてプロジェクトに追加しておきます。


◎ BGMの再生

#include <AVFoundation/AVFoundation.h>

BGMのロード

AVAudioPlayer* mBgm;
NSString* bgmpath = [[NSBundle mainBundle]
            pathForResource:@"bgm1" ofType:@"mp3"];
NSURL* url = [NSURL fileURLWithPath:bgmpath];
mBgm = [[AVAudioPlayer alloc]
              initWithContentsOfURL:url error:nil];
mBgm.numberOfLoops = -1;

再生と停止

[mBgm play];
~~
[mBgm stop];

停止したものをもう一回、先頭から再生するには、
currentTimeで再生位置を戻してからplayします。

mBgm.currentTime = 0.0f; // 再生位置の指定
[mBgm play];

最後に、ループ回数ですが、
numberOfLoopsで指定できます。
注意すべきは、-1指定で無限ループとなりますが、
回数を指定する場合は、0~でなく、1~の指定であるってとこです。
これでちょいハマリしました。

// 無限ループの指定
mBgm.numberOfLoops = -1;
// 1回ループの指定
mBgm.numberOfLoops = 0;
// 2回ループの指定
mBgm.numberOfLoops = 1;


◎ 効果音の再生

AudioToolboxを使います。

#include <AudioToolbox/AudioToolbox.h>

ファイルから読み込み

SystemSoundID mSound = 0;
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundUrl = CFBundleCopyResourceURL(
       mainBundle, CFSTR("se1"), CFSTR("wav"), NULL );
AudioServicesCreateSystemSoundID( soundURL, &mSound );

再生します。

AudioServicesPlaySystemSound( mSound );

5秒くらいの効果音しか再生できないようです。

トラックバック

このエントリーのトラックバックURL:
http://www.fou.ne.jp/aoablog/mt-tb.cgi/499

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

(※SPAM投稿を防ぐため、画像に書かれている文字を入力してください。)

About

2009年10月07日 02:08に投稿されたエントリーのページです。

ひとつ前の投稿は「iPhoneアプリ「Slotカウンタ」、不正落ちの件」です。

次の投稿は「文字列の変換について」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35