2010-04-11 16 views
5

encontré esto tutorial, y está bien, ¡pero no funciona para mí!Detectar el golpe en el micrófono y hacer algo

Aquí está el código:

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

en la consola Muéstrame el reseult NSLog así (sin ningún tipo de bolos!):

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 

puedo cambiar este valor:

if (lowPassResults < 0.95) 

a

if (lowPassResults > 0.95) 

¡así que parece que funciona! pero no responde nada, de nuevo si pongo el código de cambio de fondo, mi código cambia de fondo pero sin ningún boliche !! ¿cuál es el problema?

+2

"Otra vez si pongo el código de cambio de fondo, mi código cambia el fondo pero sin ningún boliche" Esto no tiene ningún sentido en absoluto. – Timmmm

+0

está trabajando en el simulador pero no funciona en el teléfono ?? ¿Hay alguna configuración para hacer? – slaveCoder

+0

@zoul Momi cualquier idea – slaveCoder

Respuesta

3

Lo estoy usando también y me funciona. Solo tiene que jugar con el valor para compararlo con lowPassResults. Aquí está mi código:

 
- (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 está funcionando @ender. Por favor puedes guiarme El mismo problema viene. sin soplar, cambie el color bg –

Cuestiones relacionadas