2015年

6月

12日

Objective-C SoundEffect

iPhone アプリで効果音のような短い音を鳴らす方法です。
再生できる音は 30 秒以下の AIFF, CAF, WAV ファイルです。シュミレータでは MP3 も鳴らせましたが実機では鳴らないようです。同時に複数鳴らすことも可能です。その場合は音声ファイル毎に SystemSoundID が必要です。

Frameworks のフォルダに AudioToolbox.framework を追加が必要です。

ViewController.m

#import <AudioToolbox/AudioToolbox.h>

#import "ViewController.h"


@interface ViewController () {

    

    SystemSoundID _ssId01;

    SystemSoundID _ssId02;

}


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    [self doReady];

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


// [#01]ボタン押した時

- (IBAction)play01:(id)sender {

    

    NSLog(@"サウンド3");

    AudioServicesPlaySystemSound(_ssId01);

    

}


// [#02]ボタン押した時

- (IBAction)play02:(id)sender {

    

    NSLog(@"サウンド4");

    AudioServicesPlaySystemSound(_ssId02);

    

}


// [振動]ボタン押した時

- (IBAction)vibtate:(id)sender {

    

    NSLog(@"サウンド5");

    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

    

}


// 準備処理

- (void)doReady {

    

    NSLog(@"サウンド");

    NSBundle *bnd = [NSBundle mainBundle];

    

    // 設定#01

    NSURL *url01 = [bnd URLForResource:@"mp01"

                         withExtension:@"mp3"];

    

    CFURLRef urr01 = (CFURLRef) CFBridgingRetain(url01);

    AudioServicesCreateSystemSoundID(urr01, &_ssId01);

    CFRelease(urr01);

    

    // 設定#02

    NSURL *url02 = [bnd URLForResource:@"mp02"

                         withExtension:@"mp3"];

    

    CFURLRef urr02 = (CFURLRef) CFBridgingRetain(url02);

    AudioServicesCreateSystemSoundID(urr02, &_ssId02);

    CFRelease(urr02);

    

    NSLog(@"サウンド2");


}


@end

GitHub SoundEffect

  

目 次