• No se han encontrado resultados

RAITMO: GENERADOR MUSICAL PARA APOYAR LA COMPOSICIÓN MUSICAL BASADO EN MACHINE LEARNING

N/A
N/A
Protected

Academic year: 2022

Share "RAITMO: GENERADOR MUSICAL PARA APOYAR LA COMPOSICIÓN MUSICAL BASADO EN MACHINE LEARNING"

Copied!
29
0
0

Texto completo

(1)

1

RAITMO: GENERADOR MUSICAL PARA APOYAR LA COMPOSICIÓN MUSICAL BASADO EN MACHINE LEARNING

(RAITMO: MUSICAL GENERATOR BASED ON MACHINE LEARNING FOR SUPPORTING MUSICAL COMPOSITON)

José Leonardo Patarroyo Devia y Álvaro Alfonso Yepes Bonilla

Facultad de Ingeniería, Universidad de los Andes

Haydemar María Núñez Castro

18 e diciembre de 2019

(2)

2

(3)

3 RESUMEN

Improv RNN es una herramienta basada en Magenta de Google, la cual permite generar melodías a través del entrenamiento de un modelo de machine learning basado en deep learning, pero la documentación respecto a su utilización, y más específicamente sobre la generación de los datos de entrenamiento, es deficiente por lo que dificulta su aprovechamiento, para público experto e inexperto en la utilización de este tipo de tecnologías. Dado lo anterior, el presente proyecto buscó dar solución a la problemática a través de dos resultados: desarrollo de un aplicativo que utiliza un modelo Improv RNN, entrenado con melodías de reggaetón famosas, para la generación de nuevas melodías; y un blog interactivo que explica paso a paso el desarrollo del modelo utilizado en el aplicativo, resaltando aspectos teóricos y prácticos, con el fin de que cualquier tipo de usuario pueda entrenar su propio modelo y generar nuevas melodías.

ABSTRACT

Improv RNN is a tool based on Google’s Magenta library which can generate new melodies based on a deep learning model, but there is a lack in documentation about its use and how to generate the dataset for the training step, which makes it difficult to use for users with low or none experience in software programming. Given the above, the current project aimed to solve the problem by two main results: development of an application that uses a model of Improv RNN trained with famous reggaeton melodies to generate new melodies, and an interactive web blog that explains step by step the development of the model used in the application including theoretical and practical considerations to understand it.

(4)

4

0. INTRODUCCIÓN ... 7

1. MOTIVACIÓN ... 8

2. PROBLEMÁTICA ... 9

3. OBJETIVOS ... 10

3.1 Objetivos Específicos ... 10

4. ANTECEDENTES ... 11

5. METODOLOGÍA ... 12

5.1 Estado del arte ... 13

5.1.1 DrumBot ... 13

5.1.2 MidiMe ... 14

5.1.3 Magic Sketchpad ... 14

5.2 Improv RNN ... 14

5.2.1 El lenguaje musical ... 15

5.2.2 Melody RNN ... 17

6. IMPLEMENTACIÓN ... 18

6.1 Implementación y entrenamiento del modelo Improv RNN ... 18

6.2 Desarrollo de aplicación ... 20

6.3 Blog tutorial de implementación y utilización ... 21

7. RESULTADOS ... 22

7.1 RAItmo: Generador de melodías apoyado en machine learning ... 22

(5)

5

7.1.1 Modelo Improv RNN entrenado ... 23

7.1.2 Interfaz gráfica ... 24

7.1.3 Ejecución de RAItmo ... 25

7.2 Blog interactivo en Medium y Google Colab ... 26

8. ANÁLISIS DE RESULTADOS ... 27

8.1 Similitudes del proceso de composición entre máquina y humano ... 27

9. CONCLUSIONES ... 28

10. REFERENCIAS ... 29

(6)

6

(7)

7 0. INTRODUCCIÓN

Con el crecimiento que ha tenido la capacidad computacional en el siglo XXI, el machine learning ha vuelto a aparecer en el radar como una de las tecnologías más influyentes, gracias a sus numerosas aplicaciones en diferentes campos de la vida diaria. Esta tecnología depende principalmente de una etapa de entrenamiento, la cual necesita contar con gran capacidad de almacenamiento de datos, y, con los avances en las tecnologías de este tipo de procesamiento que también ha habido en los últimos años, se ha permitido que el machine learning se convierta en una herramienta estándar.

Las aplicaciones que tiene esta tecnología son numerosas, y van desde el ámbito científico, por ejemplo, el análisis de imágenes de células para su clasificación; como aplicaciones en ámbitos de ocio, por ejemplo, el desarrollo de complejos comportamientos de los personajes de un videojuego.

