# Música y sonido generado por ordenador

En esta lección se discutirá qué se entiende por música generada por ordenador, así como la evolución que ésta ha sufrido con el paso del tiempo, incluyendo una descripción desde sus orígenes, hasta las técnicas más recientes utilizadas, y la perspectiva de futuro. Por último, se mostrará una breve discusión sobre si la música generada por ordenador puede ser considerada como "artificial".

## Introducción

El término Música o sonido generado por ordenador es un término que puede describir un concepto muy amplio, desde un sonido grabado y reproducido, hasta música creada por un algoritmo sin la intervención humana. Aunque todo sonido emitido por los altavoces de un ordenador puede ser considerado como sonido generado por él, el término *música generada por ordenador* se refiere desde aquella música que ha sido generada a partir de un sonido existente, la cual ha sufrido transformaciones con la ayuda de un ordenador, hasta aquella que ha sido generada únicamente por el ordenador, sin necesidad de sonidos o grabaciones musicales externas. En otras palabras, la música generada por ordenador hace referencia a la música compuesta por, o con la amplia ayuda de una computadora.

## Historia

El origen de la música generada por ordenador viene asociado al inicio de la informática misma. Su auge se inició en los años 1950, con la creación del primer ordenador capaz de generar sonido, seguido por la creación de los sintetizadores (tanto analógicos como digitales). En los últimos años, la generación de música por ordenador viene acompañada por la Inteligencia Artificial, y la posibilidad de crear música de manera autónoma.

### CSIRAC, el primer computador en generar sonido

El primero ordenador capaz de generar música fue la CSIRAC (Council for Scientific and Industrial Research Automatic Computer). CSIRAC fue la primera computadora digital Australiana creada en 1949, la cuarta computadora del mundo, y la primera capaz de generar música [URL de referencia]. Este computador es usado para reproducir un repertorio de música grabada, y no para la creación musical.
En la misma década que la creación de CSIRAC, Max Mathews desarrolla las técnicas de síntesis de sonido y composición musical por ordenador en los laboratorios Bell. En 1957 crea MUSIC-1, el primer lenguaje de programación orientado a la creación de composiciones musicales utilizando un ordenador. Este lenguaje ha ido evolucionando, creando los denominados MUSIC-N lenguajes, o MUSIC-series.

### La aparición de los primeros sintetizadores

En aquel tiempo, los algoritmos usados para la generación de
música por ordenador eran muy costosos, necesitando ejecutarse en ordenadores potentes durante un largo periodo de tiempo. Para agilizar este proceso, se crea la idea de "sistema híbrido", compuesto por un procesador para realizar los cálculos, y una placa de desarrollo de audio denominada "sintetizador", capaz de realizar transformaciones sobre el sonido de manera más rápida que el procesador de propósito principal. Este fue el origen de los primeros sintetizadores. Los sintetizadores fueron evolucionando, incluso convirtiéndose en herramientas independientes capaces de producir sonido de manera artificial, o de modificar aspectos de sonidos pregrabados (como pude ser una modulación en frecuencia o en fase). La evolución de los sintetizadores ha permitido la creación tanto de sintetizadores analógicos (capaces de modificar la señal de audio), como digitales (capaces de modificar una audio almacenado de manera digital ). En la actualidad, además de los sintetizadores hardware (con o sin teclado), existen sintetizadores software que radican en el mercado con mucha fuerza. Podríamos mencionar, por ejemplo, a Reaktor o Absynth (de Native Instruments)

## Actualidad

Los avances en la potencia de cálculo, software y hardware para la manipulación de los medios digitales han afectado dramáticamente la forma en que la música por ordenador se genera y se lleva a cabo. La actual generación de micro-ordenadores son lo suficientemente potente como para llevar a cabo síntesis de audio muy sofisticados usando una amplia variedad de algoritmos y enfoques. Actualmente los sistemas de música para PC están en todas partes, y tan firmemente arraigadas en el proceso de crear música que el uso de la tecnología digital para crear y grabar música es la norma, no la excepción. Más allá de ello, en la actualidad la música generada por ordenador tiene una tendencia hacia la creación de música de manera inteligente, usando diferentes técnicas de inteligencia artificial, dando como resultado una impecable calidad en la música generada. Además de la impecable calidad de música, la música generada por ordenador también tiene muchas ventajas y aplicaciones: herramientas para enseñanza en muchas ramas, dinamismo y sincronización de la música con eventos y, si se quiere, un nuevo compañero (algunos opinan que competencia) de la creación musical humana.

### La música generada por ordenador como un método de ayuda para la enseñanza informática

