2

このアプリRoboStrobeはどのようにビートを検出するのだろうと思っていました。「AVAudioRecorder」を使用してマイクを聞いて騒音計を取得していますが、レベルとビートを計算してメソッドを起動する適切な方法がわかりません。

これが私が今していることです:

Update メソッドを呼び出します。

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];
}
}
4

1 に答える 1

2

ビート検出には、重要なオーディオ処理 (くし形フィルター、オンセット検出など) が必要です。ライブラリを使用する必要があります。可能な候補は次のとおりです。

しかし、他にもたくさんあります。また、StackOverflow には関連する多くの質問があります。

于 2013-10-05T14:32:29.417 に答える