En otras palabras, es una tecnología que puede ser aplicada en casi cualquier contexto, simple o complejo, de la vida humana. Para Alpaydin (2016, p. xi) gracias a la cantidad de datos disponibles que se encuentran en cualquier tipo de contexto de la vida real como negocios, ciencia, educación, entre otros, el machine learning ha tomado un mayor protagonismo en la actualidad.

Una de las aplicaciones más interesantes que hoy en día tiene el machine learning es la generación de contenido creativo, como textos, arte, música, entre otros (Fooster, 2019, p. 5). La generación de contenido creativo es una de las capacidades más características que tiene el ser humano sobre otros seres vivos, por lo que se hace interesante entender cuál es el alcance que tiene en la actualidad el machine learning en esta materia.

La acción de generar de música, conocida normalmente como composición musical, suele ser una de las tareas más complejas que los seres humanos logran realizar a través de diferentes

(8)

8

caminos creativos. De esto surge la pregunta ¿Es posible que una máquina componga nuevas melodías musicales?, y, si lo anterior es posible, ¿Qué tan buena es la música generada por una máquina? Pero, teniendo en cuenta que la música es un arte y que su apreciación es subjetiva, la última pregunta planteada suele ser compleja de responder objetivamente. Sin embargo, para la primera pregunta ya se cuenta con una respuesta: para una máquina sí es posible generar música.

1. MOTIVACIÓN

El presente proyecto inicialmente nace motivado en entender y explicar cómo una máquina puede componer melodías, detallando los diferentes caminos que se pueden tomar para lograrlo;

pero, más importantemente, está motivado en poder aplicar una de las muchas herramientas existentes para generar melodías, que esté basada en machine learning, y así poder apreciar y analizar sus resultados. Adicionalmente, dada la complejidad de la utilización de este tipo de tecnologías para público inexperto en el desarrollo de software y su compleja documentación, otra motivación que surge es poder compartir este conocimiento de manera sencilla para que este tipo de público pueda aprovechar nuevas herramientas para sus procesos creativos.

El presente texto comienza presentando la problemática que se quiere resolver, seguido de la presentación del objetivo general y los objetivos específicos definidos para dar solución a esta.

Luego, se presentan los antecedentes más destacados, de los cuales se explican los factores más importantes e influyentes para el desarrollo del presente proyecto.

Tras las secciones de introducción, se empieza a realizar una contextualización sobre la solución propuesta de solución; comenzando con una sección de estado del arte, en la que se exploran herramientas de machine learning que permiten la manipulación y creación de música.

Adicionalmente, en esta sección se introduce Improv RNN y algunos de sus aspectos técnicos.

(9)

9

Tras la contextualización mencionada, el presente texto continúa con el diseño y la implementación de las dos soluciones propuestas: blog interactivo en Medium1 junto con Google Colab2 y una aplicación basada en un modelo entrenado con melodías del género reggaetón. En esta sección se buscan presentar los detalles técnicos y prácticos para la correcta implementación del modelo de machine learning, basándose en el caso práctico mencionado.

En la última sección, se presentan los resultados de la implementación de la herramienta para luego ser analizados bajo factores técnicos y musicales. Y, finalmente, se presentan las conclusiones y reflexiones del proyecto.

2. PROBLEMÁTICA

Al iniciar el presente proyecto, se realizó una etapa de investigación del estado del arte, en la que se buscaron diferentes fuentes que hablaran sobre cómo se puede aplicar el machine learning para generar contenido artístico, y más específicamente, música. En esta etapa se encontraron varias referencias teóricas que se irán mencionando a lo largo del desarrollo del presente documento, pero, también se encontró con que son pocas las referencias prácticas que existen. Es por lo anterior que el uso de esta tecnología puede ser complejo de comprender y utilizar para personas que tienen pocos conocimientos sobre machine learning, y peor, para aquellas personas que no tienen ningún conocimiento de programación computacional, y que se dedican únicamente a la generación de contenido musical.

1 https://alvaroyepes97.medium.com/melody-generator-for-reggaeton-music-2ba75eb1d563

2 https://colab.research.google.com/drive/1UEq5wXyT7IBsqfVPIvDbHj3rFEWNEKqJ

(10)

10

En la búsqueda de diferentes herramientas, se encontró Improv RNN, una herramienta basada en Magenta3, la librería de machine learning para música de Google, la cual es muy poderosa pues permite la generación de nuevas melodías a partir de un entrenamiento con melodías dadas por el usuario; y esto puede llegar a tener varias aplicaciones que apoyen diferentes procesos creativos de compositores musicales. Pero, a la hora de buscar documentación sobre el uso correcto de la herramienta, se encontró con que: es poca, está distribuida en diferentes sitios web no pertenecientes a los desarrolladores oficiales, y no es sencilla de comprender para cualquier tipo de público. Adicionalmente, tampoco se encontraron suficientes casos prácticos, guiados paso a paso, para poder entender la herramienta de forma experimental.