No es menos cierto ni tampoco es de extrañar que la música generada por ordenador esté siendo o haya sido usada como método de enseñanza, y en particular para la enseñanza informática de primeros años de carrera (sin mencionar la infinidad de recursos existentes con ello para la enseñanza musical).

#### Song Sorter

Dicho método tiene el afán de dejar el legado de la idiosincrasia del ordenamiento (discreto) de arreglos (o listas). En particular, se basa en ordenar una lista de canciones de acuerdo al número de cambios rítmicos en ellos, de forma tal de recursivamente buscar la lista ordenada de una determinada canción, bajo un determino número de cambios rítmicos. Ese número ha de ser elegido por el usuario y el usuario puede continuar la búsqueda de canciones de esta manera hasta que quiera parar .

#### El Ear Trainer o entrenamiento auditivo

Este método se basaba simplemente en dejar en los estudiantes clara la idea y noción de los condicionales "if" y de las iteraciones "while" o "for". Para ello, se daba la posibilidad al usuario de seleccionar entre dos opciones: la primera se especifica en aprender diferencias relativas, y para ello genera 2 sonidos aleatorios (de entre 7 posibles), y el usuario debe diferenciar entre sí el primero es en tono más alto, igual de alto o menos alto que el segundo. La segunda opción por su parte va más allá, y se especifica en aprender diferencias absolutas. Para ello evaluaba la capacidad de evaluar tanto el tono de frecuencia como la duración de cada uno de los tonos, y la técnica a aplicar era similar al anterior: generar tonos aleatorios, y el usuario a través de ciertas banderas clasificadas como 'C', 'D', 'A', 'F' y 'G' (que contienen los valores de esos 2 parámetros) intentar acertar las respuestas . La idea, además, era precisamente hacer dichos programas, con sus estructuras de datos adecuadas y aprovechar de aprender a manipular salida de audio.

### El Motor Interactivo de Reproducción de Música (iMUSE)

Merece la pena mencionar uno de los tantos logros y alcances llevados a cabo a usando la música generada por una computadora. En esta ocasión, se trata del iMUSE (del inglés Interactive Music Streaming Engine, en español Motor Interactivo de Reproducción de Música), lo cual es un motor de reproducción de música para videojuegos desarrollado a principios de los años 1990. El objetivo de iMUSE es sincronizar la música con la acción visual en un videojuego para que el audio concuerde continuamente con los eventos en pantalla, y para que las transiciones de un tema musical a otro se hagan con suavidad y sincronía; por ejemplo, aquellas escenas del juego en las que se aprecia un tema musical armonioso y pacífico y, repentinamente, cambia el tema musical a otro más dramático dado que se entra en un escenario donde hay incertidumbre y peligro. Esta técnica fue patentada y ampliamente promovida por LucasArts, además de por supuesto en numerosos juegos de video, Star Wars entre ellos, y fue añadido a la quinta versión del dispositivo de videojuegos SCUMM en 1991 . Un ejemplo de iMUSE aplicado a los video juegos puede ser visto en el siguiente enlace: https://www.youtube.com/watch?v=-XuClagw6IQ

### EMI (Experiments in Musical Intelligence)

Fue un programa desarrollado por David Cope a lo largo de varias décadas, cuya meta fue la creación de obras nuevas que sigan el estilo compositivo de algunos de los compositores más importantes de la historia, como Mozart, etc. David Cope fue un escritor estadounidense, compositor, científico y ex profesor de música en la Universidad de California. Su principal área de investigación fue la inteligencia artificial y la música. Escribió programas y algoritmos que pueden analizar música existente y crear nuevas composiciones en el estilo de la música original, lo que originó precisamente la idea de EMI. Sin embargo, no es mentira de que la música generada puede sonar bastante alejada a una música con toque humano.
Cope explica las estrategias de su algoritmo, fundamentadas en la recopilación de algunos fragmentos de las obras que se toman como modelo. La parte más difícil consiste en la identificación de los rasgos estilísticos de los modelos, y en su inserción en las nuevas obras de forma que sean reconocidos, pero sin sonar a copias. Para conseguirlo, un programa de análisis realiza una exploración completa de intervalos melódicos más frecuentes, enlaces armónicos predominantes, estrategias típicas de repetición, entre otros .

### El proyecto IAMUS

IAMUS es un cluster de computación ubicado en la Universidad de Málaga que ha sido desarrollado por un grupo de investigación en Inteligencia Computacional de dicha casa de estudios. Es el primer ordenador que básicamente ha aprendido el lenguaje musical humano. La obra Opus one es el primer fragmento de música clásica contemporánea escrito por un ordenador, y lo creó el 15 de octubre de 2010. Su primera composición completa, "Hello World!", se estrenó justo un año después (15 de octubre de 2011). El módulo compositivo de IAMUS trabaja con tecnología de Melomics y tarda unos 8 minutos en crear una composición y generar todos sus formatos (XML, MP3, MIDI y PDF). IAMUS está construyendo un repositorio de composiciones en continuo crecimiento, que cubre los principales géneros musicales. Hasta la fecha, este repositorio constituye la mayor colección de música. Su filosofía se basa en la autonomía e inteligencia creativa .

