AI Music - Collaboration with MinCiencia & AC3E (Chile)

Inteligencia artificial aplicada a la composición musical: “Bici para Dos”

 Background

En el Marco del festival de la ciencia, FECI 2021, desde el Centro Avanzado de Ingeniería Eléctrica y Electrónica, AC3E, surge la idea de desarrollar una pieza musical donde se fusione música e inteligencia artificial. Para llevar a cabo esto, se conforma un grupo de trabajo interdisciplinario de investigadores, ingenieros, y compositores para realizar un trabajo en conjunto donde se mezclen las disciplinas de arte, ciencia y tecnología.

La idea de participar en el FECI 2021 nace de un equipo del AC3E conformado por: Matías Zañartu, Mauricio Araya y Fabián Rubilar. Ellos, con el afán de demostrar el potencial de la inteligencia artificial en el campo de la música, reúnen a un equipo capaz de lograr este cometido y es aquí donde nosotros, los autores de este artículo, aparecemos: René Verón, compositor y productor musical, especializado en música para films, TV y media, locutor, director y productor de audiolibros, y Francisco Frez, Ingeniero Electrónico especializado en Deep Learning y actual CEO de Electroveja Labs.

Objetivos

Comenzamos con una reunión por videollamada para darle una dirección a nuestro trabajo. Surgieron multiples ideas, con un infinito de posibilidades, y al ser tantas las posibilidades no llegamos a nada concreto. A pesar de esto, concluimos que el objetivo sería: “Componer una pieza musical que reúna la creatividad, la sensibilidad y la concepción estética del hombre junto con la magia de la máquina”.

Sin tener completa claridad en “cómo” realizar nuestra tarea, comenzamos a explorar este mundo de posibilidades, experimentando poco a poco con las herramientas disponibles de composición musical basadas en inteligencia artificial. Luego de muchas pruebas, decidimos utilizar para nuestra labor Jukebox, una red neuronal que genera música, en una variedad de géneros y estilos de artistas, desarrollada por el equipo de OpenAI.

¿Qué hay detrás del programa de IA que estamos utilizando?

En un comienzo, Jukebox fue complicado de utilizar pues no tiene una interfaz intuitiva y todo debe ser desarrollado por código. Luego de varios intentos, por fin conseguimos que la inteligencia artificial generara una pieza musical a partir de un extracto de otra. Logramos que Jukebox se inspirara en “Jingle Bells 3“ de Kevin MacLeod para crear una pieza única de Rock al estilo de U2. Este fue el inicio de todas nuestras futuras creaciones.

A la fecha (Agosto 2021), no existen programas que faciliten el uso de Jukebox, todo debe ser programado por código, en este caso, Python. Debido a esto, para experimentar y componer música con Jukebox, utilizamos el notebook de Google Colaboratory de Zags y una versión modificada del notebook de ejemplo de Jukebox.

La modalidad de Jukebox que utilizamos en nuestro programa es la de continuar o completar un segmento de audio. El programa toma un segmento de un archivo de audio, aproximadamente 12 segundos (se puede configurar), para generar una nueva composición. El audio resultante inicia con el extracto original y luego prosigue con información creada por la inteligencia artificial. Esto se puede resumir con la siguiente fórmula: Audio Resultante = Extracto Audio Original (Unido) Audio Creado por IA.

A modo general, se utiliza una arquitectura de red que comienza con una etapa de compresión, específicamente utiliza una red neuronal convolucional para codificar el audio de entrada y disminuir la dimension del mismo. Luego, está la etapa generativa donde se “crea” un nuevo audio y, finalmente, una etapa de decodificación donde se devuelve el audio (información) al espacio dimensional original. Parte de la información original que fue perdida en este proceso no se puede recuperar.

Para más detalles revisar: https://openai.com/blog/jukebox/

Alcances, tareas y requisitos de esta composición musical