Esto es una problemática puesto que este tipo de herramientas pueden llegar a ser útiles para desarrolladores de software musical y para músicos, que tienen poco o nada de conocimiento sobre machine learning, pero al ser tan deficiente su documentación, se hace imposible su utilización para ellos.

3. OBJETIVOS

El presente proyecto tiene como objetivo general dar un acercamiento inicial al uso de Improv RNN, una herramienta de composición musical basada en machine learning; detallando conceptos teóricos básicos para la comprensión de su funcionamiento, y los conceptos prácticos necesarios para su correcta implementación.

3.1 Objetivos Específicos

Para cumplir el objetivo general definido, se establecen los siguientes objetivos específicos:

3 https://magenta.tensorflow.org/

(11)

11

1. Entrenar con melodías de canciones famosas de reggaetón un modelo basado en Improv RNN, que permita generar nuevas melodías.

2. Desarrollar una aplicación que, utilizando el modelo entrenado en el anterior objetivo específico y bajo ciertos parámetros introducidos por el usuario, permita generar nuevas melodías.

3. Desarrollar un blog que contenga la información teórica y práctica necesarias para la implementación de una herramienta de composición musical basada en Improv RNN, utilizando como caso práctico el desarrollo de la aplicación previamente mencionada.

4. ANTECEDENTES

Respecto al uso de machine learning para generar contenido artístico se destacan dos fuentes bibliográficas:

La primera fuente es el libro Generative Deep Learning: Teaching Machines to Paint, Write, Compose and Play (Fooster, 2019). Este libro presenta una introducción a la generación de varios tipos de contenido artístico, utilizando deep learning, una rama del machine learning. Esto lo hace a través de explicaciones teóricas y de casos prácticos que se pueden aplicar por el lector. A lo largo del libro, se presentan explicaciones teóricas de diferentes modelos de deep learning y de cómo estos pueden ser aplicados para beneficiar la creación de un tipo de arte específico.

En el capítulo dedicado a la composición musical, el autor comienza explicando que para entrenar el modelo de machine learning es necesario convertir la música en un tipo de dato que la máquina pueda entender e interpretar. En el caso de los modelos presentados por el autor, se hace uso del formato MIDI, el cual es una representación computacional de secuencias de notas o acordes. También, se explica que las redes neuronales recurrentes son óptimas para la generación

(12)

12

de música, pues la música se puede ver y generar de manera secuencial, pero, es necesario que en cada paso del modelo generativo se tengan en cuenta lo que ya se ha generado en el pasado, y por eso las redes neuronales recurrentes hacen bien el trabajo de entrenamiento.

La segunda fuente bibliográfica destacada es el artículo Melody Generation for Pop Music (Shin, y otros, 2017), el cual presenta un caso específico de aplicación de un modelo de machine learning, basado en redes recurrentes LSTM (Long-Short Term Memory), para la generación de melodías del género pop. En el documento, se detalla el uso de melodías MIDI, en las que todas y cada una de las distintas notas que había en todos los archivos de entrenamiento era asignada a una palabra de un texto, y se relacionaba a los acordes y métricas rítmicas de las canciones de origen.

Para la evaluación de la implementación, los autores presentaron a participantes con conocimientos básicos, medios y altos en música, melodías generadas por su modelo y melodías generadas por otros dos diferentes modelos generativos. Como resultado en general, obtuvieron que el modelo que habían desarrollado generaba melodías que sonaban más “humanas” que los otros dos modelos, bajo el concepto de sus participantes.

5. METODOLOGÍA

Para el desarrollo del presente proyecto investigativo se decidió utilizar una metodología experimental, la cual estuvo basada en tres etapas: estado del arte, elección y experimentación de la herramienta, e implementación del caso específico. En la presente sección se explican las dos primeras etapas con el fin de dar una contextualización para abordar la problemática, para luego, en el siguiente capítulo, describir la etapa de implementación y desarrollo de la solución propuesta.

(13)

13 5.1 Estado del arte

Al comenzar a abordar la problemática, se desarrolló una etapa de exploración de estado del arte, en la que se buscaron herramientas de machine learning existentes para la generación de contenido musical. En esta etapa se encontró que Magenta de Google es la librería más grande de machine learning que existe para la manipulación y generación de contenido musical. Es decir, Magenta puede ser utilizada para generar contenido musical o como base para generar nuevas herramientas musicales.

Al ser una librería tan poderosa, Magenta permite a sus usuarios utilizar varias de sus aplicaciones preelaboradas o demos, consultar su documentación y acceder al código de cada una.

Además, su sitio oficial contiene referencias a herramientas elaboradas por la comunidad de desarrolladores, las cuales también pueden ser exploradas y decodificadas por los usuarios. A continuación, se mencionan algunas de las herramientas encontradas:

