从iPhone麦克风中检测节拍

时间:2013-10-05 07:02:13

标签: iphone ios objective-c

我想知道这个应用RoboStrobe如何检测节拍。我正在使用“AVAudioRecorder”来收听麦克风并获得声级计,但我不知道正确的方法来计算水平和节拍并解雇我的方法。

以下是我现在所做的事情:

调用更新方法:

levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.05 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];

我的更新方法

-(void)update
{
[recorder updateMeters];


const double ALPHA = 0.05;
double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;

double scale = lowPassResults * 5;
NSLog(@"Result = %f",scale);
if (scale>4.5) {
    [[UIScreen mainScreen] setBrightness:1.0];
    NSLog(@"HEAVY Scale = %f",scale);
    [self turnTorchOn:YES];
    [self performSelector:@selector(off) withObject:Nil afterDelay:0.4];
}

else
{
    [self turnTorchOn:NO];
    [[UIScreen mainScreen] setBrightness:0.1];
}
}

1 个答案:

答案 0 :(得分:2)

节拍检测需要非平凡的音频处理(梳状滤波器,起始检测等)。你会想要使用它的库。可能的候选人是:

但还有更多。 StackOverflow上有很多相关的问题。