Full text
Asistente para composición de música minimalista TRABAJO DE FIN DE GRADO David Roldán Santos Doble grado Matemáticas-Ingeniería Informática Universidad Complutense de Madrid 13 de septiembre de 2016 Directores: Jaime Sánchez Hernández Marco Antonio Gómez Martín
Documento maquetado con T EXiS v.1.0. Este documento está preparado para ser imprimido a doble cara.
Resumen Podemos definir como música minimalista toda aquella música que es creada a partir de recursos limitados. Algunas de las características más comunes de esta corriente son el uso de armonías o ritmos constantes, reiteración de frases y utilización de transformaciones lentas. La sencillez que caracteriza a este tipo de música nos permite analizar algunas de estas características computacionalmente. Entre ellas, podemos destacar la utilización de breves figuras melódicas, a las que llamaremos motivos, y el uso de variaciones musicales sobre estos. Con el fin de analizar estas características, se ha desarrollado un asistente de composición musical con el que, a partir de uno o varios motivos, el usuario podrá crear composiciones musicales de carácter minimalista utilizando variaciones automatizadas. El asistente cuenta con una interfaz que permite gestionar los motivos con facilidad, mostrar su partitura, reproducirlos, aplicar variaciones sobre ellos y editarlos de forma manual. Para la parte musical de la aplicación se ha utilizado notación ABC, una notación musical estandarizada muy completa que permite leer y editar música con facilidad. Palabras clave Música minimalista, notación ABC, motivo musical, variación musical iii
Abstract Minimal music is a form of music that employs limited or minimal musical materials. It is characterised by repeated rhythm and harmony, repeated musical phrases, and the use of slow transformations. The simplicity that characterizes this musical style allows us to analyze it from a computational point of view. Among these, we may remark the usage of short musical phrases called motifs, and the use of musical variations. Looking towards the analysis of these characteristics, a minimal music assistant has been developed, where the user can apply built-in automatized variations to different motifs. The assistant provides a user interface that allows the user to manage these motifs easily, being able to play, show their music sheets, apply variations and edit them manually. For the musical part of the application, ABC notation has been used. ABC notation is a powerful standardized notation designed to easily read and edit music. Keywords Minimal music, ABC notation, motif, variation v
Índice Resumen iii Abstract v 1. Introducción 1 2. Conceptos musicales 5 2.1. Música............................... 5 2.2. El sistema musical: escalas y tonalidad . . . . . . . . . . . . . 6 2.3. Intervalos ............................. 7 2.4. Motivos musicales y formas musicales construidas a partir de motivos .............................. 8 2.5. Variaciones musicales . . . . . . . . . . . . . . . . . . . . . . . 9 3. Asistente musical 11 3.1. Ejecutando el asistente musical . . . . . . . . . . . . . . . . . 11 3.2. Interfazgráfica .......................... 12 3.2.1. Creando un nuevo proyecto . . . . . . . . . . . . . . . 13 3.2.2. Barra de menú principal . . . . . . . . . . . . . . . . . 13 3.2.3. Árbol de motivos . . . . . . . . . . . . . . . . . . . . . 13 3.2.4. Ventana de creación y edición de motivos . . . . . . . 15 3.2.5. Secuenciador musical . . . . . . . . . . . . . . . . . . . 15 3.3. NotaciónABC .......................... 16 3.4. Variaciones de motivos . . . . . . . . . . . . . . . . . . . . . . 18 4. Desarrollo de la aplicación 25 4.1. Lenguaje de programación y tecnologías utilizadas . . . . . . 25 4.1.1. C#y .NET Framework . . . . . . . . . . . . . . . . . . 25 4.1.2. Notación ABC . . . . . . . . . . . . . . . . . . . . . . 25 4.1.3. ANTLR.......................... 26 4.2. Estructura de datos interna de la aplicación . . . . . . . . . . 26 4.2.1. Motivos musicales . . . . . . . . . . . . . . . . . . . . 26 vii
viii Índice 4.2.2. Composiciones musicales . . . . . . . . . . . . . . . . . 28 4.2.3. Importación y exportación archivos ABC . . . . . . . 29 4.2.4. Archivos de proyecto . . . . . . . . . . . . . . . . . . . 30 4.3. Interfazgráfica .......................... 30 4.3.1. Árbol de motivos . . . . . . . . . . . . . . . . . . . . . 31 4.3.2. Ventana de edición de motivos . . . . . . . . . . . . . 31 4.3.3. Secuenciador y reproductor de música . . . . . . . . . 31 4.4. Variaciones musicales . . . . . . . . . . . . . . . . . . . . . . . 32 4.4.1. La clase Variation .................... 32 4.4.2. Implementación de las variaciones musicales . . . . . . 33 5. Conclusiones 43 5.1. Trabajofuturo .......................... 44 A. Ejemplo de uso: creando una composición minimalista 45 B. Análisis de una composición minimalista 51 Bibliografía 55
Índice de figuras 2.1. Escalas de do mayor y do menor . . . . . . . . . . . . . . . . 7 2.2. Comienzo de la Invención 1, de J.S. Bach. . . . . . . . . . . . 9 2.3. Ejemplo de transporte sobre un motivo. . . . . . . . . . . . . 9 3.1. Pantalla principal del asistente musical . . . . . . . . . . . . . 12 3.2. Menú de archivo . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3. Ejemplo de árbol de motivos. . . . . . . . . . . . . . . . . . . 14 3.4. Menú contextual de un motivo. . . . . . . . . . . . . . . . . . 14 3.5. Pista del secuenciador musical. . . . . . . . . . . . . . . . . . 16 3.6. Ejemplo de archivo en formato ABC................ 17 3.7. Representación en forma de partitura de la Figura 3.6. . . . . 18 3.8. Inversión de Rachmaninoff aplicada al motivo original de Paganini................................ 20 4.1. Esquema general de la representación interna de un motivo. . 28 4.2. Representación interna de motivos. . . . . . . . . . . . . . . . 33 4.3. Eje de simetría sobre la nota Do. ................ 34 4.4. Motivo resultante tras aplicar la inversión. . . . . . . . . . . . 35 4.5. Modulación estática de Do Mayor aFa Mayor. La triada resultante es un acorde en segunda inversión (V-I-III). . . . . . . . 39 4.6. Retardos aplicados sobre el motivo durante el proceso de canonización. ............................ 41 A.1. Motivo inicial de la canción Campanitas del lugar. . . . . . . . 45 A.2. Estado de la aplicación tras haber creado el motivo inicial y arrastrado al secuenciador. . . . . . . . . . . . . . . . . . . . . 46 A.3. Estado de la aplicación tras haber añadido las tres primeras variaciones del motivo original. . . . . . . . . . . . . . . . . . 47 A.4. Estado de la aplicación tras añadir las variaciones de armonización al secuenciador. . . . . . . . . . . . . . . . . . . . . . . 47 A.5. Motivo campanitas_modulation_interpolate visto desde la ventanadeedición........................... 48 ix
Capítulo 2 Conceptos musicales En este capítulo, se introducirán una serie de conceptos musicales que serán útiles para poder entender el funcionamiento de la aplicación desarrollada. La intención es describir estos conceptos desde un punto de vista informático, de modo que el lector pueda entender e identificarlos sin la necesidad de tener un conocimiento musical elevado. Algunos de estos conceptos no serán necesarios para poder trabajar con la aplicación en modo usuario, pero sí para entender parte de la implementación. 2.1. Música Es difícil exponer con precisión una definición de música, ya que el concepto de esta ha ido evolucionando con el tiempo. Una posible definición sería una manifestación artística que consiste en dar un conjunto de sonidos y silencios, de forma que el resultado sea coherente y agradable para el oído [16]. El fin de este arte es provocar una experiencia estética en el oyente, ya que la música puede ser utilizada como un medio de expresión de ideas, sentimientos o pensamientos. La música se puede descomponer en dos elementos básicos: los sonidos y los silencios. El sonido es la sensación percibida por el oído al recibir las variaciones de presión generadas por el movimiento vibratorio de los cuerpos sonoros. El sonido tiene cuatro cualidades básicas, que son las siguientes: •La altura es la frecuencia a la que se propaga un sonido, es decir, la cantidad de ciclos por segundo que se emiten. Podemos definir los sonidos como graves y agudos, de tal forma que, cuanto mayor sea la frecuencia, más agudo será el sonido. •La duración se corresponde con el tiempo en el que se mantiene un sonido. 5
6Capítulo 2. Conceptos musicales •La intensidad es la cualidad que permite distinguir entre un sonido suave y un sonido fuerte. •El timbre es una cualidad del sonido que permite diferenciarlo de otro que tenga la misma altura, duración e intensidad. Cuando la altura de un sonido es constante, podemos referirnos a ese sonido como una nota musical. Si dos o más notas suenan de forma simultánea, estas forman un acorde. El silencio es la ausencia de sonido. 2.2. El sistema musical: escalas y tonalidad El sistema de afinación musical más utilizado en todo el mundo es el llamado sistema temperado. En este sistema se obtiene una gama total de doce sonidos diferentes uniformemente espaciados. La distancia mínima entre cada uno de estos sonidos se llama semitono, y por tanto se llama tono al doble de la distancia de un semitono. Definimos como octava a una distancia de doce semitonos. Podemos decir que, si dos notas se encuentran a una distancia de doce semitonos o un múltiplo de 12, estas dos notas son la misma nota, pero están en octavas distintas. Las notas se agrupan siguiendo un sistema al que se denomina tonalidad. Los elementos básicos de la tonalidad son las escalas, que están compuestas por siete notas musicales. Existen varios tipos de escalas dependiendo de cómo estén organizadas las notas que las componen. El modo de una escala es el encargado de definir la organización de las notas de la escala. Aunque existen muchos modos, nos centraremos principalmente en los dos modos más comunes: modo mayor y modo menor: La escala mayor está distribuida de la siguiente forma: tono, tono, semitono, tono, tono, tono y semitono. Es decir, la tercera y cuarta nota de la escala están a una distancia de un semitono, y la séptima con la primera están también a una distancia de un semitono. El ejemplo más común es la escala de do mayor, mostrada en la Figura 2.1, donde tanto Mi yFa como Si yDo están a una distancia de un semitono. La escala menor está distribuida de la siguiente forma: tono, semitono, tono, tono, semitono, tono, tono. Se llama grado a la posición de cada nota dentro de una escala musical. Por ejemplo, en la escala de do mayor, los distintos grados corresponden a las siguientes notas:
2.3. Intervalos 7 Grado Nota I (tónica) Do II (supertónica) Re III (mediante) Mi IV (subdominante) Fa V (dominante) Sol VI (superdominante) La VII Si (a) Escala de do mayor, formada por la siguiente secuencia de notas: Do,Re,Mi,Fa,Sol, La,Si yDo. (b) Escala de do menor, formada por la siguiente secuencia de notas: Do,Re,Mi[,Fa,Sol, La [,Si [yDo. Figura 2.1: Escalas de do mayor y do menor Una triada es un acorde formado por tres notas. Aunque una triada puede ser un acorde con tres notas cualesquiera, generalmente nos referimos con este nombre al acorde formado por el I, III y V grado. Llamamos triada mayor al acorde formado por el I, III, y V grado de una escala mayor, y triada menor al acorde formado a partir de una escala menor. 2.3. Intervalos Un intervalo mide la distancia o altura entre dos notas musicales. El nombre de un intervalo viene dado por el número de grados que hay entre las dos notas musicales, y por su especie, que puede ser mayor, menor, justa, aumentada o disminuida. Se denominan intervalos simples a aquellos intervalos no mayores a una octava. En la Tabla 2.1 podemos observar la equivalencia entre los intervalos simples y su distancia en tonos y semitonos.
8Capítulo 2. Conceptos musicales Intervalo Distancia en tonos y semitonos Unísono 0 semitonos (mismo sonido) Segunda menor un semitono Segunda mayor / tercera disminuida un tono Tercera menor / segunda aumentada un tono y un semitono Tercera mayor / cuarta disminuida 2 tonos Cuarta justa / tercera aumentada 2 tonos y un semitono Cuarta aumentada / quinta disminuida 3 tonos Quinta justa / sexta disminuida 3 tonos y un semitono Sexta menor / quinta aumentada 4 tonos Sexta mayor / séptima disminuida 4 tonos un semitono Séptima menor / sexta aumentada 5 tonos Séptima mayor 5 tonos un semitono Octava justa 6 tonos Tabla 2.1: Equivalencia entre intervalos y distancia en tonos y semitonos. Por ejemplo, el intervalo entre un do y un la es una sexta mayor, ya que hay una distancia de seis grados (Do-Re-Mi-Fa-Sol-La), y hay una distancia de cuatro tonos y un semitono. 2.4. Motivos musicales y formas musicales construidas a partir de motivos Un motivo musical es una unidad de construcción breve, fácilmente reconocible debido al impacto temático que tiene en una obra musical. Es utilizado como un punto de partida para la construcción de unidades más extensas y generalmente tiene una formación rítmica y melódica característica. Una de las primeras formas musicales donde se puede detectar la repetición de motivos es en el canon. El canon es una pieza musical basada en la imitación entre dos o más voces separadas por un intervalo temporal. Un ejemplo de canon muy conocido es el Canon en Re Mayor, de Johann Pachelbel. Ya en el siglo XVII aparecieron formas musicales más complejas como la fuga, que consiste en el desarrollo de un motivo principal llamado sujeto a partir del uso de transformaciones, y utilizando fragmentos libres en las repeticiones, y las invenciones, que fueron introducidas por J.S. Bach, en las cuales todo el material de la composición deriva de un motivo principal. En la Figura 2.2 se puede observar cómo el motivo original sufre una serie de transformaciones a lo largo del tema. A esas transformaciones las llamaremos variaciones.
2.5. Variaciones musicales 9 Figura 2.2: Comienzo de la Invención 1, de J.S. Bach. 2.5. Variaciones musicales Como acabamos de ver, una variación es un recurso musical que consiste en la repetición con ciertas modificaciones de un motivo musical. Podemos clasificar las variaciones en tres tipos [3]: Variación por ornamentación o melódica: es aquella en la que el tema sufre transformaciones melódicas, pero sigue conservando toda su esencia melódica y armónica. Variación por elaboración o armónico-contrapuntística: es aquella en la que la melodía permanece inalterada o casi inalterada, pero sufre cambios en el ritmo o la armonía. Variación por amplificación: el motivo original se utiliza para crear nuevas melodías y armonías a partir de este. En la Figura 2.3 podemos ver un ejemplo de variación denominado transporte. Esta variación consiste en trasladar la altura de cada una de las notas a la misma distancia, obteniendo como resultado una interpretación del motivo original en una tonalidad distinta. Figura 2.3: Ejemplo de transporte sobre un motivo. Un ejemplo de una obra creada a partir de variaciones musicales es la obra Variaciones en Do Mayor (KV265), de Wolfgang Amadeus Mozart,
10 Capítulo 2. Conceptos musicales que consta de doce variaciones sobre la canción francesa Ah! vous dirai-je, Maman, también conocida como la canción infantil Campanitas del lugar. Para este proyecto, se han seleccionado una serie de variaciones que puedan ser automatizadas. Algunas de estas variaciones serán deterministas, pero otras tendrán una componente aleatoria. En el próximo capítulo veremos qué transformaciones han sido implementadas en la aplicación y un ejemplo de cada una de ellas.
Capítulo 3 Asistente musical A continuación vamos a introducir la aplicación que ha sido desarrollada para este trabajo: un asistente que permite la creación de composiciones musicales mediante el uso de variaciones automatizadas. En este capítulo haremos un recorrido sobre la aplicación, viendo su interfaz gráfica y las funciones que puede realizar. 3.1. Ejecutando el asistente musical El asistente de música minimalista sólo es compatible con Windows 7 o superior. Para poder ejecutar la aplicación se debe instalar previamente .NET Framework 4.5, y Ghostscript. Para ejecutar el asistente musical, simplemente debemos abrir el archivo MusicaMinimalista.exe. En el directorio raíz, podemos encontrar varios archivos .dll que son necesarios para poder ejecutar la aplicación. Dentro de este directorio, podemos encontrar las siguientes carpetas: bin: contiene varios archivos ejecutables que el asistente musical utilizará durante su ejecución. files: carpeta que se utilizará por defecto para almacenar archivos en formato ABC. midi: carpeta que se utilizará por defecto para guardar archivos de audio en formato MIDI que sean exportados por el asistente. pdf : carpeta que se utilizará por defecto para guardar partituras en formato PDF que sean exportadas por el asistente. projects: carpeta que se utilizará por defecto para guardar los proyectos creados con el asistente. temp: carpeta que el asistente musical utilizará para crear archivos temporales. 11
12 Capítulo 3. Asistente musical 3.2. Interfaz gráfica Para crear la interfaz de usuario se han tomado principalmente dos referencias: LMMS [6] y FL Studio [12], que son editores musicales cuyo área de trabajo principal es un secuenciador basado en patrones. Un secuenciador basado en patrones es una herramienta que representa una línea temporal, en la que se pueden insertar fragmentos musicales (patrones) de forma ordenada para crear una composición musical. En nuestro caso, contaremos con un área de trabajo parecida a estos secuenciadores, donde podremos insertar los motivos musicales que vayamos generando para crear una composición musical de carácter minimalista. Al ejecutar la aplicación, se muestra la pantalla principal, que podemos ver en la Figura 3.1. La pantalla principal cuenta con tres componentes: Una barra de menú principal, desde donde se pueden cargar y guardar proyectos, cargar y crear motivos, y exportar motivos en distintos formatos. Un árbol de motivos, que se encuentra en la parte izquierda de la pantalla principal. Este árbol incluye todos los motivos musicales que están cargados en el proyecto. En la parte derecha tenemos un secuenciador, que es el área principal de edición. El secuenciador está formado por varias pistas en las que se pueden insertar los motivos musicales que están en el árbol de motivos. Figura 3.1: Pantalla principal del asistente musical
3.2. Interfaz gráfica 13 3.2.1. Creando un nuevo proyecto Un archivo de proyecto es un archivo que contiene toda la información acerca de una composición creada con el asistente musical. A esta información la llamaremos proyecto. Para crear un proyecto nuevo, hacemos click sobre la pestaña de menú de archivo de la barra de menú principal, y elegimos la opción de Nuevo proyecto. En el Apéndice A podemos ver un ejemplo de uso de la aplicación. 3.2.2. Barra de menú principal La barra de menú principal cuenta con dos menús desplegables: el menú de archivo y el menú de edición. El menú de archivo permite la creación, carga y guardado de archivos proyectos, la carga y la creación de nuevos motivos, y la exportación de proyectos en distintos formatos. En la Figura 3.2 podemos ver los comandos que tiene el menú de archivo. Figura 3.2: Menú de archivo Por otro lado, el menú de edición permite deshacer y rehacer acciones realizadas, como por ejemplo, cargar un motivo, eliminar un motivo, o subir el volumen de una pista del secuenciador. 3.2.3. Árbol de motivos Como acabamos de ver, el árbol de motivos muestra todos los motivos musicales que están cargados en el proyecto. Se utiliza una representación en forma de árbol para poder diferenciar los motivos que han sido obtenidos a partir de otros motivos mediante variaciones musicales, y los motivos que han sido creados o cargados a partir de un archivo.
20 Capítulo 3. Asistente musical situado en la tónica de la tonalidad, en caso de que la tonalidad sea mayor, y en el tercer grado, en caso de que la tonalidad sea menor. A continuación se muestra el motivo originado tras aplicar una inversión sobre el motivo original: Pista 6 En este ejemplo, el eje de simetría se sitúa sobre la nota Do, ya que la tonalidad del motivo es Do Mayor. Inversión de Rachmaninoff : la inversión de Rachmaninoff es un caso especial de inversión donde se conserva la separación de semitonos entre la secuencia de notas. Esta inversión característica fue utilizada por el compositor Sergei Rachmaninoff en su obra llamada Rapsodia sobre un tema de Paganini, como se muestra en la Figura 3.8. Esta pieza musical es un conjunto de 24 variaciones sobre el Capricho no24 de Niccolo Pagainini, entre las que se encuentra esta inversión. Paganini Inversión de Rachmaninoff Figura 3.8: Inversión de Rachmaninoff aplicada al motivo original de Paganini. A continuación, se muestra el motivo resultante tras aplicar una inversión de Rachmaninoff sobre el motivo inicial que hemos utilizado de ejemplo: Pista 7 Transporte tonal: el transporte tonal consiste en modificar la altura de las notas del motivo, de tal forma que las notas que pertenecen a la tonalidad siguen perteneciendo a la tonalidad. Esta variación recibe
3.4. Variaciones de motivos 21 como parámetro el número de grados de la escala que se va a transportar. A continuación, se muestra el motivo originado tras aplicar un transporte tonal de tres grados de la escala sobre el motivo original: Pista 8 Modulación estática: esta variación consiste en modificar la tonalidad de un motivo, desplazando la altura de las notas del motivo lo mínimo necesario, de tal forma que las notas que pertenecían a la tonalidad original pertenezcan a la nueva tonalidad, y en particular, que las notas que pertenecían a la triada fundamental de la tonalidad original pasen a pertenecer a la triada de la nueva tonalidad. La modulación estática recibe como parámetro la tonalidad a la que se quiere modular. En el siguiente ejemplo se muestra el motivo originado tras aplicar una modulación estática sobre el motivo original a Fa mayor: Pista 9 Canonización: se aplica un retardo específico al motivo con el objetivo de minimizar la disonancia entre el motivo original y el motivo retardado. Veamos un ejemplo:
22 Capítulo 3. Asistente musical Pista 10 En este ejemplo, la primera voz se corresponde con el motivo original, y la segunda voz el el motivo resultante tras aplicar una canonización sobre el motivo original. Interpolación: inserción de una o varias notas sobre un motivo. La notas añadidas sobre el motivo resultante son notas pertenecientes a la tonalidad elegidas al azar, dando más peso a las notas que pertenecen a la triada fundamental. En el ejemplo siguiente podemos ver el motivo originado tras aplicar una interpolación sobre el motivo original: Pista 11 Elipsis: omisión de una o varias notas de un motivo. La elección de las notas a omitir se realiza al azar. A continuación se muestra el resultado tras aplicar una elipsis sobre el motivo original: Pista 12 Permutación de la triada: la permutación de triada consiste en identificar cada una de las notas que pertenecen a la triada fundamental de
3.4. Variaciones de motivos 23 la tonalidad, e intercambiarlas entre ellas de forma aleatoria. A continuación se muestra un ejemplo de permutación de la triada sobre el motivo original: Pista 13 Como la tonalidad del motivo original es do mayor, la triada fundamental está formada por Do,Mi ySol. Cada una de estas notas ha sido transformadas por otra nota perteneciente a la triada. Armonización: la armonización es una variación experimental que consiste en convertir las notas del motivo en acordes, utilizando notas de la triada fundamental de la tonalidad para completar dichos acordes. El funcionamiento de esta transformación mejorará si en un futuro se añade un análisis armónico sobre los motivos. A continuación podemos ver el resultado tras aplicar una armonización sobre el motivo original: Pista 14
Capítulo 4 Desarrollo de la aplicación 4.1. Lenguaje de programación y tecnologías utilizadas En este capítulo se abordará tanto la implementación del asistente musical como la parte algorítmica utilizada para crear las variaciones musicales. 4.1.1. C#y .NET Framework El proyecto ha sido desarrollado en C#, un lenguaje de programación orientado a objetos desarrollado por Microsoft y estandarizado como parte de su plataforma .NET. El entorno de desarrollo escogido has sido Microsoft Visual Studio, ya que es el más utilizado para este lenguaje. El único sistema operativo compatible con esta aplicación es Windows, ya que para la interfaz gráfica se ha utilizado Windows Forms, que proporciona acceso a los elementos de la interfaz de Windows, y para la reproducción de música se ha utilizado Windows Media Player, un componente exclusivo de Windows que permite ser añadido como control directamente a la interfaz de usuario de una aplicación Windows Forms. Se ha utilizado una librería de C#para poder visualizar imágenes en formato SVG, obtenida a través del gestor de paquetes NuGet que está incluido dentro de Visual Studio. Esta librería ha sido útil para poder mostrar partituras dentro de la aplicación. 4.1.2. Notación ABC Como ya hemos visto en el capítulo anterior, se ha utilizado la notación ABC para la parte musical de la aplicación. La principal ventaja a la hora de utilizar esta notación musical es que existen varios paquetes de software que permiten procesar y convertir estos archivos en archivos de audio, o representarlos en forma de partitura. Para esta aplicación, se han utilizado 25
26 Capítulo 4. Desarrollo de la aplicación dos de ellos: abc2midi, que es un conversor de ABC aMIDI, y abcm2ps, que convierte los archivos en partituras tanto en formato PostScript como en SVG. 4.1.3. ANTLR Como acabamos de ver, se han utilizado varios paquetes de software para convertir archivos en formato ABC a archivos de audio y a partituras. Sin embargo, ninguno de estos paquetes nos permite convertir este tipo de archivo en la estructura interna de datos utilizada dentro de la aplicación. Para realizar esta tarea se ha utilizado ANTLR [10], una herramienta que permite crear compiladores y traductores de lenguaje a partir de una descripción gramatical del lenguaje de partida, y que tiene una versión disponible para C#. La versión de ANTLR utilizada para este proyecto es ANTLR4. En la Subsección 4.2.3 veremos con más detalle cómo se ha realizado la importación y exportación de archivos ABC en la aplicación. 4.2. Estructura de datos interna de la aplicación Existen múltiples posibilidades a la hora de crear una estructura de datos para representar música. Para poder elegir una estructura que se ajuste lo mejor posible a esta aplicación debemos recordar cuál es el principal objetivo del asistente: crear composiciones de música minimalista. Esto quiere decir que no nos bastará con crear una simple lista de notas para crear una pieza musical, sino que debemos agrupar esas notas en motivos, e incorporar esos motivos a otra estructura mayor para crear dicha pieza. 4.2.1. Motivos musicales Como hemos visto en capítulos anteriores, un motivo musical es esencialmente un fragmento musical breve que puede derivar en otros motivos mediante variaciones. Debemos tener en cuenta las siguientes consideraciones: 1. Un motivo puede tener varias voces, es decir, un motivo puede estar formado por varias melodías que suenan a la vez. 2. Cada una de estas melodías o voces puede contener acordes. Por lo tanto, se han creado los siguientes objetos para la representación de los motivos: El objeto Note servirá para representar las notas musicales. Este objeto tiene dos atributos: la duración, que está representada en forma de
4.2. Estructura de datos interna de la aplicación 27 fracción1, y la altura (pitch), que es un entero. La representación de la altura es la misma que en la de los archivos MIDI, tomando cada nota un valor entre 0 y 127, siendo 127 el valor correspondiente a la nota más aguda. Adicionalmente se utiliza el valor -1 para representar los silencios. Los acordes se representan mediante el objeto Chord, que contiene una lista de notas. Tanto Note como Chord heredan de una clase abstracta llamada MusicItem. Para agrupar tanto notas como acordes en una melodía o voz se utiliza la clase Voice, que contiene una lista de MusicItem. Esta clase representa cada una de las voces que contiene un motivo musical. Por último, la clase Motif contiene los siguientes atributos: •Un entero id, que servirá para identificar de forma única a cada uno de los motivos. •El identificador del motivo padre parentId. Si el motivo ha sido cargado de archivo o creado de cero, el valor de parentId será -1. •Una lista de voces. •La variación que se ha utilizado para crear el motivo. Veremos la implementación de la clase Variation más adelante. •La tonalidad del motivo, que servirá como información adicional para aplicar ciertas variaciones. Aunque es posible determinar la tonalidad de un motivo mediante análisis armónico, realizar dicho análisis es complejo y queda fuera del alcance de este proyecto. Es posible determinar la tonalidad de un motivo mediante análisis armónico, sin embargo, realizar dicho análisis es complejo y se queda fuera del alcance de este proyecto. Como alternativa, la tonalidad del motivo vendrá dado y servirá como información adicional para aplicar ciertas variaciones. En la Figura 4.1 podemos ver un esquema general de la representación interna de motivos en la aplicación. En la sección de variaciones musicales, veremos algunos de los métodos que contiene esta clase y cómo aplicar variaciones a los motivos. 1El asistente musical utiliza como medida de referencia la negra. Por lo tanto, las duraciones de las distintas figuras son las siguientes: redonda = 4, blanca = 2, negra = 1, corchea = 1/2, semicorchea = 1/4, fusa = 1/8 y semifusa = 1/16.
28 Capítulo 4. Desarrollo de la aplicación Figura 4.1: Esquema general de la representación interna de un motivo. 4.2.2. Composiciones musicales Una vez creada la estructura para almacenar motivos, debemos crear otra estructura para poder crear composiciones musicales. Para ello, se debe tener en cuenta que la aplicación está basada en un secuenciador basado en patrones, que ya definimos en la Sección 3.2. Por lo tanto, se ha de crear una estructura que encaje con dicho diseño. A continuación vamos a ver las dos clases principales que se han creado para crear la estructura, la clase Track y la clase Tune: La clase Track sirve para representar cada una de las pistas del secuenciador. Dentro de esta clase tenemos los siguientes atributos: •El instrumento de la pista: es un tipo enumerado con el que podemos seleccionar cualquier instrumento compatible con abc2midi, que es el programa utilizado para traducir partituras en formato ABC a archivos MIDI. •El volumen de la pista, representado por un entero. •Una lista ordenada SortedList donde se guarda qué motivos tiene la pista y su posición. Para almacenar esta información se define un par clave-valor, donde la clave es la posición de inicio del motivo, y el valor es el identificador del motivo. La clase Tune es la clase principal del proyecto. Es aquí donde guardaremos toda la información acerca de los motivos que han sido creados y la posición de los motivos en las pistas del secuenciador. La clase contiene los siguientes atributos a destacar: •Un entero tempo, que indica el tempo o la velocidad a la que se va a reproducir la pieza musical. Cuanto mayor sea este valor, más rápida será la velocidad de reproducción. •Una lista de Track que sirve para representar las pistas del secuenciador. •Un diccionario2Dictionary<int, Motif>motifList donde se almacenan todos los motivos creados en el proyecto, siendo la clave 2Un diccionario es una representación de una colección de claves y valores.
4.2. Estructura de datos interna de la aplicación 29 del diccionario el identificador del motivo. No necesitamos guardar los motivos en forma de árbol, ya que cada uno de los motivos ya guarda el identificador del motivo padre, y en la mayoría de las ocasiones nos va a interesar más hacer una búsqueda sobre el identificador del motivo. 4.2.3. Importación y exportación archivos ABC La aplicación permite importar y exportar archivos en formato ABC. Para importar archivos ABC se ha utilizado ANTLR para crear un analizador sintáctico que es capaz de traducir estos archivos a la implementación interna de la aplicación. Por simplicidad en la implementación del analizador, los archivos ABC que vayan a ser importados utilizando el asistente musical deben cumplir las siguientes restricciones: La cabecera del archivo ABC debe tener únicamente los siguientes campos: •X: contiene el número de referencia, que es obligatorio en cualquier archivo ABC. Este campo debe ser el primer campo de la cabecera. •T: contiene el título. Este campo debe ser el segundo campo de la cabecera. •M: indica la métrica de la melodía. Este campo es opcional. •L: especifica la figura musical que se utiliza como unidad. Por ejemplo, si el valor es L:1/4, entonces todas las notas que aparezcan en el cuerpo del archivo que no tengan especificadas una duración serán negras. Este campo es opcional. •Q: define el tempo de la melodía. Este campo es opcional. •K: especifica la tonalidad. Este campo debe ser el último campo de la cabecera. Dentro del cuerpo del archivo, el analizador ignora cualquier información que no es relevante para la aplicación, como por ejemplo adornos en las notas o la letra de una partitura. Por último, tampoco permite especificar campos de la cabecera dentro del cuerpo del archivo utilizando la sintáxis entre corchetes especificada en el estándar de ABC. Durante la importación de archivos en formato ABC, cada figura musical representada en el archivo se traduce a la representación utilizada internamente en la aplicación, que como recordamos utiliza un entero para representar la altura de la nota, y una fracción para representar la duración. La tradución de la duración es sencilla, ya que la duración también se representa en forma de fracción en los archivos ABC. Para traducir las notas musicales hay que recordar algunas reglas básicas a la hora de escribir música en una partitura:
36 Capítulo 4. Desarrollo de la aplicación Grado en la tonalidad original Grado en la tonalidad resultante I V II IV III III IV II V I VI VII VII VI Tabla 4.1: Grados resultantes tras aplicar la inversión de Rachmaninoff Como las notas invertidas son equidistantes a las notas originales con respecto al eje de simetría, se mantiene la distancia en semitonos entre ellas. Por lo tanto, tras aplicar la inversión, la distancia entre las notas es la siguiente: V IIIIV II I VII VI tono V tono tono tono tono semitono semitono y si ordenamos las notas en grados, obtenemos la siguiente escala: I IIIII IV V VI VII tono I semitono tono semitono tonotono tono que es una escala menor. De forma equivalente, podemos comprobar que una escala menor se transforma en una escala mayor tras aplicar la inversión de Rachmaninoff. En ningún momento hemos utilizado el hecho de que el eje de simetría esté situado a una distancia de tres tonos y medio con respecto a la tónica para comprobar las propiedades anteriores. Esto es porque realmente las propiedades se cumplen sin importar dónde situemos el eje. Simplemente se ha elegido esa distancia porque es la distancia utilizada originalmente en la obra Rapsodia sobre un tema de Paganini. Transporte tonal: el transporte tonal consiste en modificar la altura de las notas del motivo, de tal forma que las notas que pertenecen a
4.4. Variaciones musicales 37 la tonalidad siguen perteneciendo a la tonalidad. El transporte tendrá como parámetro el grado que se va a desplazar. En la Tabla 4.2 podemos observar como cambiarían las notas pertenecientes a la tonalidad tras aplicar un transporte tonal de tres grados en do mayor. La nota Do, que es la tónica, pasará a ser el Fa, que es el cuarto grado. La nota Re, que es la segunda, pasará a ser el Sol que es la quinta, y así sucesivamente. Nota original Do Re Mi Fa Sol La Si Nota tras aplicar el transporte Fa Sol La Si Do Re Mi Tabla 4.2: Transporte tonal de tres grados en do mayor. Ahora sólo necesitamos ver como transportar aquellas notas que no pertenezcan a la tonalidad. En el Capítulo 2 vimos como se forman tanto la escala mayor como la escala menor, y en ambos casos, la distancia máxima entre dos notas de la escala es de un tono3. Por lo tanto, si se suma un semitono a la nota, se puede asegurar que esta pertenecerá a la tonalidad. Una vez sumado el semitono, podemos aplicar el transporte tonal que hemos aplicado al resto de notas. Tras haber aplicado el transporte, restamos un semitono a la nota resultante. Modulación estática: la modulación estática transforma la tonalidad del motivo, desplazando sus notas lo mínimo posible. Esta transformación deberá cumplir los siguientes requisitos: •Todas las notas que pertenecen a la tonalidad original deben pertenecer a la nueva tonalidad tras la transformación. •Todas las notas pertenecientes a la triada de la tonalidad original (primer, tercer y quinto grado de la escala) deben pertenecer a la triada de la tonalidad resultante tras la transformación. Por lo tanto, la transformación consiste en asignar a cada una de las notas pertenecientes a la tonalidad original una de las notas pertenecientes a la tonalidad final. Primero asignamos cada nota de la triada original a una nota de la triada resultante, minimizando el desplazamiento de las notas. Tendremos tres casos posibles: 3La distancia máxima entre dos notas consecutivas de una escala mayor y menor es de un tono. Sin embargo, existen otras escalas donde la distancia máxima entre dos notas consecutivas puede ser mayor.
38 Capítulo 4. Desarrollo de la aplicación •La tónica de la triada original se asigna a la tónica de la triada resultante, la tercera a la tercera, y la quinta a la quinta. En este caso la triada resultante sería un acorde en estado fundamental. •La tónica se asigna a la tercera, la tercera a la quinta, y la quinta a la tónica. En este caso la triada resultante sería un acorde en primera inversión. •La tónica se asigna a la quinta, la tercera a la tónica, y la quinta a la tercera. En este caso la triada resultante sería un acorde en segunda inversión. Una vez asignada la triada, podemos pasar a asignar el resto de notas. Como la asignación del resto de notas depende la asignación de la triada anterior, tendremos de nuevo tres casos, como se muestra en la Tabla 4.3. III III IV VVI VII Triada en estado fundamental III III IV VVI VII Triada en primera inversión III IV VVI / VII III II Triada en segunda inversión VVI / VII III III IV IV Tabla 4.3: Asignación de grados tras aplicar la modulación estática. En los dos últimos casos, para decidir cuando se asigna al VI o VII grado, simplemente asignaremos a aquel grado que minimice la distancia, y en caso de empate, al VI grado. Podemos observar que la asignación que estamos realizando no es inyectiva, ya que notas distintas pueden ser asignadas a una misma nota. Esto puede llegar a suponer una pérdida de información con respecto al motivo original. Vamos a ver un ejemplo: supongamos que queremos hacer una modulación estática de do mayor a fa mayor. Primero asignaríamos la triada como podemos ver en la Figura 4.5. Después, haríamos la asignación de cada nota. Como la triada resultante esta en segunda inversión, haremos la asignación siguiendo el tercer caso: Notas de la escala original Do Re Mi Fa Sol La Si Notas asignadas Do Re Fa Sol La Si [Si [
4.4. Variaciones musicales 39 C F Figura 4.5: Modulación estática de Do Mayor aFa Mayor. La triada resultante es un acorde en segunda inversión (V-I-III). Canonización: el objetivo de la canonización es aplicar un retardo al motivo original de tal forma que la disonancia entre el motivo original y el motivo resultante sea mínimo. Entendemos como disonancia al conjunto de sonidos que el oído percibe con tensión, y por lo tanto tiende a rechazarlos. La disonancia depende del intervalo o la distancia entre las notas que suenan de forma simultánea. Utilizando como referencia el algoritmo de consonanciadisonancia de Foster [4], se han establecido los siguientes valores de disonancia dependiendo de la distancia entre las notas: Intervalo Distancia (semitonos) Valor de disonancia 2amenor 1 240 2amayor 2 72 3amenor 3 30 3amayor 4 20 4ajusta 5 12 4aaumentada / 5adisminuida 6 1440 Por otro lado, aquellos intervalos que se puedan obtener a partir de una inversión de los anteriores, tendrán su mismo valor de disonancia. Por ejemplo, una quinta justa tendrá un valor de 12, ya que una quinta justa es una cuarta justa invertida. Podemos observar que los intervalos que generalmente se evitan más a la hora de componer música tienen un mayor valor de disonancia, como por ejemplo las segundas menores o las cuartas aumentadas. Por último necesitamos dar un valor de disonancia al unísono. El valor que podríamos darle inicialmente es 1, ya que como es lógico, la disonancia entre dos notas iguales es mínima. Sin embargo, no nos interesa que el valor del unísono sea tan bajo, ya que el objetivo de la canonización es escuchar dos motivos de forma simultánea con la mínima disonancia posible, y el unísono nos haría perder esa percepción de dos motivos sonando simultáneamente, ya que el oído no puede distinguir dos notas iguales que estén sonando a la vez. Como solución, podemos
40 Capítulo 4. Desarrollo de la aplicación aumentar el valor de disonancia del unísono con el objetivo de penalizarlo sobre otros intervalos. El valor que se ha decidido dar al unísono es de 25. Una vez definidos los valores de disonancia, podemos pasar a aplicarlo sobre el algoritmo de canonización. El algoritmo funcionará de la siguiente forma: 1. Se escoge una nota del motivo. Se calcula la duración entre el comienzo de dicha nota y el comienzo del motivo. 2. Se aplica un retardo al motivo de dicha duración. 3. Se calcula la disonancia entre el motivo original y el motivo retardado. La disonancia total será la media entre la disonancia de todas las notas que suenan al unísono, dividido por unidad de tiempo. 4. Se vuelven a realizar los pasos 1, 2 y 3 con todas las notas del motivo, exceptuando aquellas notas que comiencen después de la mitad del motivo, ya que queremos que la canonización dure por lo menos la mitad del motivo. 5. El retardo que se aplica finalmente al motivo original y por lo tanto el resultado de la canonización será aquel cuyo valor de disonancia sea mínimo. En el ejemplo de la Figura 4.6, tomaríamos las ocho primeras notas como punto de partida para los retardos. El último retardo de la figura nos da un valor de disonancia de 16,5, por lo tanto ese retardo será el elegido tras aplicar la transformación. Interpolación: la interpolación añade varias notas al motivo de forma aleatoria. La transformación utiliza dos métodos para añadir notas: reemplazar un silencio por una nota, o dividir el valor de una nota ya existente por la mitad y añadir una nota de su mismo valor. Cada nota añadida tendrá una probabilidad mayor de ser una nota de la triada de la tonalidad, ya que una nota de la triada tiene menos probabilidad de generar disonancias dentro del motivo. Elipsis: esta transformación elimina varias notas del motivo de manera aleatoria. Cada una de las notas eliminadas es reemplazada por un silencio. Permutación de triada: la permutación de la triada consiste en transformar al azar cada una de las notas de la triada de la tonalidad en otra de ellas. La idea de esta variación es poder modificar algunas de las notas del motivo de manera aleatoria, aunque se hace de una forma muy
4.4. Variaciones musicales 41 Motivo original Disonancia con respecto al motivo original: 54,13 Disonancia: 87,43 Disonancia: 59 Disonancia: 25,83 Disonancia: 25 Disonancia: 24 Disonancia: 16,5 Figura 4.6: Retardos aplicados sobre el motivo durante el proceso de canonización. restrictiva. El motivo de que únicamente se transformen las notas de la triada es evitar disonancias mayores tras aplicar la transformación. Se han dado una serie de pesos a cada nota de la triada de forma experimental: cada nota tendrá una probabilidad de un 50 % de convertirse en la tónica, un 20% de convertirse en el tercer grado, y un 30% en convertirse en el quinto. Armonización: como la única información que tenemos acerca de la armonía es la tonalidad del motivo, la armonización simplemente añadirá acordes correspondientes al primer grado de la tonalidad por cada nota del motivo. Esta variación solo será conveniente utilizarla en casos excepcionales, y mejorará su funcionamiento si en un futuro se añade análisis armónico sobre los motivos. El objetivo de esta transformación es crear cada uno de los acordes lo más cercano posible a la nota sobre la que se crea, siempre por debajo de esta para que la nota original siga teniendo más peso.
Capítulo 5 Conclusiones En este proyecto hemos visto qué es la música minimalista y cuáles son las principales características de esta corriente. Dentro de estas características, nos hemos centrado en analizar aquellas que son más fáciles de abordar computacionalmente, entre las que podemos destacar la repetición de motivos y el uso de variaciones musicales. Para realizar este análisis, se ha creado un asistente para composición musical, donde un usuario puede cargar o crear varios motivos musicales, y a partir de variaciones automatizadas, crear una composición musical de carácter minimalista. Para la creación de la interfaz gráfica se han tomado como referencia otras herramientas de composición ya conocidas, que utilizan como área principal de trabajo un secuenciador musical basado en patrones, como se ha descrito en la Sección 3.2. La utilización de este área de trabajo ha facilitado el manejo de motivos en la aplicación. Durante la implementación de las variaciones musicales, hemos visto que algunas de ellas pueden aplicarse directamente sobre las notas del motivo, mientras que otras necesitan conocer información adicional acerca de este, como puede ser la tonalidad. Por lo tanto, hemos necesitado proporcionar esta información adicional a cada uno de los motivos para que algunas de las variaciones funcionen correctamente. Por otro lado, el asistente musical está diseñado para que en un futuro se puedan añadir más variaciones musicales con facilidad. En los apéndices, podemos comprobar algunos de los resultados obtenidos tras la utilización de esta aplicación. En el Apéndice A se ha mostrado un ejemplo de utilización del asistente, construyendo un ejemplo de composición minimalista a partir de un único motivo musical. Por otro lado, en el Apéndice B se ha logrado replicar una composición minimalista conocida a partir de las variaciones musicales implementadas en la aplicación, utilizando de forma puntual alguna edición manual sobre los motivos. Los resultados utilizando la aplicación han sido positivos, no sólo hemos 43
44 Capítulo 5. Conclusiones conseguido crear composiciones de música minimalista de forma sencilla, sino que además hemos conseguido crear composiciones que sean estéticamente satisfactorias. 5.1. Trabajo futuro Algunas posibles mejoras que se podrían realizar sobre la aplicación son las siguientes: Añadir análisis armónico al asistente musical. La información que nos proporciona la tonalidad del motivo acerca de la armonía es limitada, por lo tanto realizar un análisis armónico sobre los motivos podría mejorar potencialmente el funcionamiento de algunas variaciones musicales, y permitiría la creación de otras nuevas. Convertir el asistente musical en una aplicación multiplataforma. Para ello, sería necesario buscar alternativas para aquellos componentes que se han utilizado en la aplicación y son nativos de Windows, como por ejemplo Windows Media Player. Añadir la posibilidad de propagar la edición de un motivo por las ramas del árbol de motivos. De esta forma, cuando se edita un motivo, el usuario podría actualizar todos los motivos originados a partir de variaciones de este motivo. Permitir la posibilidad de crear variaciones customizadas. Una posibilidad sería implementar un lenguaje pseudocódigo con el que el usuario pudiera escribir sus propias variaciones, y posteriormente utilizarlas dentro de la aplicación.
Apéndice A Ejemplo de uso: creando una composición minimalista A continuación vamos a ver un ejemplo de uso de la aplicación. Vamos a crear una pieza musical breve utilizando variaciones sobre el motivo de la Figura A.1, al que hemos hecho referencia en capítulos anteriores: Pista 1 Figura A.1: Motivo inicial de la canción Campanitas del lugar. Abrimos la aplicación, y dentro del menú de archivo pulsamos en nuevo motivo. Introducimos el siguiente código en el cuadro de texto: X:1 L:1/4 K:C CCGG|AAG2|FFEE|DDC2|] Podemos verificar que tras escribir dicho código, en el panel superior debería aparecer la partitura de la Figura A.1. Tras pulsar en el botón de aceptar, aparecerá un elemento nuevo en el árbol de motivos, con el nombre de motif. Podemos cambiar el nombre de este haciendo click con el botón derecho y seleccionando la opción de renombrar. Vamos a renombrarlo a campanitas, y después vamos a arrastrar el motivo sobre la pista del secuenciador. En este momento aparecerá un cuadrado rojo en el secuenciador, como se muestra en la Figura A.2, que se corresponde con el motivo que se acaba de añadir. Si pulsamos sobre el botón de reproducir, podremos escuchar el motivo que acabamos de añadir. Vamos a cambiar el tempo a 200 para que la canción 45
52 Apéndice B. Análisis de una composición minimalista Este proyecto contiene un fragmento de la obra Comptine d0Un Autre Été, una obra de carácter minimalista perteneciente a la banda sonora de la película Amelie. Podemos escuchar el contenido de este proyecto en la Pista 20 del CD incluido con la memoria. Podemos observar que se han utilizado tres pistas en el secuenciador, la primera se corresponde con la melodía principal, la segunda con la melodía secundaria, y la tercera con el bajo. Si desplegamos el árbol de motivos, podemos ver que la composición está formada por cuatro motivos principales, sobre los que se han utilizado modulaciones estáticas y transportes, como se muestra en la Figura B.2: El motivo Bass, que se corresponde con el motivo inicial del bajo: Pista 16 El motivo Voice 1, que se corresponde con el motivo inicial de una de las melodías principales: Pista 17 El motivo Voice 2, que se corresponde con el motivo inicial de la melodía secundaria: Pista 18 El motivo Voice 3, que se corresponde con el motivo inicial de otra de las melodías principales:
53 Pista 19 Figura B.2: Árbol de motivos del archivo amelie.mm. Como podemos observar en el árbol de motivos y en el secuenciador, se ha podido construir este fragmento musical utilizando simplemente transportes y modulaciones estáticas sobre estos cuatro motivos, una elipsis y sólo en algunos casos puntuales se ha necesitado editar manualmente algunas notas del motivo.
Bibliografía [1] The abc music standard 2.1, 2011. URL http://abcnotation.com/ wiki/abc:standard:v2.1. [2] J. Allwright. Guide to writing abc for abc2midi. URL http://abc. sourceforge.net/standard/abc2midi.txt. [3] I. E. de Musicología. Anuario musical. El Instituto, 2007. [4] C. D. Foster. A consonance dissonance algorithm for intervals. In Proceedings of International Computer Music Conference, 1995. [5] K. Gann. Thankless attempts at a definition of minimalism. Audio Culture: Readings in Modern Music, 2004. [6] P. Giblock and T. Doerffel. Lmms. URL https://lmms.io/. [7] T. Halbert. Algorithmic minimalist music inspired by human intervention. 2010. [8] B. Leach. Looking and Listening: Conversations Between Modern Art and Music. Rowman & Littlefield, 2015. ISBN 9780810883468. [9] M. Nyman. Minimal music. The Spectator, 221(7320), 1968. [10] T. Parr. Antlr. URL http://www.antlr.org/. [11] K. Potter. Four Musical Minimalists: La Monte Young, Terry Riley, Steve Reich, Philip Glass. Music in the Twentieth Century. Cambridge University Press, 2002. ISBN 9780521015011. [12] I.-L. Software. Fl studio. URL https://www.image-line.com/ flstudio/. [13] E. Strickland. Minimalism–origins. Indiana University Press, 1993. ISBN 9780253213884. [14] Wikipedia. Composición algorítmica, . [15] Wikipedia. Música minimalista, . [16] Wikipedia. Música, . 55