5.1.1 DrumBot4

DrumBot es una aplicación web que permite genera un acompañamiento rítmico en vivo utilizando machine learning (Dinculescu, 2019). Esta es una de las herramientas más destacadas puesto que, a diferencia de la gran mayoría de herramientas, genera bases rítmicas en vivo. Es decir, no es necesario que haya un espacio de tiempo prolongado entre la entrada del músico y la generación de contenido musical.

4 https://magenta.tensorflow.org/drumbot

(14)

14 5.1.2 MidiMe5

MidiMe es una aplicación web según su blog oficial permite personalizar un autocodificador variacional (VAE) para que genere melodías que suenen a la personalidad musical del usuario (Dinculescu, Engel, & Roberts, MidiMe: Personalizing MusicVAE, 2019). En otras palabras, esta aplicación permite a un usuario entrenar un modelo de machine learning utilizando sus propias melodías, y a través de ese modelo generar nuevas melodías que sean similares a las ingresadas por el usuario.

5.1.3 Magic Sketchpad6

La mayor parte de los desarrollos basados en Magenta son para la generación de contenido musical, pero esta librería también puede ser utilizada para generar contenido artístico gráfico.

Dentro de este espectro de tipo de arte se encuentra Magic Sketchpad, la cual es una aplicación web que, luego de que el usuario inicia un dibujo y determina qué tipo de dibujo es, lo completa.

Esta herramienta es interesante puesto que muestra que la capacidad generativa que tiene la librería y que cuenta con varias herramientas que pueden ser utilizadas para casos específicos de generación de arte.

5.2 Improv RNN

Uno de los objetivos específicos del presente proyecto es generar melodías utilizando de un modelo entrenado con melodías famosas de reggaetón, por lo que se hizo una exploración de aquellas herramientas de Magenta que permiten componer entrenar el modelo con melodías dadas por el usuario y a partir de ello componer nuevas melodías. MidiMe, que fue mencionada

5 https://magenta.tensorflow.org/midi-me

6 https://glitch.com/edit/#!/magic-sketchpad

(15)

15

anteriormente, tiene un comportamiento similar al buscado, pero no permite realizar un entrenamiento profundo con varias melodías puesto que su objetivo principal es reducir el tiempo de entrenamiento para hacer su uso más sencillo y rápido.

La herramienta que se ajustó a los parámetros especificados y que se eligió para ser la base de la solución fue Improv RNN. Según la documentación del repositorio oficial del proyecto, Improv RNN genera nuevas melodías utilizando un modelo de Magenta llamado Melody RNN, que toma como parámetros de entrada una melodía inicial y una progresión de acordes a seguir. Este tipo de entradas favorecen el género de música objetivo del presente proyecto, puesto que el reggaetón se caracteriza por utilizar una misma progresión de acordes (entre dos y cuatro) a lo largo de todas sus canciones.

5.2.1 El lenguaje musical

Cuando se habla de machine learning, uno de los factores más importantes para su funcionamiento es entender la forma de entrenar el modelo y los datos con los que se quiere realizar dicho entrenamiento. Al ser un proceso trabajado por la máquina, se requiere que los datos de entrada estén en un formato que pueda ser interpretados por ella, y que a su vez describan de manera exacta el estado de la realidad; en este caso, se espera que la máquina tenga datos de entrada que representen correctamente la melodía musical que se le quiere enseñar.

Actualmente, el formato MIDI (Musical Instrument Digital Interface) es uno de los formatos más utilizados para representar música de manera computacional. Este formato es el estándar que existe para trabajar música en el computador y está presente en todo tipo de programas de manipulación de música: desde DAW (Digital Audio Workspace) hasta editores de partituras como MuseScore. Además, esta interfaz permite que instrumentos reales se puedan comunicar con

(16)

16

el computador y de esta forma permitir que los programas de audio interpreten la música tocada por artistas.

En el caso de Improv RNN se debe hacer un entrenamiento utilizando melodías y armonías y utilizar el formato MIDI puede generar errores de interpretación, pues no permite realizar una diferenciación adecuada sobre la armonía y la melodía del dato ingresado. A continuación, se muestra una imagen de una melodía junto con una armonía en formato MIDI, en la que se destaca que no hay una forma clara de diferenciar qué parte de los datos corresponde a la melodía y cuáles a la armonía (ver Figura 1):

Figura 1. Piano roll que representa gráficamente el formato MIDI

Dado lo anterior, se decidió utilizar datos en formato MusicXML para entrenar el modelo, puesto que este formato es una representación de las partituras, en las que se tiene información sobre la melodía y acompañamiento que realizan los diferentes instrumentos. A continuación, se muestra una melodía y una armonía en formato MusicXML, en la que se destaca que el pentagrama contiene la melodía y la armonía se representa sobre el pentagrama utilizando el cifrado americano:

