Pregunta

Estoy interesado en la determinación de la clave musical de una muestra de audio. ¿Cómo lo haría (o podría) un algoritmo de ir a tratar de aproximar la clave de una muestra de audio musical?

Antares Autotune y Melodyne son dos piezas de software que hacen este tipo de cosas.

Puede alguien dar un poco de explicación de un laico sobre cómo funcionaría? Para matemáticamente deducir la clave de una canción mediante el análisis del espectro de frecuencias para las progresiones de acordes, etc.

Este tema me interesa mucho!

Editar -. Fuentes brillantes y una gran cantidad de información que se encuentra desde todos los que contribuyeron a esta pregunta

Especialmente a partir de:. The_mandrill y Daniel Brückner

¿Fue útil?

Solución

vale la pena estar consciente de que este es un problema muy complicado y si usted no tiene un fondo en el procesamiento de la señal (o un interés en aprender sobre él), entonces usted tendrá un tiempo muy frustrante por delante de usted. Si usted está esperando para lanzar un par de FFT en el problema entonces no va a llegar muy lejos. Espero que sí tienen el interés, ya que es una zona muy fascinante.

Inicialmente se plantea el problema del reconocimiento de paso, que es bastante fácil de hacer por simples instrumentos monofónicos (por ejemplo, voz) utilizando un método como autocorrelación o espectro suma de armónicos (por ejemplo, ver enlace Paul R). Sin embargo, a menudo se encuentra que esto da resultados erróneos: que conseguirá a menudo la mitad o el doble del terreno de juego que estabas esperando. Esto se llama pitch período de duplicación o errores de octava y ocurre esencialmente debido a que la FFT o de autocorrelación tiene una suposición de que los datos tienen características constantes en el tiempo. Si usted tiene un instrumento tocado por un ser humano que siempre habrá alguna variación.

Algunas personas se acercan al problema de la tecla reconocimiento por ser una cuestión de hacer el reconocimiento de paso primero y luego encontrar la clave de la secuencia de lanzamientos. Este es muy difícil si usted tiene otra cosa que no sea una secuencia de lanzamientos monofónico. Si usted tiene una secuencia de tonos monofónicos a continuación, todavía no es un método bien definido para determinar la clave: cómo tratar con notas cromáticas, por ejemplo, o la determinación de si es mayor o menor. Así que había necesidad de usar un método similar al de Krumhansl clave algoritmo hallazgo .

Así que, dada la complejidad de este enfoque, una alternativa es buscar en todas las notas que se tocan al mismo tiempo. Si tiene acordes, o más de uno instrumentos, entonces vamos a tener una rica sopa espectral de muchos sinusoides jugando a la vez. Cada nota individual se compone de múltiples armónicos de una frecuencia fundamental, de modo A (a 440 Hz) estará compuesta por sinusoides a 440, 880, 1320 ... Por otra parte, si usted juega un E (Ver este diagrama para emplazamientos), entonces eso es 659.25Hz que es casi una vez y media la de una realidad (1.498). Esto significa que cada tercera armónica de A coincide con cada segundo armónico de E. Esta es la razón por la que los acordes suenan bien, ya que comparten los armónicos. (Dicho sea de paso, la única razón de que la armonía occidental funciona se debe al capricho del destino que la duodécima raíz de la 2 a la potencia 7 es casi 1,5)

Si se miraba más allá de este intervalo de un quinto a mayores, menores y otros acordes a continuación, encontrará otras relaciones. Creo que muchas de las técnicas clave hallazgo enumerar estas proporciones y luego llenar un histograma para cada pico espectral en la señal. Así, en el caso de la detección de la A5 acorde que se esperaría encontrar picos a 440, 880, 659, 1320, 1760, 1977. Para B5 que va a ser 494, 988, 741, etc. Por lo tanto crear un histograma de frecuencias y para cada pico sinusoidal en la señal (por ejemplo del espectro de potencia FFT) incrementar la entrada histograma. Luego, para cada cifra clave A-G hasta los contenedores en el histograma y los que tienen el mayor número de entradas es más probable que sea su clave.

