我想知道这个应用程序 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];
}
}
最佳答案
节拍检测需要重要的音频处理(梳状滤波器、起始检测等)。您将需要为此使用一个库。可能的候选人是:
但是还有更多。 StackOverflow 上有很多相关问题。
关于iphone - 从 iPhone 麦克风检测节拍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19194995/