A partir de aquí las posibilidades de Jukebox eran más claras, así que los dos nos reunimos a definir los alcances del trabajo a realizar. El límite era la imaginación, pero el tiempo era escaso, por lo que intentamos definir el trabajo a realizar de tal forma de obtener el mejor resultado en el menor tiempo posible. Al finalizar la reunión definimos un marco de trabajo, con las siguientes tareas y requisitos que deberíamos cumplir para lograr este grandioso, pero abstracto objetivo:

  • Componer una base de 2 minutos aproximadamente al estilo Soundtrack (inspirado en el compositor Hans Zimmer) utilizando la inteligencia artificial de Jukebox.

  • Finalizar la composición agregando instrumentos musicales/efectos de sonido a la base generada por la IA para finalizar la composición musical.

Pero para lograr estos dos objetivos específicos, primero debíamos componer un track inicial el cual será utilizado por la IA para generar el track de base. ¡Por fin el trabajo estaba definido! Ahora solo faltaba ponerse manos a la obra.

Experimentación

Uno de los primeros pasos fue investigar y establecer un primer acercamiento al mundo de la inteligencia artificial. Esto es fundamental para entender las posibilidades que brinda este campo, a la vez que se buscaba obtener inspiración y un primer “chispazo” para comenzar el trabajo. Dentro del imaginario colectivo hay múltiples referencias, no solo a la IA, sino también a la convivencia o participación de humanos y máquinas en tareas conjuntas. Incluimos esta escena de “2001, Odisea en el espacio” del realizador Stanley Kubrick que brindó inspiración para comenzar a trabajar. En esta escena el computador HAL 9000 comienza a ser desactivado, y el protagonista le pide que cante una canción; HAL 9000 responde a esta solicitud cantando la canción “Daisy Bell”, lo cual podría ser solo un detalle de la película, pero la referencia/detalle no es un detalle sin importancia: esta canción fue utilizada para programar la primera demostración de síntesis de voz por computador en 1961.

Primeros Intentos usando IA

La primera tarea fue realizar algunas piezas cortas para comprobar el potencial de Jukebox y su comportamiento ante ciertos tracks de entrada. En Jukebox existen diversas maneras de trabajar, una de ellas y la cual nosotros usaríamos, utiliza un código que permite generar una nueva composición a partir de una composición original que debe ser entregada al programa. Esto se traduce en obtener un nuevo audio a partir de un audio original ingresado al programa. Jukebox permite seleccionar dentro de múltiples estilos y artistas al interior de un estilo lo que dará los parámetros para la realización de este nuevo track. Por ejemplo, podríamos programar “crear una nueva composición en el género seleccionado y al estilo del autor seleccionado utilizando como base la pieza que creamos. Se podría quizás decir que el programa “muta” el audio ingresado siguiendo las especificaciones de genero/autor.

A continuación, te presentamos algunos ejemplos con los que trabajamos (René y Francisco). Hay composiciones muy simples, cortas, de solo un instrumento, con motivos básicos y líneas melodicas acotadas; hasta composiciones más complejas, con multiples pistas de sonido e instrumentación más sofisticada. Lo hicimos de esta forma porque hasta este momento solo habíamos utilizado Jukebox para crear un audio a partir de otro, pero no entendíamos nada de su lógica. Todos los ejemplos los hemos agrupado en playlists que se conforman por Audio Original + Audios Resultantes para que puedas entender qué “leyó“ la inteligencia artificial y qué fue lo que entregó luego del procesamiento. Te recomendamos prestar atención a la calidad del audio resultante, la coherencia respecto al audio original, la tonalidad, el ritmo, etc. Todo es importante para comprender de qué forma trabaja Jukebox y que tan aleatorio se vuelve el resultado, considerando las características del audio de entrada, como su complejidad, estilo, ritmo, orquestación y melodías, y los parámetros definidos en el programa.

Como primer ejemplo, te presentamos este pequeño audio que fue ingresado a nuestro programa, configurando el parámetro de artista como Hans Zimmer y el estilo como Soundtrack.

Nocturnal - Entrada

Nocturnal - Resultado (Post-Procesado)

Nocturnal - Resultado

