Mucho hemos comentado durante el último tiempo acerca del potencial que tiene la inteligencia artificial para desarrollar proyectos de distintos perfiles y magnitudes. Entre estas iniciativas, destacan aquellas centradas en la generación de piezas musicales.
Por lo general, al hacer mención sobre este tipo de creaciones, la explicación sobre su funcionamiento se limita a hacer mención sobre el algoritmo involucrado, pero sin aportar mayores detalles para comprenderlo. Si te interesa conocer cómo es el mecanismo de IA que se encarga de realizar esta tarea, lo repasamos a continuación.
Música generada por algoritmos
Al momento de referirnos a aplicaciones de generación automática de música, tomamos como ejemplo los casos de Mubert, AiMi y EōN, sobre los cuales nos referimos en detalle en artículos previos.
Alex Bainter, desarrollador web vinculado al área, ha desarrollado más de 40 sistemas de música generativa durante el último año, de acuerdo a lo que reseña en su blog personal, destacando entre sus proyectos Generative.fm, un generador de música Ambient. Desde su experiencia y considerando que la tecnología tras las apps antes mencionadas sólo es conocida por los resultados que ofrece, sin saberse en detalle aún cómo es la dinámica que construye estas pistas en tiempo real.
Para aproximarse a la forma en que estas aplicaciones hacen música, Bainter comenzó desde la base de que estas aplicaciones trabajan con un algoritmo que combina capas de sonidos compuestas por bucles.
El ejemplo en su web corresponde a una demostración hecha por el mismo Bainter. En él, se grafica la presencia de doce grabaciones, correspondiendo cuatro de cada una de ellas a distintos clips de líneas de percusión, bajo y sintetizador.
Con este material, se presume que los algoritmos tras estos sistemas se encuentran configurados para seleccionar desde su base de datos una grabación distinta de cada tipo de instrumento musical, para reproducirlas coordinada y simultáneamente. Al finalizar la reproducción de estos clips, el algoritmo elegirá otras tres pistas más para reproducir.
De esta forma, aún con la limitada cantidad de muestras que presenta el ejemplo, se pueden generar 64 combinaciones únicas, sin considerar la posibilidad de hacer combinaciones con sólo dos pistas o dejando sólo una. Ante esta última eventualidad, el número de combinaciones ascendería a 124 y si se agrega un cuarto tipo de instrumento musical a este mismo esquema, las variaciones ascenderían a 624. No es más que un juego matemático.
Agregándole “inteligencia” a la música
Hasta ahora, hemos revisado la conformación básica de un sistema de este tipo. Sin embargo, su funcionamiento no se limita únicamente a la combinación aleatoria de muestras de sonido, pues hay más criterios a considerar por parte del algoritmo.
Si se considera que las pistas que se utilizan como base para combinar son variadas entre sí, el sistema encargado de hacer las combinaciones debe ordenar estos clips en función de algunos elementos clave, como su como BPM (velocidad medida beats o golpes por minuto), clave (nivel de agudeza), escala (rango de notas musicales), instrumentos utilizados y el género o estilo en el que se enmarcan.
Dependiendo del criterio de cada app, esta base de datos sonora podría incluir más datos que guíen el trabajo del algoritmo, como la ubicación de algún loop dentro de una melodía (en la introducción, como intermedio, como ritmo principal o al final). Bajo esta lógica, los citados sistemas pueden seleccionar sólo aquellos clips que combinen bien o en su defecto, alterarlos digitalmente para este fin, interviniendo su tonalidad o duración.
A esto, si se le suma la posibilidad de añadir funciones de aprendizaje automático, la experiencia puede volverse personalizada. Con la adición de botones para evaluar lo que se escucha con un “me gusta” o “no me gusta”, tal como se presenta en apps como Mubert o AiMi, se puede entrenar al algoritmo, para que en base a las preferencias del usuario se priorice la combinación de sonidos similares a los escogidos.
Si te interesa conocer más detalles sobre la generación algorítmica de música, sobre todo enfatizando aspectos técnicos, puedes revisar la detallada publicación de Alex Bainter en su blog (en inglés).