### Uso de técnicas de inteligencia artificial para la generación procedimental de audio
#### Redes neuronales

Es un método de clasificación no lineal, recibe su nombre nombre debido a que es un modelo de computo que usa una gran cantidad de unidades de computo llamadas neuronas y que funciona de forma aproximada al comportamiento de los cerebros.
Las neuronas se dividen en capas entre las que se encuentran la capa de entrada, las capas ocultas si las hubiera (son opcionales) y la capa de salida que produce el resultado de la clasificación. La capa de entrada recibe los datos a clasificar mientras que la capa oculta y la capa de salida lo que hacen es realizar dos tipos de cálculos. El primero es el cálculo hacia delante en el que cada neurona aplica el peso que cada neurona tiene a los datos recibidos de la capa anterior y pasa a la capa de delante los resultados. El segundo es el cálculo hacia detrás en el que una vez obtenido el resultado de la clasificación se calcula la desviación del resultado generado con respecto al resultado esperado y se propaga a capas posteriores para calibrar los pesos de las neuronas.
Aunque estas redes neuronales tradicionales se comportan bien en problemas de clasificación donde los elementos de las entradas son independientes entre sí, para entradas como pueden ser audio cuyos elementos están relacionados se necesitan buscar redes neuronales más sofisticadas como pueden ser redes neuronales recurrentes si solo queremos generar audio de un solo tipo o redes neuronales con memoria a corto y largo plazo para audio de varios tipos.
Para hacer que el ordenador realice audio de forma procedimental lo que haríamos sería seguir los siguientes pasos:
* Decidir que tipo de música va a generar el ordenador.
* Como vamos a representar esa música
* Establecer los hiperparámetros y el tipo de la red neuronal como podrían ser las redes neuronales recurrentes o las redes neuronales con memoria a corto y largo plazo
Una vez establecidos estos detalles y obtenidas las canciones con las que entrenaremos la red neuronal lo único que tendriamos que hacer es realizar el entrenamiento y desarrollar la funcionalidad de que la red neuronal en base a lo aprendido empiece a crear música ella sola.

#### Programación genética

La programación genética es un método de búsqueda que cuenta con las siguientes características:
* Es ciega, ya que no disponen de ningún conocimiento específico del problema.
* Es codificada, ya que no trabajan directamente sobre el dominio del problema.
* Es múltiple, ya que trabaja sobre un conjunto de candidatos a solución del problema.
* Es Estocástico, ya que sus cálculos en su mayoría se basa en azar.
Antes de pasar a definir el funcionamiento de la programación genética vamos a dar algunas definiciones:
* población es un conjunto de individuos, puede ser de tamaño fijo o variable.
* individuos son las soluciones candidatas a solución, contienen cromosomas.
* cromosomas codificación en forma de árbol o similares de las posibles soluciones al problema.
* Operador de evaluación evalúa como de buenos son los individuos, asignándole un valor de fitness o idoneidad.
* Operador de selección selecciona N individuos de la población (pueden repetirse) donde N es el tamaño de la población actualmente.
* Población de reproductores es la población formada por los individuos obtenidos del proceso de aplicar el operador de selección a la población.
* Operador genéticos que se aplican sobre la población reproductora para modificar el cromosoma de alguno de los individuos de esta población para generar individuos nuevos
* Población descendiente población surgida de los operadores genéticos
* Operador de reemplazo consistentes en operadores que sustituyen a los individuos de la población inicial por los individuos de la población descendiente.
El funcionamiento de estos algoritmos es simple, se genera una población inicial a la que se aplicará el operador de evaluación para que cada individuo de la población tenga un valor de fitness actualizado, después se le aplica a esta población el operador de selección para generar una población de reproductores, a la que se le aplican los operadores genéticos para obtener la población de descendientes. Finalmente con el operador de reemplazo se construye una nueva población inicial juntando la anterior población inicial y la de descendientes. A partir de aquí el proceso vuelve a comenzar y solo se termina cuando se ha repetido tantas veces como se desee o hasta que se haya alcanzado la solución o cualquier condición de terminación que se desee poner.
Los resultados de este tipo de algoritmos dependen del tipo de operadores que se utilicen y estos a su vez de como se codifique el problema. Para el tema del audio los problemas se suelen reducir a vectores de reales con lo que no se suele reinventar la rueda y se usan los operadores más conocidos y eficientes para este tipo de problemas.
Otro tema importante para generar audio de forma procedimental son los operadores de evaluación, los cuales dan puntuaciones a los individuos en función de lo cercanos que son a solución candidata del problema (en este caso como de bien generan audio de forma procedimental), con lo que para que podamos generar audio de forma procedimental a través de está técnica lo que debemos hacer es adaptar este operador de forma que evalúe lo bien que genera audios de forma procedimental cada individuo. Esto es necesario para que al final de su ejecución obtengamos un programa que al ejecutarse, componga audio que sea distinto de una ejecución a la otra.