Obtuvimos 2 tracks, el primero es el audio en bruto compuesto por la IA y el segundo es el mismo pero con unpostprocesamiento en que la calidad del sonido mejora, esta es la etapa de decodificación que mencionamos anteriormente. Algunas de las cosas que nos sorprendieron fue que lo obtenido parecía ser algo extremadamente aleatorio e incluso el software agrego lineas vocales a la composicion y sonidos de publico cambiando radicalmente el estilo que habíamos seleccionado. Al parecer, partes de la instrumentación (efectos sonoros y/o percusiones agudas) de la pieza original son transformadas en ruido que luego del procesamiento (decodificación) son acentuados, algo contrario al objetivo de esta etapa que es la eliminación del ruido generado.

Estos resultados, donde utilizamos una composición musical rica en texturas y sonoridades, nos obligó a experimentar con audios más simples; literalmente no entendíamos cómo tener un mayor control de los resultados. Solo nos quedaba experimentar y esperar a escuchar lo que nos entregaría el programa.

Fue entonces que dimos partida a una serie de experimentos muy acotados para intentar entender la lógica al interior de Jukebox, y a la vez tratando de predecir y controlar los resultados que producía. Compusimos audios con pequeños motivos (que en cierta forma intentan reducír los parámetros musicales a una minima expresion) para este fin:

2-3-4-5-6

2-3-4-5 - Resultado 1

2-3-4-5 - Resultado 2

2-3-4-5 - Resultado 3

Escala Simple

Escala Simple - Resultado 1

Escala Simple - Resultado 2

Escala Simple - Resultado 3

Piano Acordes

Piano acordes - Resultado 1

Piano Acordes - Resultado 3

Piano Acordes - Resultado 2

Piano Arpeggio

Piano Arpeggio - Resultado 1

Piano Arpegio - Resultado 2

Piano Arpegio - Resultado 3

Nos dimos cuenta que la “densidad” instrumental en el resultado difiere mucho de la densidad del archivo original, siendo los resultados impredecible. Por ejemplo, en los audios que obtuvimos a partir del audio 2345, apreciamos cambios radicales en la instrumentación, pasando de un piano en solitario y básico a una densidad instrumental que incluye percusiones, un sonido mas “pop” e incluso algo que se asemeja a voces. Con eso entendimos que la IA nos entregaba una “composicion” completa sin tener la posibilidad de obtener instrumentos o lineas meloidcas invidiuales.

Por otro lado, en los resultados generados por el audio Escala simple, apreciamos que a medida que las notas de la escala suben se comienzan a perder, ciertas frecuencias desaparecen y se transforman en ruido. La impredictibilad se hace manifiesta otra vez, generando un sonido similar a una radio antigua, o casi generando ruido de estática. Otros resultados fueron casi desconcertantes, donde apreciamos sonidos similares a la voz humana interpretando una canción o que suena casi como un grupo de gente teniendo una conversacion.

Este proceso de experimentacion fue bastante lento, ya que la obtencion de audio ”nuevo” tardaba aproximadamente una hora por pieza, pero seguimos experimentando hasta sentirnos confiados de entender un poco mas la herramienta que estamos usando. Complementamos el proceso de experimentación, componiendo audios con un estilo similar al que deseábamos obtener. Los audios original y resultantes son los siguientes:

Test 1

Test 2

Test 2 - Resultado 1

Test 2 - Resultado 2

Test 2 - Resultado 3

Respecto a los resultados obtenido en este experimento, podemos notar que en “Test 1” los resultados mantienen una densidad instrumental similar a la del audio original. Además, se generan cambios que otorgan variedad a la composición, por ejemplo, hay pausas al interior de la música que genera tensión y un cambio estructural de pieza. Finalmente, vemos que no se evita la aleatoriedad del resultado, a pesar de utilizar un audio de entrada que se asemeje al estilo configurado en los parámetros del programa. Por ejemplo, en algunos casos agrega voces y en otros se pierde la coherencia de la pieza.

En el otro experimento, corroboramos la aleatoriedad del programa al apreciar que se pierde el sentido de la pieza en “Test 2 - Resultado 1“, generando algo diametralmente opuesto en la estética sonora. Pero en el Resultado 2 vemos algo interesante, se generan varios segmentos en la pieza que nos remontan a distintas emociones, perdiendo de alguna forma la continuidad del track.

