Buscar este blog

miércoles, 5 de enero de 2011

Descomponiendo el sonido. La transformada de Fourier.

A la hora de analizar el sonido podemos decir que es una vibración del aire tratable como un fenómeno ondulatorio. Los valores cuantitativos que caracterizan una onda son su amplitud y frecuencia íntimamente relacionados con los valores cualitativos de volumen y tono. Sin embargo esta manera de describir el sonido no podría diferenciar por ejemplo el tono "Do" de un piano del tono "Do" de un violín, es decir, diferenciar el timbre de estos instrumentos. Realmente el sonido creado por un instrumento musical es una compleja maraña de pequeñas ondas a lo largo de una onda fundamental y con correspondiente frecuencia fundamental. Esa frecuencia fundamental es la que corresponde al tono del sonido producido por el instrumento. Las frecuencias de las "pequeñas ondas" que viajan a lo largo de la fundamental producen el timbre del sonido.

El movimiento de las moléculas de aire debido a los cambios de presión y el retorno a sus posiciones iniciales (elasticidad del medio) tiene la dirección de la perturbación generada, por ello, la onda sonora se denomina longitudinal. Las podemos diferenciar de ondas transversales como las de la vibración de una cuerda, o sobre las creadas en la superficie de un fluido con el vídeo siguiente:



Para las ondas longitudinales la representación gráfica espacial de los desplazamientos en las distintas direcciones en un instante de tiempo, no es tan intuitiva como para las ondas transversales. Sin embargo, el tratamiento matemático es análogo, ya que las funciones que representan los cambios periódicos son las mismas. En la interpretación que se hacen de ellas, es donde reside la física de estas ecuaciones de onda.

El sonido de una pieza musical, compuesto por una superposición de ondas de los distintos instrumentos según el paso del tiempo se puede analizar mediante la "Transformación de Fourier". Si visualizásemos las ondas de un sonido complejo como una pieza musical, no podríamos reconocer en la superposición final, de qué instrumento procede cada frecuencia. Con esta transformación matemática conseguimos a partir de una señal sonora que varía en el tiempo (frecuencias y amplitudes), representarla como sumas de ondas independientes de distintas frecuencias. Por tanto, obtenemos las frecuencias que conforman el sonido que estamos escuchando.

En la actualidad se utilizan estos resultados matemáticos para desarrollar programas que varían imágenes a partir del sonido que están reproduciendo. Básicamente, para que el sonido "fabrique" estos gráficos, se procede de la siguiente manera:

1. Diseñar un algoritmo gráfico que apartir de unas variables de entrada, vaya variando el gráfico. Estas variables de entrada serían las amplitudes y frecuencias del sonido de la música.

2. Idear una forma de convertir una señal de audio en unas variables de análisis como frecuecias y amplitudes. Esto se puede realizar mediante un análisis de Fourier de la señal.

3. Conectar las variables al algoritmo gráfico y observarlas.

Se pueden combinar distintos algoritmos gráficos que cambian en el tiempo según los deseos del programador. Así éste, puede ajustar el cambio a una canción particular. Esto es un resultado de ello:

3 comentarios:

  1. El video último no es tanto como dices de fourier. En el video lo que hace es "beat detection" eso es más simple:

    Verifica la parte de la onda donde hay una subida muy abrupta de señal y ahí puede determinar los cambios de ritmo o llevar el ritmo con el gráfico.

    Estos gráficos mas que nada están fabricados a partir de la amplitud. No tanto de detectar las componentes de fourier.

    Te das cuenta que cada elemento visual cambia su amplitud solamente? Pero no te dice que nota está sonando o alguna gráfica con respecto a la nota que suena. Sólo muestra la señal como es y la grafica variando la amplitud de los gráficos, no hace descomposición en frecuencias. Quizá aplique algún filtro pasa bajo para el "beat detection". Pero más que eso no creo.

    La verdad que yo no sé cómo sería el algoritmo para descomponer en frecuencias. Lo estaba buscando a ver si existía algún método práctico y no lo consigo. Por eso caí acá.

    Pero estoy seguro que esos programas no lo implementan.

    ResponderEliminar
  2. Ya encontré lo que buscaba: http://es.wikipedia.org/wiki/Transformada_r%C3%A1pida_de_Fourier

    ResponderEliminar
  3. Es cierto, estos gráficos cambian con la amplitud y no con descomposición en frecuencias de la señal.No es quizás el mejor ejemplo para explicar estos algoritmos pero no encontré otro mejor. Gracias por tu aportación y precisión. Espero que participes más en mi blog ofreciendo aportaciones como esta. Saludos

    ResponderEliminar