#### Algoritmos neuroevolutivos

Los algoritmos neuroevolutivos constituyen la unión de dos algoritmos:
* Redes neuronales
* Algoritmos evolutivos (Iguales a la programación genética a excepción de algunas diferencias como que la codificación del cromosoma no esta limitada a árboles entre otras)
Esta familia de algoritmos es de surgimiento reciente con lo que está en fase de investigación y cada componente de estos algoritmos constituye un campo de investigación en sí mismo.
El funcionamiento de estos algoritmos seguiría el esquema de programación genética pero sin embargo limitaría la codificación de los cromosomas a las redes neuronales. Básicamente cada individuo empezaría con una configuración distinta de redes neuronales y con el paso de las iteracciones (también llamadas generaciones) lo que se haría seria modificar esa red neuronal modificando el número de neuronas, capas, modificando los enlaces, modificando el valor de los pesos ...
Al ser esta una fusión de las dos técnicas anteriormente presentadas la forma de generar audio con esta técnica es la unión de la forma de generar audio con las presentadas anteriormente.

## Algunas aplicaciones actuales de generación de música generada por ordenador
### Wolfram Tones

Se trata de una aplicación gratuita, diseñada por el físico y matemático Stephen Wolfram, que genera obras sencillas permitiendo seleccionar algún instrumento, garantizando siempre que serán obras únicas e irrepetibles. Se basa en la transcripción a música de un patrón generado por un "autómata celular" en el universo computacional. En otras palabras, según su web, el sistema viene integrado con un conjunto de piezas musicales que, al mezclarlos, puede gener billones de posibles combinaciones, cada una representando diferentes partes de música . En el siguiente enlace se puede generar una composición musical usando Wolfram Tones: http://tones.wolfram.com/generate/.

### NotePerformer

Es un simulador de orquestas sinfónicas. Se describe como un nuevo tipo de librería de sonido. La calidad de este software es tal, que es difícil deducir si, al usar este software, la música reproducida es generado por humanos o por un computador .

## Conclusiones

A lo largo de esta lección, se han descrito algunos sistemas de composición musical por ordenador, y se han contextualizado en el ámbito del desarrollo de la Inteligencia Artificial, así como una pequeña evolución histórica de su desarrollo. Tanto el sistema EMI, especializado en la imitación de estilos particulares, como IAMUS, más orientado a la producción de música de estilo contemporáneo, consiguen unos resultados de notable calidad artística, que resultan difíciles de distinguir de obras equivalentes elaboradas por compositores humanos. Los siguientes puntos han formado parte de los apartados de esta lección:
* Reseña histórica: Desde los inicios de la computación misma, siempre ha estado presente la idea de la creación de música generada por el computador, y no fue sino hasta los tempranos años de la década de los 50's cuando nace CSIRAC, el primer ordenador con esta capacidad. A partir de allí, grandes cambios y avances han sostenido el exponencial crecimiento de esta labor.
* Los sintetizadores: Fueron la primera gran revolución de la generación de música artificial o, generada por un computador. El alcance fue tal, que hasta hoy en día se sigue usando de manera bastante frecuente y su capacidad de generación de música ha alcanzado niveles extraordinarios.
* Alcances y logros de la música generada por ordenador: Son muchas las aplicaciones reales que puede tener la música generada por un ordenador: desde métodos de enseñanza educativa, métodos de sincronización de música con eventos, generación de obras con fundamentos clásicos, generación de composiciones musicales, entre otros. Entre ellos destacan el famoso cluster IAMUS, con su capacidad de crear composiciones de música clásica contemporánea. También se encuentran NotePerfomes, con su capacidad de simular orquestas sinfónicas, o Wolfran Tones, un generador de obras de múltiples instrumentos, garantizando que serán obras únicas.
* La inteligencia artificial: Su usabilidad y alcance es tal que, ya es hoy en día difícil distinguir entre una música de creación humana o una generada por computador. Es quien juega hoy en día un rol protagónico dentro del mundo de la generación de música por ordenador y quien, más temprano que tarde, será el medio protagonista del mundo artístico digital.