.

Llego vía Echo JS a Melody of Life, un sintetizador de música a partir del Juego de la vida de Conway. Como dice el autor en GitHub:

Melody of Life es una variación del Juego de la vida de Conway, que es un autómata celular y juego de cero jugadores. En Melody of Life cada célula en la parrilla finita de 20×20 se corresponde a una nota de la escala pentatónica, [de modo que] patrones celulares interesantes crean patrones tonales interesantes.

Un paso generado al azar en Melody of Life.

.

Gracias a esta reseña en CSS-Tricks llego a un artículo en CodePen de Greg Hovanesyan titulado «Recreating legendary 8-bit games music with Web Audio API».

La música 8-bit o chiptunes es música electrónica sintetizada con ordenadores, consolas o máquinas recreativas antiguas. Es parte de una cultura para personas que crecieon a finales de los años 70 y en los años 80, y todavía es muy popular entre los geeks. El sonido era producido por el PSG (Programmable Sound Generator), un chip de sonido que sintetizaba varias formas de onda y a menudo ruidos. El generador podía producir […] formas de onda simples: pulso, cuadrada, triangular y sierra. También tenía un generador de ruido pseudo-aleatorio (PRNG). Hay un vídeo muy interesante del 8-Bit Guy, How Oldschool Sound/Music worked, donde habla de cómo el sonido se generaba en los distintos sistemas, y cómo distintas aproximaciones y trucos permitían a los desarrolladores de juegos crear música legendaria con hardware muy limitado. Recomiendo encarecidamente ver el vídeo, si se quiere entender como se crea la música 8-bit. Fue muy interesante para mí, así que decidí investigar algo más e intentar emular la música de juegos de 8-bit legendarios utilizando el Web Audio API.

El texto completo está lleno de ideas y recursos sencillos pero efectivos que consiguen un resultado, cuando menos, interesante. Se puede ver también en CodePen, por si alguien quiere curiosear en el código resultante, algo que yo mismo cuando tenga un rato.

Demostración del proyecto de Greg Hovanesyan para recrear música de vídeojuegos clásicos en el navegador.

.

La semana pasada me pasaron el enlace a Quick, Draw!, una especie de Pictionary donde tu pareja que intenta adivinar lo que estás dibujando es una red neuronal. Como juego es gracioso pero lo que me gustó aún más fue descubrir que forma parte de un grupo de experimentos de inteligencia artificial de Google. De ellos, dos tienen un corte claramente musical.

El primero es The Infinite Drum Machine, una caja de ritmos básica que permite utilizar en tu navegador miles de sonidos cotidianos. La gracia de este experimento reside en que la catalogación y agrupación de sonidos la ha hecho una máquina utilizando un algoritmo de aprendizaje automático t-SNE sobre el audio exclusivamente, sin utilizar etiquetas o cualquier otro tipo de indicaciones.

Los que tengan el tiempo y los conocimientos adecuados pueden explorar el código fuente de The Infinite Drum Machine en GitHub, algo en lo que invertiría el primero de los dos requisitos anteriores (si lo tuviera) para ver si puedo adquirir un poco más del segundo requisito.

Fotograma del vídeo de presentación de The Infinite Drum Machine [01m51s].

El segundo experimento que llamó mi atención fue A.I. Duet, una red neuronal ya entrenada que “responde” a las melodías que pueda crear una persona, creada utilizando Tone.js y herramientas de Magenta. Aunque en este caso todavía no hay una versión web donde jugar con el experimento, se puede explorar código fuente de A.I. Duet en GitHub.

Fotograma del vídeo de presentación de A.I. Duet [02m14s].

Debo admitir una cierta envidia sana al ver estos proyectos. Hace no tanto dejaba por aquí un apunte sobre redes neuronales que componían pistas de batería aprendiendo de Metallica y ya entonces me lamentaba de no tener tiempo para explorar estas materias.

.

Hoy se decide la última nota en la melodía de CrowdSound.net, un experimento de composición en masa:

Se está generando una melodía nota a nota, en tiempo real, utilizando el voto popular. […] Esta melodía se convertirá en una canción con una estructura de acordes Do, Sol, La menor, Fa repetida 18 veces. Tendrá una estructura de (Verso / Verso / Coro / Verso / Coro / Conclusión). La canción está a día de hoy en forma de esqueleto.

El resultado del proyecto es curioso, igual que las estadísticas que sacan del proceso, aunque me interesó más ver cómo generaban la partitura con canvas y los sonidos con howler.js. Se puede reproducir la melodía eligiendo con el sonido de qué instrumento se quiere oír, saltar directamente a una parte de la canción y modificar el ritmo de la reproducción.

También resulta curioso, aunque no creo que sea casual, que la progresión armónica utilizada sea la popular I–V–vi–IV. Es casi imposible no oírla a menudo, como señalaron Axis of Awesome, y afianza más mi teoría no verificada ni estudiada (ni siquiera tiene mucho sentido) que su uso debe ser un método para reducir la complejidad de las canciones.

.

Keunwoo Choi es un estudiante del Centro de Música Digital de la Queen Mary, Universidad de Londres. Bajo la tutela del profesor Mark Sandler y el doctor Gyorgy Fazekas ha publicado un texto titulado «Text-based LSTM networks for Automatic Music Composition», disponible en arXiv y que resume en su página web:

RNN de palabras (LSTM) sobre Keras con representaciones textuales empalabradas de ficheros MIDI de la batería de Metallica, provenientes de midiatabase.com.

No es la primera vez que veo el uso de redes neuronales recurrentes para componer música, lo que no quita que me siga pareciendo interesante. Los resultados no son espectaculares pero sí curiosos, y me gustaría tener más tiempo para poder entender mejor cómo se implementa la RNN.