Los códigos fueron creados en Processing que es un lenguaje de programación basado en Java.
Escogimos este lenguaje ya que está enfocada para proyectos multimediales especialmente visuales, a su vez que es de un relativo
fácil aprendizaje. Nos apoyamos en inteligencias artificiales como ChatGPT y blackbox.ai para acelerar la curva de aprendizaje
de Processing. Las IA’s nos permitían corregir códigos, comprender el funcionamiento y lógica detrás de ellos e investigar
fórmulas lògicas aplicables al algoritmo sin tener conocimientos profundos en geometría, matemática o ingeniería.
Los códigos cuentan con un apartado de análisis del sonido apoyándose en la biblioteca de Processing Minim, con 4 principales enfoques:
Análisis del beat: Por medio de un ajuste de sensibilidad Minim puede detectar los golpes de beat, marcados generalmente por el bombo.
Análisis de Amplitud: Este detecta la amplitud o volumen de una onda sonora, pudiendo asì marcarse los momentos de silencio, crescendos o cualquier tipo de gesto musical
que involucre cambios en el volumen (como también pueden ser los golpes de beat).
Análisis de frecuencias: Estas detectan la amplitud de las ondas limitándose a frecuencias específicas, de esta manera es posible hacer que haya reacciones enfocadas únicamente
a instrumentos o sonidos como los platillos que ocupan primordialmente frecuencias altas.
Conteo de beats: diseñamos un algoritmo que permitía a nuestros programas almacenar numéricamente el beat en que se encontraba la canción, pudiendo ejercer cambios de manera cíclica,
como cambiar de imagen cada 8 golpes. Teniendo en cuenta lo cíclica y simétrica que suele la música electrónica este algoritmo permite agregar mucha variabilidad a los visuales a lo largo del tiempo.
Posterior al análisis de sonido estos datos numéricos hacían reaccionar los diferentes códigos y algoritmos que creamos, ya sea modificando el color, movimiento o forma de los visuales.
El diseño de las piezas gráficas se hacía haciendo uso de Photoshop para tener el mayor control posible de como queríamos que se viera y visual, sin embargo, hay elementos gráficos que son enteramente creados desde processing.
Así pues, concluíamos con piezas que están sincronizadas con la música pero que al mismo tiempo son interesantes a la vista.
Para lograr una relación entre música e iluminación, decidimos utilizar arduino por las posibilidades fisicas que permite,
ya que nuestro apartado del proyecto requiere el uso de un hardware para poder controlar la cinta led. Este hardware está compuesto por:
- Arduino Uno
- Cable de conexión USB-MIDI
- Cables de conexión rápida
- Tiras led WS2812b (2 unidades)
- Resistencia de 220 ohms
En cuanto al aprendizaje de código, utilizamos ChatGPT y videos de YouTube para facilitar la formación tanto del medio físico, como de la programacion.
Para el código estamos haciendo uso de librerías gratuitas como lo son:
- Fast Led
- Adafruit NeoPixel
En el código se definen algunas constantes para configurar la tira de LEDs:
- NUM_LEDS: Número total de LEDs en la tira
- DATA_PIN: Número del pin de datos conectado a la tira de LEDs
- BRIGHTNESS: Brillo de los LEDs (0-255)
- BPM: Pulsaciones por minuto para el ritmo
En el setup(), se configura la tira de LEDs:
- Se utiliza FastLED.addLeds() para asociar el arreglo de LEDs con el controlador de la tira
- Se ajusta el brillo de los LEDs con FastLED.setBrightness()
En el loop(), se calcula el intervalo de tiempo entre pulsos (beats) basado en el BPM
- Utiliza FastLED.show() para actualizar los LEDs con los cambios realizados
- Utiliza delay() para ajustar la velocidad de la secuencia. El tiempo de espera se calcula en función
del intervalo entre pulsos (beatInterval) y el número total de LEDs en la tira (NUM_LEDS). Esto asegura
que la secuencia sea rítmica y se ajuste al BPM especificado