AVAudioRecorder mediante acelerar FFT en frecuencia – EJECUCIÓN

Mi objective principal: encontrar la frecuencia de los ruidos que se tiran a través de AVAudioRecorder. He seguido esto:

http://www.ehow.com/how_12224909_detect-blow-mic-xcode.html

He leído muchas preguntas sobre cómo preguntar cómo detectar la frecuencia. La mayoría de esas respuestas dicen: "¡Utiliza FFT!" y luego la pregunta que les preguntan dice: "¡Oh, genial!".

Mi pregunta es, ¿cómo se obtiene de aquí?

- (void)levelTimerCallback { [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 > sensitivitySlider.value) { NSLog(@"Sound detected"); //What goes here so I can spit out a frequency? } } 

De alguna manera mágicamente usa FFT … (usaré accelerate.h),

Y terminar con "The frequency = 450.3"?

Si alguien me pudiera mostrar el código real que utilizaría para

  1. Conecte el sonido de AVAudioRecorder a Accelerate y
  2. Cómo convertir el resultado en una frecuencia …

Eso sería muy apreciado.

Gracias por adelantado.

Nada "va allí", ya que la API de AVRecorder no se conecta al marco de Accelerate. En cambio, debe utilizar una API totalmente diferente, la queue de audio o la API de la unidad de audio RemoteIO, para capturar la input de audio, una disposition de código completamente diferente, como esperar las devoluciones de llamada para get sus datos, administrar el tamaño de búfer para get matrices de datos de la tamaño apropiado para alimentar un FFT, luego conozca suficiente DSP para postprocesar los resultados de FFT para el tipo particular de medida de frecuencia para el que está buscando.