2010-10-27 21 views
38

¿Cuál es un buen algoritmo de procesamiento de señal digital que es bueno para los acordes de guitarra? Desde Fast Fourier Transform, creo que solo es preciso en notas individuales tocadas en la guitarra, pero no en notas que se tocan simultáneamente (es decir, acordes).Algoritmo de reconocimiento de acordes de guitarra

Gracias!

+2

Pregunta a los chicos de Melodyne: http://www.youtube.com/watch?v=jFCjv4_jqAY – herzmeister

+4

¿Sobre qué base crees que la FFT está presente en tu caso? – Biggles

Respuesta

2

Bueno, se puede probar con otro conjunto de algoritmos para el dominio de la frecuencia, como ondas. Pero no estoy seguro si eso servirá para su problema de precisión. En realidad, no entendí de qué manera estás teniendo problemas con la FFT. Siempre será una aproximación del acorde, no hay una manera perfecta de recuperar ese tipo de información sobre el sonido.

Por lo tanto, depende del análisis que hace en ese espectro, con notas individuales, en realidad hay una gran cantidad de mejores algoritmos que la FFT, pero con acordes que es muy probable que tenga que trabajar con FFT.

El problema que tendrá que tratar es dividir los armónicos fundamentales de los armónicos superiores, una cosa que puede ayudar es solo considerar las frecuencias que están en el rango de la guitarra. Si solo tiene que trabajar con sonidos de guitarra, debe dedicar un tiempo a estudiar el gráfico de la guitarra en el dominio de frecuencia normal e intentar usarlo para mejorar su precisión.

+0

Hola! Al usar FFT, ¿es posible usar las intensidades de los contenedores para tratar de determinar las notas que componen los acordes? Porque creo que tendrán algún tipo de correlación entre ellos. – user488792

2

hay algunas herramientas razonablemente exitosas que utilizan la DFT (FFT), pero lo hacen un montón de procesamiento después de calcular la DFT.

Pruebe this link para obtener un resumen del estado actual de la técnica, o google "Chordino" o "Chordata" para algoritmos de extracción de acordes de código abierto.

64

La respuesta corta es que se necesita mucho más que un algoritmo. Los buenos métodos de reconocimiento de acordes podrían describirse mejor como "sistemas", pero normalmente se basan en una transformación inicial al dominio de la frecuencia (más a menudo DFT).

Si quieres un representaton acorde de la canción similar a este

C G Am F7 F6 C ... 

entonces este es en realidad un problema que está un poco alejado reconocer las notas en una pieza de audio. De hecho, hay dos problemas (en términos generales):

  1. hallazgo que emplazamientos están presentes en cualquier momento
  2. agrupación de estos emplazamientos con el tiempo a fin de ser capaz de asignar una etiqueta acorde a un intervalo de tiempo.

Resulta que la forma en que transforma del dominio del tiempo (audio normal) para el dominio de la frecuencia (representación espectral) sólo es de importancia limitada. Es muy importante lo que haces después, y con frecuencia se usan modelos probabilísticos sofisticados (similares a los que se usan en reconocimiento de voz: HMM, DBN, ...) para abordar este problema.

Pruebe la "transcripción de acordes" de google scholar, o "detección de acordes", o "etiquetado de acordes" para realizar investigaciones avanzadas en esta área.

La mayoría de estos enfoques utiliza una transformada de Fourier discreta (DFT) para crear el espectrograma inicial. Durante el procesamiento posterior, también tienden a diferir solo ligeramente, aunque se han utilizado diferentes técnicas de suavizado de series de tiempo: modelos de Markov ocultos, redes bayesianas dinámicas, máquinas de vectores de soporte (SVMstruct) y campos aleatorios condicionales, entre otros. Los transcriptores más avanzados usan sintonización automática, información clave, información de notas graves e información de la posición métrica para mejorar los resultados. Mi thesis (Capítulo 2) ofrece una buena visión general.

Abiertas algoritmos de detección de acordes fuente:

Espero que esto ayude.

+11

+1 para una buena respuesta y para poder hacer referencia a su propia tesis en la respuesta. – gary

+0

tengo dificultades para usar LabROSA Chord Recognition, ¿me puede ayudar a usarlo? utilizo el comando terminal, extractFeaturesAndTrain_svm y doChordID_svm, pero no se reconoce –

1

Hay un contest entre un científico donde las personas intentan analizar los diferentes parámetros de la música. Una de las secciones de este concurso es el reconocimiento de acordes. Este concurso es público, por lo que cualquier persona puede participar y mostrar los resultados en este ámbito. Los resultados del año 2011 se publica here.

Un amigo mío ha logrado buenos resultados en este ámbito (y en este concurso también). Puede leer sobre su enfoque en su webpage.

2

La FFT puede y le dará todos los tonos individuales si configura el software correctamente. El objetivo de la FFT es discriminar los tonos, o si eres un astrofísico, quieres conocer los elementos individuales (sulpher, hidrógeno ...) que están en la luz que sale de la estrella.

Los armónicos no son un problema porque tienen menos 'potencia' que la frecuencia fundamental, por ejemplo, C = 440hz, pero C = 880Hz también, pero 880 serán el pico más pequeño en los resultados de FFT.

+0

no, eso no es cierto, si tratas de dibujar el espectro producido por FFT, por ejemplo, para nota C5 tocada en un violín, verás que C5 tiene menor amplitud que C6. –

+0

@YuriyKravets Creo que quiere decir que puedes encontrar la nota raíz, ya que será la que tenga el mayor "poder", como él dice. –