Eso es sólo un enfoque muy simple, pero puede ser suficiente para encontrar la clave de un acorde strummed o sostenida. También tendría que cortar la señal en intervalos pequeños (por ejemplo, 20 ms) y analizar cada uno de ellos para construir una estimación más robusta.

EDIT:
Si usted quiere experimentar entonces me gustaría sugerir la descarga de un paquete como Octave o CLAM que hace que sea más fácil visualizar los datos de audio y ejecutar FFT y otras operaciones.

Otros enlaces de interés:

  • Mi tesis doctoral sobre algunos aspectos de reconocimiento de tono - la matemáticas es un poco pesado, pero va capítulo 2 es (espero) toda una introducción accesible a los diferentes enfoques de modelado de sonido musical
  • http://en.wikipedia.org/wiki/Auditory_scene_analysis - la escena auditiva de Bregman análisis que aunque no estamos hablando de la música tiene algunos hallazgos fascinantes sobre cómo percibimos escenas complejas
  • Dan Ellis ha hecho algunos grandes artículos de este y áreas similares
  • Keith Martin tiene algunas interesantes acerca

Otros consejos

He trabajado en el problema de la transcripción de grabaciones de CD polifónicos en puntuaciones durante más de dos años en la universidad. El problema es notoriamente difícil. Los primeros trabajos científicos relacionados con la parte posterior fecha problema de la década de 1940 y hasta hoy no hay soluciones robustas para el caso general.

Todo el supuesto básico de que por lo general no son exactamente lee bien y la mayoría de ellos son lo suficientemente malo que se vuelven inutilizables para todo, pero los escenarios muy sencillos.

Las frecuencias de los armónicos son no múltiplos de la frecuencia fundamental - hay efectos no lineales de manera que los altos parciales se alejan de la frecuencia esperada - y no sólo unos pocos Hertz; no es raro encontrar el séptimo parcial donde se espera que el sexto.

transformaciones de Fourier hacer no juego agradable con análisis de audio debido a que las frecuencias de uno está interesado en están espaciados logarítmicamente mientras que los rendimientos de transformación de Fourier frecuencias linealmente espaciados. A bajas frecuencias que necesita una resolución de frecuencia alta para separar campos de vecino - pero esta mala resolución temporal rendimientos y se pierde la capacidad de las notas separadas reproducen en rápida sucesión

.

hace una grabación de audio (probablemente) no contienen toda la información necesaria para reconstruir la partitura. Una gran parte de nuestra percepción de la música sucede en nuestros oídos y el cerebro. Es por eso que algunos de los sistemas más exitosos son los sistemas expertos con grandes depósitos de conocimiento acerca de la estructura de la música (occidental) que se basan únicamente a una pequeña porción de procesamiento de señales para extraer información de la grabación de audio.

Cuando estoy de vuelta a casa voy a mirar a través de los documentos que he leído y recoger los 20 o 30 la mayoría de los relevantes y añadirlos aquí. Realmente recomiendo leerlos antes de decidirse a poner en práctica algo -. Como se dijo antes la mayoría de los supuestos comunes son algo incorrecto y que realmente no quiero volver a descubrir todas estas cosas encontradas y analizadas por más de 50 años, mientras que la implementación y prueba

Es un problema difícil, pero es mucho más divertido, también. Realmente me gustaría oír lo que ha intentado y lo bien que funcionó.


Por ahora es posible echar un vistazo a la Q constante a transformar, cepstrum y Wigner distribución (-Ville). También hay algunos buenos artículos sobre cómo extraer la frecuencia de los cambios en la fase de Fourier de tiempo corto espectros - esto permite utilizar tamaños de ventanas muy cortos (de alta resolución en el tiempo), porque la frecuencia se puede determinar con una precisión varias 1000 veces más grande que la resolución de la frecuencia de la transformación de Fourier subyacente.

