2010-04-11 17 views
5

ho trovato questo tutorial, ed è buono, ma non funziona per me!Rileva colpo nel microfono e fare qualcosa

ecco il codice:

- (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 ! 
} 

nella console mi mostra il reseult NSLog come questo (senza alcun bowling!):

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 

a cambiare questo valore:

if (lowPassResults < 0.95) 

a

if (lowPassResults > 0.95) 

quindi sembra funzionare! ma non cambia niente, di nuovo se metto il codice che cambia in background, il mio codice cambia sfondo ma senza bowling !! qual è il problema?

+2

"di nuovo se inserisco il codice di modifica dello sfondo, il mio codice cambia sfondo ma senza alcun bowling" Questo non ha assolutamente senso. – Timmmm

+0

funziona in simulatore ma non funziona nel telefono ?? c'è qualche impostazione da fare ?? – slaveCoder

+0

@zoul Momi qualsiasi idea – slaveCoder

risposta

3

Lo sto usando anche io e funziona per me. Devi solo giocare con il valore per confrontarlo con lowPassResults. Ecco il mio codice:

 
- (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; 
    //NSLog(@"%f", lowPassResults); 
    if (lowPassResults > 0.55) 
     NSLog(@"Mic blow detected"); 
} 
+0

no non funziona @ender. Per favore, puoi guidarmi. Lo stesso problema sta arrivando. senza soffiare cambia il colore di bg –

Problemi correlati