2012-04-30 14 views
6

He estado leyendo sobre FFT y detección de tono desde hace un tiempo, pero tengo problemas para reconstruirlo todo.FFT Detección de tono para iOS con Accelerate Framework?

He descubierto que el framework Accelerate es probablemente la mejor manera de hacerlo, y he leído el código de ejemplo de Apple para ver cómo usarlo para las FFT. ¿Cuál es la información de entrada para la FFT si quisiera ejecutar la detección de tono en tiempo real? ¿Acabo de pasar la transmisión de audio desde el micrófono? ¿Cómo haría esto?

Además, después de obtener la salida FFT, ¿cómo puedo obtener la frecuencia de eso? He estado leyendo en todas partes y no encuentro ejemplos ni explicaciones sobre esto.

Gracias por cualquier ayuda.

+1

posible duplicado de [FFT en iPhone para ignorar el ruido de fondo y encontrar tonos más bajos] (http://stackoverflow.com/questions/7181630/fft-on-iphone-to-ignore-background-noise-and-find-lower-pitches) –

+0

Esta pregunta contiene mucha información detallada, me ayudó mucho cuando necesité implementar una función de extracción de tono . [Uso de Apple FFT y acelerar Framework] (http://stackoverflow.com/questions/3398753/using-the-apple-fft-and-accelerate-framework) – FiddleMeRagged

Respuesta

6

La frecuencia y el tono no son lo mismo - la frecuencia es una cantidad física, el tono es un percepto psicológico - son similares, pero hay diferencias importantes que pueden importarle o no, según el tipo de instrumento para lo cual estás tratando de medir el tono.

Necesita leer un poco sobre los diversos algoritmos de detección de tono (y sobre el significado del tono en sí), decidir qué algoritmo desea usar y solo luego establecerlo para implementarlo. Consulte this Wikipedia page para obtener una buena descripción de pitch y detección de tono (tenga en cuenta que puede usar FFT para los métodos de dominio de frecuencia y basados ​​en la autocorrelación).

cuanto al uso de la FFT para identificar los picos en un espectro y sus frecuencias asociadas, hay muchas preguntas y respuestas relacionadas con esto en ya SO, véase por ejemplo: How do I obtain the frequencies of each value in an FFT?

3

tengo un ejemplo de implementación de un Autocorrelación función disponible en línea para iOS 5.1. Consulte this post para obtener un enlace a la implementación Y funciones sobre cómo encontrar la nota más cercana y cómo crear una cadena que representa el tono (A, A #, B, B #, etc.)

Mientras que la FFT es muy útil en muchas aplicaciones, puede que no sea la más precisa si intentas hacer una detección de tono simple. (Puede ser tan preciso, pero tiene que tratar con números complejos para hacer muchos cálculos de fase)

Cuestiones relacionadas