6

私はこのチュートリアルを見つけました、そしてそれは良いですが、私にはうまくいきません!

コードは次のとおりです。

- (void)listenForBlow:(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 (lowPassResults > 0.95)
        NSLog(@"Mic blow detected");
 //change the background color e.g !
}

コンソールに、次のような nslog 結果が表示されます (ボーリングなしで!):

2010-04-11 23:32:27.935 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:27.965 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:27.995 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.026 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.055 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.086 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.115 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.145 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.175 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.205 MicBlow[2358:207] Mic blow detected
2010-04-11 23:32:28.236 MicBlow[2358:207] Mic blow detected

私はこの値を変更します:

 if (lowPassResults < 0.95)

if (lowPassResults > 0.95)

それはうまくいくようです!しかし、何も変更しません。もう一度、背景を変更するコードを配置すると、私のコードは背景を変更しますが、ボウリングはありません!! どうしたの ?

4

1 に答える 1

3

私もそれを使用していますが、私にとってはうまくいきます。と比較するには、値をいじる必要がありlowPassResultsます。これが私のコードです:

- (void)levelTimerCallback:(NSTimer *)timer {
    [レコーダー updateMeters];

    const double ALPHA = 0.05;
    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;  
    //NSLog(@"%f", lowPassResults);
    もし (lowPassResults > 0.55)
        NSLog(@"マイクブロー検出");
}
于 2011-01-24T11:10:49.150 に答える