(17)

17

Figura 2. Partitura en formato MusicXML trabajada desde el programa MuseScore

Gracias a la utilización del formato especificado, el modelo aprende dos características principales: patrones melódicos y relación existente entre la melodía y la armonía de la canción.

Esto permite apoya la generación de melodías más coherentes puesto que preservan las relaciones con el acompañamiento musical.

5.2.2 Melody RNN

La base sobre la cual funciona Improv RNN es Melody RNN7, una de las librerías presentes en Magenta. Según la documentación del repositorio oficial, Melody RNN es un modelo que aplica el modelado del lenguaje a la generación de melodías utilizando una red neuronal LSTM (Long Short Term Memory). Este aspecto es interesante de analizar puesto que, similar al caso aplicado por Shin et al. se hace una codificación del lenguaje musical a lenguaje textual, para permitir su vectorización y así poder entrenar el modelo.

Las redes LSTM, según Fooster, son un tipo particular de redes neuronales recurrentes, las cuales se caracterizan por contar con una capa recurrente que es capaz de manejar secuencias de datos y enviar una salida que afecte la predicción de otros pasos en el tiempo (2019, pág. 167). En

7 https://github.com/magenta/magenta/blob/master/magenta/models/melody_rnn/README.md

(18)

18

otras palabras, estas redes tienen la habilidad de generar salidas con base en datos del presente pero también del pasado, lo que permite entrenar el modelo a través de secuencias de datos.

6. IMPLEMENTACIÓN

6.1 Implementación y entrenamiento del modelo Improv RNN

Buscando en la documentación del modelo Improv RNN se encontraron dos problemáticas principales en la parte del entrenamiento del modelo. En primer lugar, no había fuentes accesibles en internet que tuvieran específicamente la estructura de los datos de entrada del modelo en formato MusicXML y esto se traducía en una imposibilidad de poder siquiera intentar entrenar un modelo propio y dejando como alternativa solo el modelo pre entrenado de Improv RNN. En segundo lugar, no existía alguna propuesta clara que permitiera a los interesados en el modelo generar sus propios datos para entrenar el modelo. Con esta motivación en mente, se planteó la proposición de un flujo de transformación de 3 fases que fuera natural y que cualquier persona pudiera replicar para entrenar sus propios modelos para generar las melodías en el género de música deseado.

El primer paso para entrenar el modelo propuesto fue escoger un género de música para el cual se quisiera generar melodías para apoyar la composición y grabar las muestras de melodías en formato MIDI. Este es el proceso más natural de este flujo y la transformación va desde lo más real, la interpretación del artista (con las melodías que son populares del género escogido), hasta la primera abstracción de la música más popular que es los comandos MIDI que permiten almacenar melodías en cualquier octava y reproducirlas en cualquier medio con cualquier tempo.

Para este proceso se sugirió que se hiciera uso de un controlador MIDI y con ayuda de un DAW se grabaran las melodías deseadas.

(19)

19

El segundo paso en el flujo propuesto es el de importar el MIDI a un programa que permita editar el archivo como una partitura (Music Sheet) y posteriormente exportarlo como MXL. Una vez el archivo MIDI está en el entorno de partitura se deben agregar los acordes manualmente y prestando cuidado de armonizar correctamente y en el lugar adecuado para que la muestra para el modelo sea lo más precisa posible. Esta parte de la transformación requiere de un conocimiento musical básico en armonía y se transforma el archivo de melodía simple en MIDI a melodía armonizada en formato MusicXML.

Figura 3. Ejemplo de cómo se visualiza el MIDI como una partitura cuando se le agregan los acordes.

Después de comprender los primeros dos pasos solo resta generar la mayor cantidad de datos, tantos como sea posible, para entrenar al modelo. Para este ejemplo se realizaron 35 muestras con melodías de reggaetón para entrenar este modelo.

Finalmente, la última transformación corresponde a convertir los datos generados a secuencias de notas que finalmente será la entrada del entrenamiento del modelo. Para completar esta última transformación se deben condensar todos los datos que estaban en formato MusicXML en un solo

(20)

20

archivo que tiene por extensión tfrecord. Esta acción se realizó a través de Magenta pues trae incluida una acción que apunta a un directorio para condensar todos sus archivos en una secuencia de notas. Por último, falta entrenar el modelo tal como está indicado en la documentación del repositorio de Magenta Improv RNN.

Figura 4. Ejemplo del comando que se debe correr en la terminal para crear la secuencia de notas

En pocas palabras, luego de completar todos los pasos anteriormente descritos se puede entrenar un modelo propio de Improv RNN; en este caso se utilizó el entorno de Google colab para hacerlo y probar el modelo entrenado.

