rafasalas.es

Go to English version rafa.salas@gmail.com

Código

Processing: Amplitud1

Este pequeño proyecto se origino con la lectura de The Nature of the Code, de Daniel Shifman. Este libro es una estupenda introducción a la simulación de procesos físicos, utilizando Processing (Además de una de las mejores introducciones a la Programación Orientada a Objetos que yo haya leido).


Algunos de sus capitulos están dedicados a los sistemas de particulas, y a la simulacion de su comportamiento en campos gravitatorios. Tras leerlos, decidi investigar como controlar ese comportamiento con la música y construir un visualizador musical medianamente interesante.


Aunque ya habia hecho algún experimento previo con OpenFrameworks en el tema de visualización de música (Como Aztec, por ejemplo), ha sido este proyecto al que mas tiempo he dedicado, y el que mas satisfecho me esta dejando. La inmediatez y portabilidad de Processing son grandes ventajas cuando se dispone de poco tiempo y se usan varios SOs, y compensan el menor rendimiento de Java frente a un framework de C++ como OF.


El planteamiento es simple: Se disponen 5 atractores de forma simétrica en la ventana de visualización. A continuación se lanza una nube de particulas (entre 1000 y 10000) de velocidad y posición inicial aleatoria.


La fuerza que ejercen los atractores sobre las particulas es directamente proporcional a la amplitud total de la música. Tras unos pocos de experimentos, resulto obvio que la fuerza de atracción que da lugar a resultados visuales mas interesantes es la directamente proporcional a la distancia entre la particula y el atractor, en lugar de una que imitara a la gravitatoria real, que seria inversamente proporcional al cuadrado de dicha distancia.


Para la reproducción de audio se usa la librería Minim. Esta librería permite acceder a las amplitudes de la onda mediante el objeto AudioPlayer. En este caso, se usa simplemente la suma total de las amplitudes como múltiplo de las fuerzas de los atractores. Esto hace que se obtengan visualizaciones mucho más espectaculares con grabaciones que tengan cambios de amplitudes grandes, que con música mas 'suave'. En un futuro, pretendo incorporar el espectro FFT (Accesible mediante el objeto FFT de Minim) para aumentar la riqueza de la visualización.


Este proyecto continua siendo un work in progress. Actualmente he hecho algún experimento para dotar de una GUI que permita cambiar parametros en tiempo de ejecución, usando ControlP5 para la interfaz. Por ahora, teneis disponibles una 'visualización' de "How high the Moon", interpretada por Alo Django. Funciona a un buen rendimiento (hasta 10000 particulas a 60 fps en un Core i7 con una NVidia Quadro 580). En el fichero leeme.txt se indica como poder 'visualizar' fácilmente cualquier otro fichero mp3.


También es posible descargar el codigo fuente, para quien desee hurgar en las tripas. Solo una cosa: Este es un trabajo personal. Fuera de la disciplina del equipo, soy un programador algo caotico, así que sed benevolos con los nombres de variables absurdos y las indentaciones caoticas.


Todos los trabajos licenciados bajo Creative Commons Attribution-NonCommercial 3.0 Unported License.
© 2014 by rafa salas
Web diseñada por rafa salas