.

Cuando veo proyectos como el NSynth Super siempre me lamento de no gestionar mejor mi tiempo y encontrar un rato para experimentar con Magenta. Al final acabo llegando a la conclusión que no hay horas suficientes en el día para hacer todo lo que me gustaría, por mucho que me organizase, aunque suene a excusa.

Con todo, por muy auto-convincente que resulte mi racionalización, esa sensación volvió a surgirme al toparme (vía Hacker News) con DrumBot, una aplicación web que te permite tocar música en tiempo real con una batería de aprendizaje automático que toca basándose en tu melodía. […] Utiliza el mismo modelo GrooVAE que el plugin Drumify de Magenta Studio para generar pistas de batería que haga juego con la melodía del usuario. […] [Puedes] tocar con DrumBot desde tu navegador o echárle un vistazo al código en GitHub.

Fotograma de un vídeo que muestra DrumBot en funcionamiento. Fuente: YouTube [].

Ya que lo que procesa son instrucciones MIDI lo primero que me he preguntado es si se podría utilizar con melodías de canciones para ver qué percusión genera. Sin irme a lo excesívamente complejo, probaría con un par de compases de «I’m Broken» de Pantera o «Master of Puppets» de Metallica con cambios de tiempo, para ver qué produce. Lo único es que las secciones con cambios de ésta última están en octavos y, por lo poco que he visto, parece que cuenta cuartos. En el caso de Metallica, me sigue pareciendo más interesante la generación las pistas de batería con redes LSTM.

.

Hace más de once años mencionaba a Melodyne, un software que permitía editar notas individuales dentro de acordes o audio polifónico. Nunca intenté averiguar exáctamente cómo funcionaba, ni siquiera si dicha información ha estado disponible en algún momento. Se trata de software propietario y, por lo tanto, es bastante probable que su funcionamiento esté oculto. Si me equivoco que me corrijan, por favor.

Todo esto viene a cuento de uno de los enlaces que vi este fin de semana en Hacker News, apuntando a repositorio de GitHub de Spleeter. De ahí sale la siguiente descripción:

Spleeter es la biblioteca de Deezer para separación de señales con modelos escritos en Python y [que] usa Tensorflow. Facilita el entrenamiento de modelos de separación de señales (asumiendo que tiene un conjunto de datos de fuentes aisladas) y proporciona un modelo de última generación ya entrenado para realizar varios estilos de separación:

  • Separación de voces (voz cantada) / acompañamiento (2 derivadas).
  • Separación de voces / percusión /bajo / otros (4 derivadas).
  • Separación de voces / percusión / bajo / piano / otros (5 derivadas).

Los modelos de 2 derivadas y 4 derivadas tienen rendimientos de última generación sobre el conjunto de datos musdb. Spleeter también es muy rápido, ya que puede realizar la separación de ficheros de audio 100 veces más rápido que en tiempo real cuando se ejecuta en una GPU.

Logotipo de Spleeter.

Más allá de la utilidad de esta herramienta, es interesante conocer la razón de publicarla según el equipo que la ha desarrollado:

Una de las limitaciones difíciles que se encuentran los investigadores de MIR [N. del T.: siglas en inglés de Recuperación de Información Musical] es la falta de conjuntos de datos a disposición pública, por motivos de derechos de autor. Aquí, en Deezer, tenemos acceso a un catálogo bastante amplio que hemos estado aprovechando para construir Spleeter. Dado que no podemos compartir estos datos, convertirlos en una herramienta accesible es una manera con la que podemos hacer que nuestra investigación sea reproducible por todo el mundo. Desde un punto de vista más ético, creemos que no debería haber una competición injusta entre investigadores basada en el acceso a material con derechos de autor, o la falda de este.

Es muy interesante ver como ya hay gente que ha aprovechado esta herramienta para separar pistas de canciones populares para después utilizarlo en re-mezclas, como las pruebas que ha hecho Andy Baio. Veremos que nuevos mashups salen de todo esto.

.

La semana pasada hablaba de un sintetizador neuronal paramétrico de canto y ahora me topo con NSynth, un proyecto de síntesis de audio utilizando Magenta con un modelo basado en WaveNet:

Uno de los objetivos de Magenta es aplicar aprendizaje automático al desarrollo de nuevas formas de expresión humana. Así que hoy estamos orgullosos de anunciar NSynth (Neural Synthesizer), una aproximación novedosa a la síntesis de música diseñada para asistir en el proceso creativo.

A diferencia de sintetizadores tradicionales que generan audio a partir de componentes hechos a mano, como osciladores y tables de ondas, NSynth utiliza redes neuronales profundas para generar sonidos al nivel de muestras individuales. Aprendiendo directamente de los datos, NSynth ofrece a los artistas un control intuitivo sobre el timbre y la dinámica, y la habilidad de explorar nuevos sonidos que sería difícil o imposible de producir con un sintetizador afinado a mano.

Las cualidades acústicas del instrumento aprendido dependen tanto del modelo usado como los datos de entrenamiento disponibles, así que estamos encantados de publicar mejoras de ambos:

Un descripción completa del conjunto de datos y el algoritmo se puede encontrar en nuestra publicación en arXiv.

Visión general del autocodificador WaveNet de NSynth

Aunque no he tenido oportunidad de cacharrear con TensorFlow no es la primera vez que aparece Magenta por aquí: hace unos meses mencionaba unos experimentos musicales con inteligencia artificial que me tentaban a echar un ojo a las herramientas de aprendizaje automático que utilizan. De momento me lo apunto como otra referencia.

.

La semana pasada me pasaron el enlace a Quick, Draw!, una especie de Pictionary donde tu pareja que intenta adivinar lo que estás dibujando es una red neuronal. Como juego es gracioso pero lo que me gustó aún más fue descubrir que forma parte de un grupo de experimentos de inteligencia artificial de Google. De ellos, dos tienen un corte claramente musical.

El primero es The Infinite Drum Machine, una caja de ritmos básica que permite utilizar en tu navegador miles de sonidos cotidianos. La gracia de este experimento reside en que la catalogación y agrupación de sonidos la ha hecho una máquina utilizando un algoritmo de aprendizaje automático t-SNE sobre el audio exclusivamente, sin utilizar etiquetas o cualquier otro tipo de indicaciones.

Los que tengan el tiempo y los conocimientos adecuados pueden explorar el código fuente de The Infinite Drum Machine en GitHub, algo en lo que invertiría el primero de los dos requisitos anteriores (si lo tuviera) para ver si puedo adquirir un poco más del segundo requisito.

Fotograma del vídeo de presentación de The Infinite Drum Machine [01m51s].

El segundo experimento que llamó mi atención fue A.I. Duet, una red neuronal ya entrenada que «responde» a las melodías que pueda crear una persona, creada utilizando Tone.js y herramientas de Magenta. Aunque en este caso todavía no hay una versión web donde jugar con el experimento, se puede explorar código fuente de A.I. Duet en GitHub.

Fotograma del vídeo de presentación de A.I. Duet [02m14s].

Debo admitir una cierta envidia sana al ver estos proyectos. Hace no tanto dejaba por aquí un apunte sobre redes neuronales que componían pistas de batería aprendiendo de Metallica y ya entonces me lamentaba de no tener tiempo para explorar estas materias.