6.2 Desarrollo de aplicación

Con ánimo de mostrar los resultados del modelo Improv RNN entrenado con melodías de reggaetón como se mencionó anteriormente, se decidido hacer una aplicación alojada en un notebook de Google Colab, donde se estuvo entrenando el modelo para mostrar de una forma más simple como funcionaba el modelo y con el objetivo de que los usuarios pudieran interactuar con el modelo trabajado en este proyecto.

La aplicación fue construida utilizando una de las librerías más simples para mostrar resultados y crear formularios en los cuadernos de Jupyter: Jupyter Widgets. Básicamente, la aplicación contiene varios elementos escritos en HTML y sumado a los componentes de entrada que almacenan datos en variables de Python, se ejecutan los comandos necesarios para utilizar el modelo.

(21)

21

La estructura de la aplicación RAItmo, que fue el nombre que se le fue asignado, permite escoger el tipo de entrada (entre los posibles para Improv RNN), entre una melodía primaria que puede ser generada aleatoriamente creando una secuencia de 4 eventos que pueden ser notas o silencios y un archivo MIDI que contenga la melodía que puede ser subido directamente usando la aplicación con un file selector. Además, la aplicación deja seleccionar el número de archivos a generar con una slider y escribir la secuencia de acordes en un área de texto.

Por último, RAItmo utiliza el entorno de colab que se conecta al Google drive del usuario donde accede a el modelo entrenado y donde guarda los datos generados. Adicionalmente, se podría decir que se tiene una arquitectura básica de vista controlador.

6.3 Blog tutorial de implementación y utilización

Como una estrategia de poder difundir el conocimiento del que se discutió en los dos puntos anteriores se diseñó un blog que contiene toda la información investigada y el método que se usó en este proyecto, usando como complemente el mismo cuaderno de Google colab trabajado.

El blog tiene como finalidad ser la fuente de conocimiento que enseña a usar el modelo de magenta Improv RNN para generar melodías con machine learning a través de un ejemplo. La estructura del blog está compuesta principalmente de 3 partes. La primera, comprende la construcción del conjunto de datos para entrenar el modelo tal y como se explicó en la primera parte de la implementación de este proyecto. La segunda, comprende la parte del entrenamiento del modelo guiado principalmente de la documentación del repositorio oficial de Improv RNN, pero agregando algunas sugerencias para escoger los hiper parámetros. Finalmente, contiene una síntesis de cómo usar el modelo previamente entrenado y sugiere hacer la comparación entre el modelo pre entrenado de Magenta para que el lector saque sus propias conclusiones al respecto.

(22)

22

Cabe resaltar que esta publicación fue difundida a través de la plataforma de Medium y fue escrita en inglés para aumentar el alcance del público objetivo. El cuaderno de Google Colab está redactado de tal forma que fue citado en el blog para experimentar y replicar todo el flujo que se presenta en el contenido del escrito y hacer un poco más didácticas las instrucciones allí presentadas.

Figura 5. Título de la publicación en Medium complementaria de este proyecto

7. RESULTADOS

Tras la implementación de las tres fases mencionadas en el capítulo anterior, se obtuvieron dos principales resultados: aplicación generativa de melodías entrenada a partir de melodías famosas de reggaetón, y un blog interactivo que explica la utilización de la herramienta.

7.1 RAItmo: Generador de melodías apoyado en machine learning

El principal resultado obtenido en el presente proyecto es RAItmo, una aplicación desarrollada en lenguaje Python que, utilizando Magenta e Improv RNN, genera nuevas melodías. Para entender claramente cómo funciona la aplicación es necesario dividirla en dos partes: modelo Improv RNN entrenado y el aplicativo con interfaz visual. En otras palabras, está compuesto por el modelo entrenado Improv RNN que funciona como la parte lógica de la aplicación, y la parte

(23)

23

visual que permite controlar más fácilmente el modelo para que genere las melodías. A continuación, se presenta una representación de alto nivel del funcionamiento de la aplicación:

Figura 6. Representación de alto nivel de la aplicación

Para su fácil ejecución y utilización, la totalidad de la aplicación se encuentra alojada en Google Colab8, lo que permite correr los comandos sobre un notebook de Jupyter.

7.1.1 Modelo Improv RNN entrenado

Si la RAItmo fuera una aplicación web, el modelo Improv RNN entrenado sería el backend de la aplicación; es decir, sería el módulo encargado de realizar toda la lógica de la aplicación, que en este caso es la generación de nuevas melodías a partir de una serie de parámetros dados por el usuario. En el capítulo anterior, se explicó cómo se realizó el entrenamiento del modelo a partir de melodías famosas de reggaetón, y es a partir de ese modelo que se generan nuevas melodías que

8 https://colab.research.google.com/

(24)

24