Luego de este proceso de experimentación, nos dimos cuenta de que la inteligencia artificial tiene que ser alimentada con una composición rica en instrumentos y texturas, y se obtendrán mejores resultados si la composición original es del mismo estilo y artista que la composición que se desea generar. Lo anterior se debe a que la arquitectura de red neuronal fue entrenada con todo tipo de composiciones en diferentes estilos y artistas, por lo tanto, una composición simple, con pocos elementos, y con una instrumentación reducida, dará resultados muy aleatorios e inesperados.

Experimentos con otras herramientas de IA para creación musical

En paralelo a este proceso también probamos con otras herramientas basadas en IA para la composición como Musenet y Magenta con el propósito de complementar la pieza base generada en Jukebox. A diferencia de este último, la aproximación a la creación via IA en estos programas (Musenet y Magenta) es desde el punto de vista de información musical expresado en lenguaje MIDI. Los programas reciben un archivo midi el cual procesan y mutan para entregar un resultado particular. Los experimentos fueron basados en melodías creadas utilizando el software de notación musical Finale y luego exportadas en forma de archivos MIDI para su uso en las diferentes plataformas/herramientas. Los resultados no fueron del todo satisfactorios, eran poco coherentes y era imposible “predecir” los resultados. Creemos que con más investigación, experimentación y tiempo para realizar esto, se podrían obtener resultados satisfactorios y cercanos al estilo/autor que utiliza el software como parámetros de composición (por ejemplo: Bach).

Composición Final

Finalmente, luego de todos los experimentos realizados, teníamos los conocimientos y la habilidad, en código y composición, para componer, por medio de la IA, la base de 2 minutos al estilo Soundtrack del artista Hans Zimmer que fijamos como objetivo al comienzo del proyecto. Para comenzar el proceso de creación final, compusimos un audio orquestado con sintetizadores, principalmente basado en texturas y atmósferas utilizando el concepto de Shepard tone (melodías ascendentes que pareciera que no paran de subir), el cual utilizaríamos para alimentar a nuestro programa. El audio que daría vida a nuestro resultado final es el siguiente:

Bici para Dos - Audio Inicial

Luego de un par de intentos obtuvimos el track definitivo, pero para sorpresa nuestra no fue solo un audio, sino 3 tracks que nos parecieron interesante utilizar.

Después de una larga conversación, decidimos que para finalizar el proyecto deberíamos trabajar “en tandem” y editar los audios utilizando nuestras competencias humanas, notablemente nuestra sensibilidad artística y estética, para llegar a una forma musical que reuniría nuestras condiciones iniciales. Junto con esto, procederíamos a crear otros elementos que se pudieran incorporar a esta pieza, originalmente creada por IA.

La unión de los 3 tracks no fue una tarea difícil, porque para suerte nuestra, los 3 resultados de la IA mantenían el mismo carácter y sonido en general. Luego de postproducir y mejorar el sonido, llegamos a la base final editando y uniendo las piezas. El audio resultante compuesto solo por la IA es el siguiente:

Bici para Dos - Generado solo con IA

Finalmente, utilizando la base generada por AI, se procedió a producir nuevos tracks que funcionaran sobre esta base desde un punto de vista armónico, rítmico, métrico y que aportaran estéticamente a la composición. Se procedió a su vez a transcribir una de las melodías más prominentes para asignarla a un instrumento acústico. Además, se estableció que junto con producir estos tracks vía sintetizadores, instrumentos virtuales, samplers e instrumentos eléctricos/electrónicos, se compondría y grabarían algunas partes para instrumentos acústicos (una de ellas era la melodía transcrita). Posteriormente, se procedió a la mezcla, postproducción y masterización del track final. A continuación, incluimos nuestro trabajo final:

Bici para Dos (Final Version)

Este video-documental producido por el Ministerio ode Ciencia Chile muestra el parte del proceso de creación de esta pieza.