.

Continuando con algo relacionado con la música clásica me encuentro, otra vez en Hacker News, con una noticia de julio en VentureBeat sobre un sistema desarrollado por Florian Henkel, Rainer Kelz y Gerhard Widmer que puede predecir la posición más probable dentro de una partitura correspondiente a una grabación sonora, dando un rendimiento destacadamente superior a los seguidores de partitular más modernos basados en imagen, en términos de precisión de alineamiento. Para los más interesados, están disponibles tanto el texto académico como el código correspondiente pero el artículo ofrece un resumen de algunos de los puntos clave del proyecto:

El equipo modelo el seguimiento de la partitura como una tarea de segmentación de imagen. Basándose en una interpretación musical hasta un determinado punto en el tiempo, su sistema predice una máscara de segmentación —una pequeña «pieza» de imagen— para la partitura que se corresponde con la música que está siendo reproducida en ese momento. Mientras que los sistemas de seguimiento que se apoyan sólo en entrada de audio de tamaño fijo no son capaces de distinguir notas repetidas si exceden un determinado contexto, el sistema propuesto no tiene problemas en partituras que aabarcan periodos de tiempo más largos en el audio, según declaran los investigadores.

En el transcurso de los experimentos, los investigadores obtuvieron muestras polifónicas de piano del Multi-model Sheet Music Dataset (MSMD), que abarca temas de varios compositores incluyendo Bach, Mozart y Beethoven. Tras identificar y corregir manualmente los errores de alineamiento, entrenaron su sistema con 353 pares de partituras e información MIDI.

Arquitectura de red en U condicionada por audio. Cada bloque (A—I) está compuesto de dos capas convolucionales con activación ELU y normalización de capa. La capa FiLM se coloca antes de la última función de activación. La codificación del espectrograma […] se pasa a una capa recurrente. El estado oculto de esta capa recurrente es utilizado después para el condicionamiento en la capa FiLM. Cada bloque simétrico tiene el mismo número de filtros, empezando por 8 en el bloque A y aumentando con la profundidaz hasta 128 en el bloque E. Fuente: arXiv.org

Sin apenas tiempo de indagar en el emuladores WaveNet de equipo de guitarra, voy a tener que poner orden y establecer prioridades entre todas las cosas que quiero curiosear.

.

Unos meses atrás le echaba un ojo a un proyecto recreación de un modelo de emulación de amplificadores de guitarra en tiempo real usando aprendizaje automático y ahora me topo en Hacker News con un par de proyectos que también usan aprendizaje automático para recrear sonido de equipo musical. En concreto, lo que veía apuntado era un enlace a SmartGuitarAmp en GitHub:

Plugin de guitarra hecho con JUCE que utiliza […] un modelo WaveNet para recrear el sonido de de hardware real. La versión actual modela un amplificador de válvulas pequeño, con la capacidad de añadir más opciones en un futuro. Hay un canal limpio/distorsionado, que es equivalente a las configuraciones limpia y de saturación máxima del amplificador. Los controles de ganancia y EQ se añadieron para modular el sonido modelado.

El mismo desarrollador señala otro software complementario, SmartGuitarPedal, también en GitHub, que tiene una finalidad similar pero enfocada a la emulación de pedales como el TS9 Tubescreamer o el Blues Jr. Se utilizan ganancia y nivel como formas sencillas de controlar el sonido. El modelo WaveNet es efectivo en la emulación de efectos de tipo distorsión o amplificadores de tubo.

Hay un par de demostraciones en el canal de YouTube de GuitarML, para los que tengan curiosidad. Cada vez que menciono WaveNet me quedo con las ganas de profundizar más en el tema. Debe resultar muy interesante.

.

Si hace un mes veía una I.A. que genera ritmos a partir de una melodía ayer me encontraba en Hacker News con un invento de un tal Peter Rainieri que produce letras para canciones. Por lo poco que cuenta el autor, lleva trabajando desde 2018 en una red neuronal artifical para crear las letras a partir de: términos sencillos; una definición de estilo, a elegir entre Country, Metal, Rock, Pop, Rap y EDM; y ánimo, en una escala de «muy triste» a «muy alegre». Se puede probar el resultado en TheseLyricsDoNotExist.com.

Formulario de generación de letras de TheseLyricsDoNotExist.com.

El experimento es curioso aunque parece que quiere presentarlo como una herramienta que pueda suponer una «ventaja competitiva» a la hora de componer canciones. No sé si en algún momento pretende montar un servicio de pago con algo así pero si lo hiciera me parecería un buen ejemplo de lo que leía en un análisis de Martin Casado y Matt Bornstein para Andreessen Horowitz sobre el negocio de la I.A., de cómo los sistemas de aprendizaje automático siguen requiriendo la intervención humana:

En primer lugar, entrenar los modelos de I.A. más avanzados a día de hoy implica la limpieza y etiquetado manuales de enormes conjuntos de datos. Este proceso es laborioso, caro y [está] entre las mayores barreras para una adopción de la I.A. más extendida. Además, […] el entrenamiento no termina cuando el modelo se pone en producción. Para mantener la precisión se necesita capturar, etiquetar y realimentar al sistema nuevos datos de entrenamiento. […]
En segundo lugar, para muchas tareas, especialmente aquellas que requieren un razonamiento coginitivo superior, los humanos están enchufados a los sistemas de I.A. en tiempo real.

Nada quita que la idea de generar letras de canciones sea interesante pero, desde hace años, cuando veo determinado tipo de declaración de intenciones usando la tecnología de moda lo único que oigo «marketing, vender, humo…» y al final sólo me sale contestar No se ofusque con este terror tecnológico que ha construido. La posibilidad de destruir un planeta es algo insignificante comparado con el poder de la Fuerza.

De todas maneras, es curioso ver lo que produce con términos como around the world o simplemente con na.

.

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.