siguen los patrones rítmicos y armónicos que encontró la máquina. Adicionalmente, el modelo entrenado permite la generación de la cantidad de muestras que el usuario desee.

El modelo se desarrolló utilizando Python, ya que Magenta está desarrollado con base en Tensorflow9, la principal biblioteca de código abierto de extremo a extremo para el aprendizaje automático (TensorFlow, 2020), la cual está desarrollada en en este lenguaje de programación.

Para poder controlar el modelo y ejecutar ordenes sobre el mismo es necesario tener conocimientos en la utilización de una terminal de comandos, lo que limitaría la cantidad de usuarios que la podrían utilizar correctamente. Adicionalmente, al controlarse a través de comandos, el ingreso de los parámetros a través de la consola puede aumentar la cantidad de errores que se cometen. Dado lo anterior, fue necesario el desarrollo de una interfaz gráfica que permitiera controlar fácilmente el modelo.

7.1.2 Interfaz gráfica

Continuando con la analogía del aplicativo web, esta parte sería el frontend de la aplicación puesto que no se encarga de la lógica principal, sino de la recepción y validación de las entradas proporcionadas por el usuario, utilizando una interfaz gráfica. Además, esta envía los datos de entrada al usuario y guarda las melodías generadas por el modelo, para que el usuario las pueda encontrar y manipular fácilmente. La interfaz gráfica de la aplicación se desarrolló utilizando los widgets de Jupyter.

A continuación, se presenta una imagen que muestra la aplicación:

9 https://www.tensorflow.org/

(25)

25

Figura 7. Interfaz gráfica de RAItmo

Como se puede apreciar en la imagen, una de las características de la aplicación es la generación de melodías a partir de un archivo MIDI o de una semilla aleatoria. En el caso de que el usuario quiera que la herramienta genere una melodía a partir de una idea inicial en formato puede seleccionar la opción: utilizar un archivo MIDI como entrada. Pero, en caso de que el usuario no cuente con una idea inicial, la opción de generar una semilla aleatoria genera una melodía inicial aleatoria, y a partir de ella se generará la melodía.

7.1.3 Ejecución de RAItmo

Luego de comprender la composición de la aplicación y su interacción entre sus dos principales módulos, se realizaron dos tipos de ejecuciones: generación de melodías a partir de una semilla aleatoria y generación de melodías a partir de una melodía existente. Tras cada ejecución, la aplicación generaba N melodías en formato MIDI, guardadas directamente en el almacenamiento de Google Drive conectado por el usuario.

Luego, se encontró que cada tipo de ejecución genera distintos tipos de resultados.

(26)

26 7.1.3.1 Ejecución a partir de una semilla aleatoria

Cuando la aplicación se ejecuta a partir de una semilla aleatoria, se obtienen como resultados melodías con patrones melódicos menos coherentes entre sí. Es decir, la aplicación genera melodías con una sonoridad más aleatoria, lo que hace que la utilidad de las melodías generadas pueda llegar a ser menor. Este fenómeno se debe a que la herramienta intenta continuar con el patrón melódico inicial dado como entrada, en este caso un patrón aleatorio, por lo que las notas que continúa generando tienden a ser más aleatorias.

7.1.3.2 Ejecución a partir de una melodía dada por el usuario

La ejecución de la herramienta a partir de una melodía inicial dada por el usuario tuvo una tendencia a generar melodías más coherentes y útiles. Este fenómeno sucede por la misma razón que se explicó anteriormente; pues, en este caso, la herramienta intenta continuar con una melodía que no cuenta con notas aleatorias, sino que ya trae consigo un patrón rítmico dado por el usuario, lo cual da más coherencia.

7.2 Blog interactivo en Medium y Google Colab

El resultado secundario del presente proyecto fue el blog interactivo “Melody Generator for Reggaeton Music” en Medium, apoyado en Google Colab, el cual tiene como función principal explicar aspectos teóricos esenciales y prácticos para la implementación de Improv RNN. El resultado se denomina un blog interactivo puesto que además de contener texto explicativo e imágenes de referencia, a través de Google Colab se puede interactuar con el código directamente y ver sus resultados.

El blog está desarrollado en inglés con el fin de tener un mayor alcance en la población que puede leerlo. Además, está desarrollado utilizando un lenguaje poco específico, poco técnico y

(27)

27

dirigido para cualquier tipo de público, lo cual permite que un público con pocos conocimientos en desarrollo de software pueda entenderlo y utilizarlo.

8. ANÁLISIS DE RESULTADOS

