2011-10-01 6 views
5

Estoy haciendo una aplicación en el iPhone y necesito una forma de detectar la melodía de los sonidos que entran por el micrófono. (Es decir, A #, G, C ♭, etc.) Supuse que usaría AVAudio pero realmente no lo sé y no puedo encontrar nada en la documentación ..AVAudio detectar nota/tono/etc. iPhone xcode objetivo-c

¿Algún auxilio?

Respuesta

4

Las notas musicales no son más que frecuencias específicas de sonido. Necesitará una forma de analizar todas las frecuencias en su señal de entrada, y luego encontrará una forma de aislar las notas individuales.

La búsqueda de frecuencias en una señal de audio se realiza utilizando el Fast Fourier Transform (FFT). Hay un montón de código fuente disponible en línea para calcular la FFT a partir de una señal de audio. En particular, oScope ofrece una solución de código abierto para el iPhone.

Editar:Pitch detection parece ser el nombre técnico de lo que está tratando de hacer. Las respuestas a un similar question aquí en SO pueden ser útiles.

+3

El tono no es lo mismo que la frecuencia. Una nota puede tener un fundamental faltante. – hotpaw2

+0

@ hotpaw2: Interesante. Muestra cuánto sé sobre la música ';)'. En caso de que alguien más no tenga clara la diferencia, el siguiente artículo lo explica muy bien: http://emusician.com/tutorials/emusic_pitch_vs_frequency/ –

+0

¡Gracias por la información! –

1

Como dijo @ e.James, usted está buscando encontrar el tono de una nota, se llama detección de tono. Hay un montón de recursos en CCRMA, Universidad de Stanford para lo que está buscando. Solo google para detección de tono y verá una brillante colección de algoritmos. En cuanto a querer encontrar la FFT de bloques de muestras de audio, puede usar la función FFT incorporada de Accelerate Framework (vea this y this) o use MoMu toolkit. El uso de MoMu tiene el beneficio de sus funciones que descomponen la secuencia de audio en muestras para usted y la fácil aplicación de la FFT usando sus propias funciones.

2

No hay nada incorporado en las API de iOS para la estimación del tono musical. Deberá codificar su propia función DSP. Las FFT en el marco Accelerate le darán información de frecuencia espectral de una forma de onda muestreada PCM, pero la frecuencia es diferente del tono psico-perceptual.

Existen muchas maneras buenas y malas de estimar la frecuencia y el tono. Tengo una larga lista parcial de varios métodos de estimación en mi DSP resources web page.

Puede ver la aplicación de muestra aurioTouch de Apple para obtener un ejemplo de cómo obtener la entrada de audio del dispositivo iOS y mostrar su espectro de frecuencia.

+0

Oye, ¿tienes un enlace web para la aplicación audioTouch? – Ravi

+0

Busque en Recursos de desarrollo: código de muestra en developer.apple.com – hotpaw2

+0

En realidad se llama [aurioTouch] (https://developer.apple.com/library/ios/samplecode/aurioTouch/Introduction/Intro.html) – Chris

Cuestiones relacionadas