顯示具有 音效控制實作 標籤的文章。 顯示所有文章
顯示具有 音效控制實作 標籤的文章。 顯示所有文章

2012年2月9日 星期四

用AVAudioRecorder感應聲音

這是一個還沒有完成的app, 這2年其實還有不少寫到一半就荒癈的程式,有時侯是靈感沒了,有時侯是突然有別的想法就全心投入另一件事了,有時侯是突然接到案子,有錢賺的事當然優先,所以就丟下做到一半的事。當初想寫這個app是因為我姐剛生了小baby, 我就想寫一個app是可以感應到baby的哭聲,然後就會開始放安撫小孩的音樂。因為當初我女兒小時侯有一個類似的玩具,就是小孩哭的時侯他會自已播音樂,我覺得iphone應該也能做到同樣的功能。


當初我是設計了白天模式與夜晚模式可以切換,白天模式(其實也不一定是白天用,就是手動模式)可以自已選曲,自已手動啟動,就像是個音樂盒,大人可以手動播音樂給baby聽。夜間模式就是大家都睡了的時侯,他會自動偵測是不是有baby的哭聲,如果偵測到了,就會自已播放音樂安撫baby。

怎麼去設定感應的敏感度下次再談,等一下要出門去吃喜酒,先把怎麼設感應聲音的功能分享一下,免得又忘了。

在.h先import AVFoundation

#import <AVFoundation/AVFoundation.h>

然後宣告

AVAudioRecorder *recorder;

在.m的ViewDidLoad裡init recorder

recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];

設定一個NSTimer固定頻率去偵測有沒有哭聲

-(void)levelTimerCallback:(NSTimer *)timer{
[recorder updateMeters];
const double ALPHA = 0.05;
  double peakPowerForChannel = pow(10, (0.05 *[recorder peakPowerForChannel:0]));
  lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;

  if (pause = NO) {
  if (lowPassResults > senseValue) {
  NSLog(@"baby cry detected");
  [playSong play];
  playing = YES;
  [playStatus setImage:[UIImage imageNamed:@"StopIcon.png"]];
  }
  }
}

先出門了,還沒完,下次再補...sorry....

2012年1月13日 星期五

用AVAudioPlayer播放音效

在.h的宣告部份
#import <AVFoundation/AVFoundation.h> //先import AVFoundation後才能使用這個功能

AVAudioPlayer *titleBGM; //宣告一個新的聲音叫titleBGM(自已隨便取)是屬於AVAudioPlayer型式

- (void) playBGM; //宣告播放playBGM的功能

在.m的實作部份
//在init的時侯先設定titleBGM要播放音效檔
-(id)init{
    
    if (self = [super init]) {
        //下面紅字這一段是設定titleBGM
        NSBundle *bundle = [NSBundle mainBundle];
        NSString *path = [bundle pathForResource:@"menu" ofType:@"wav"];
        NSURL * url = [NSURL fileURLWithPath:path];
        titleBGM =[[AVAudioPlayer alloc] initWithContentsOfURL:url
                                                         error:nil];
        self->titleBGM.delegate = self;
    }
    return self;
}

//實作playBGM
- (void) playBGM{
    
    [titleBGM play];
}

//播放的使用方法

[titleBGM play];

2012年1月10日 星期二

用systemSoundID播放音效

在.h的宣告部份
#import <AudioToolbox/AudioToolbox.h> //先import AudioToolbox後才能使用這個功能

SystemSoundID magicSound; //宣告一個新的聲音叫magicSound(自已隨便取)是屬於SystemSoundID型式

-(void)playMagicSound; //宣告播放magicSound的功能

在.m的實作部份
//在init的時侯先設定magicSound要播放音效檔
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

//下面紅字這一段是設定magicSound
NSURL *magicUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"magic-chime" ofType:@"wav"]];
OSStatus magicError = AudioServicesCreateSystemSoundID((__bridge CFURLRef)magicUrl, &magicSound);
if(magicError){
NSLog(@"error:%ld",magicError);
}
    }
    return self;
}

//實作playMagicSound
-(void)playMagicSound{
AudioServicesPlaySystemSound(magicSound);
}

//播放的使用方法

[self playMagicSound];