Un aspecto importante que se debe tener en cuenta es que la herramienta genera contenido artístico, por lo que no existe una métrica exacta para evaluar qué tan buenas o malas son las melodías generadas. Es decir, puede que para algunos usuarios las melodías generadas suenen mal, pero para otros suenen bien, todo esto bajo complejos factores contextuales. Dado esto, las apreciaciones realizadas sobre los resultados se basaron en el concepto de los autores del presente texto, quienes tienen más de diez años de experiencia generando contenido musical y más de dos años trabajando como productores musicales.

8.1 Similitudes del proceso de composición entre máquina y humano

Es interesante analizar la similitud que hay entre el proceso completo de generación de música de un humano y de una máquina. El proceso comienza entrenando a la máquina a través de melodías ya existentes, lo cual es similar a la generación de creatividad a partir de música ya existente que escucha un compositor a diario, la cual sigue sus gustos e interese personales; y en ambos casos, es a partir de esos conocimientos previos que se reconocen diferentes patrones rítmicos, melódicos y armónicos para la creatividad.

También, teniendo en cuenta los resultados obtenidos a partir de cada tipo de ejecución, es más sencillo para un compositor generar una melodía coherente, y que se ajusta a los resultados esperados, si se cuenta con una idea inicial, puesto que da una guía más clara de los patrones que

(28)

28

la melodía deberá seguir. Pero, es más probable generar melodías aleatorias y poco coherentes si no se cuenta con ninguna idea inicial y se parte de música generada aleatoriamente.

9. CONCLUSIONES

RAItmo es una primera aproximación a la utilización de machine learning para la composición de melodías musicales, pues permite la generación de melodías musicales a partir de un entrenamiento con melodías famosas de reggaetón y de parámetros de entrada como una armonía musical a seguir y una melodía inicial. Su implementación puede ser llevada a mayor profundidad a través del entrenamiento con diferentes géneros musicales y la utilización de diferentes parámetros.

Esta herramienta es un aporte valioso para la comunidad de desarrollo de machine learning ya que es una implementación específica de las capacidades generativas que tienen Magenta e Improv RNN, en este caso para la generación de melodías con base en melodías de reggaetón.

También, la implementación del blog interactivo es un aporte, no sólo para la comunidad interesada en el desarrollo de machine learning, sino también para los usuarios que cuentan con poca experiencia en el desarrollo de software, como lo pueden ser los compositores musicales.

Esto es debido a que, dada la poca documentación que hay sobre estas dos librerías y su complejo lenguaje técnico, es complejo para usuarios con pocas aproximaciones al desarrollo de software utilizar correctamente las herramientas y entender todo el proceso de entrenamiento. Pero, a partir del tutorial generado y explicado paso a paso, es posible para estos usuarios seguir un caso práctico y aplicarlo para sus intereses personales.

Finalmente, es importante destacar que existe una gran similitud en el proceso de composición musical que sigue un ser humano y la máquina, teniendo etapas análogas entre sí. Además, la

(29)

29

herramienta, al ser una primera aproximación a la composición de melodías, puede ser utilizada como apoyo en el proceso creativo de un compositor humano, generando ideas musicales nuevas que él puede utilizar y modificar a su medida.

10. REFERENCIAS

Alpaydin, E. (2016). Machine Learning : The New AI. Cambridge: The MIT Press.

Dinculescu, M. (2 de Diciembre de 2019). DrumBot: your real-time ML drummer. Obtenido de DrumBot: your real-time ML drummer: https://magenta.tensorflow.org/drumbot

Dinculescu, M., Engel, J., & Roberts, A. (23 de Julio de 2019). MidiMe: Personalizing MusicVAE. Obtenido de MidiMe: Personalizing MusicVAE:

https://magenta.tensorflow.org/midi-me

Fooster, D. (2019). Generative Deep Learning: Teaching Machines to Paint, Write, Compose and Play. Sebastopol: O'Reilly.

Shin, A., Crestel, L., Kato, H., Saito, K., Ohnishi, K., Yamaguchi, M., . . . Harada, T. (31 de Octubre de 2017). MELODY GENERATION FOR POP MUSIC VIA WORD

REPRESENTATION OF MUSICAL PROPERTIES. Tokio, Japón: THE UNIVERSITY OF TOKYO.

TensorFlow. (14 de Diciembre de 2020). TensorFlow. Obtenido de TensorFlow:

https://www.tensorflow.org/

Referencias

Documento similar

En el caso del modelo Deep Learning, el tiempo de entrenamiento depende tanto del número de imágenes de entrenamiento que conforman el dataset, como de los parámetros validation

Figure 4.16 shows the training and validation progression for a vanilla U-Net model and for two Attention Gated U-Net models, trained with Dice and Hybrid Loss functions and with

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

The recent exponential growing of machine learning techniques (data-mining, deep-learning, manifold learning, linear and nonlinear regression techniques ... to cite but a few) makes

Sanz (Universidad Carlos III-IUNE): "El papel de las fuentes de datos en los ranking nacionales de universidades".. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,