Todas estas transformaciones se ajustan al problema de procesamiento de audio mucho mejor que las transformaciones de Fourier ordinaria. Para mejorar los resultados de transformaciones básicas echar un vistazo al concepto de reasignación de energía.

Puede utilizar el Transformada de Fourier para calcular el espectro de frecuencias de una muestra de audio. A partir de esta salida, puede utilizar los valores de frecuencia de la para las notas particulares para convertir esto en una lista de notas que se escuchan durante la muestra. La elección de las notas más fuertes escuchado por muestra a través de una serie de muestras debe darle un mapa decente de las diferentes notas utilizado, que se puede comparar a los diferentes escalas musicales para obtener una lista de las posibles escalas que contienen esa combinación de notas.

Para ayudar a decidir qué escala particular se está utilizando, haga una nota (sin doble sentido) de las notas más escuchadas con frecuencia. En la música occidental, la raíz de la escala es típicamente la nota que más se escucha, seguido por el quinto, y luego el cuarto. También puede buscar patrones comunes tales como acordes , arpeggios , o progresiones .

Tamaño de la muestra será probablemente importante aquí. Idealmente, cada muestra será una sola nota (de modo que no se produzcan dos acordes en una muestra). Si el filtro y concentrado en las frecuencias bajas, es posible que pueda utilizar los picos de volumen ( "clicks") que normalmente se asocian con instrumentos de percusión con el fin de determinar el tempo de la canción y el "bloqueo" de su algoritmo al compás de la música. Comenzar con las muestras que son un medio latido de longitud y se ajustan a partir de ahí. Esté preparado para tirar algunas muestras que no tienen una gran cantidad de datos útiles (como una muestra tomada en medio de una diapositiva).

Por lo que puedo decir de este artículo , varias teclas cada una tiene sus propias frecuencias comunes, por lo que es probable que los análisis de la muestra de audio para detectar cuáles son las notas y los acordes comunes son la mayoría. Después de todo, usted puede tener varias teclas que tienen la misma configuración de agudos y graves, con la diferencia de la nota que las claves se inicia en y por lo tanto los acordes que dichas claves, por lo que parece la frecuencia con las notas y los acordes importantes aparecen sería la única manera de que usted podría imaginar ese tipo de cosas a cabo. Realmente no creo que se pueda obtener una explicación de un laico de las fórmulas matemáticas reales sin dejar de lado una gran cantidad de información.

Ten en cuenta que esto viene de alguien que no tiene absolutamente ninguna experiencia en esta área, con su primera exposición es el artículo enlazado en esta respuesta.

Es un tema complejo, pero un simple algoritmo para determinar una sola tecla (nota individual) sería el siguiente:

Hacer una transformación de Fourier en decir 4096 muestras vamos (tamaño exacto depende de sus demandas de resolución) en una parte de la muestra que contiene la nota. Determinar la potencia pico en el espectro -. Esta es la frecuencia de la nota

Las cosas se están reduciendo, si usted tiene un acorde, "diferentes instrumentos / efectos" o un patrón de música sin homofónica.

En primer lugar se necesita un de paso de detección algoritmo (por ejemplo, autocorrelación ).

Se puede utilizar entonces su algoritmo de detección de tono para extraer el terreno de juego a través de una serie de ventanas de tiempo cortos. Después de que lo que se necesita para ver qué tecla musical los campos muestreados encajan mejor con.

Si necesita clasificar un montón de canciones en este momento, entonces multitud de fuente del problema con algo como Mechanical Turk .

El análisis de la clave no es lo mismo que el análisis de los lanzamientos. Por desgracia, todo el concepto de clave es un tanto ambigua, las diferentes definiciones normalmente tienden a compartir sólo el concepto de tónica, es decir, un terreno de juego / acorde central. Incluso si un sistema bueno para la transcripción automática existía, no hay ningún algoritmo fiable para determinar la clave.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top