Llevo siguiendo a Magenta, el grupo de investigación musical de Google, desde que en 2017 sacaron NSynth, un sintetizador neuronal que llegó a tener hasta su versión física (de la cual conseguí una copia). Su aproximación por lo menos en este grupo de investigación no ha cambiado en una década, no están tanto en el producto terminado, ás en dar herramientas open source
Su último modelo, Magenta RealTime 2 (MRT2), es un modelo abierto de última generación, con un eficiente motor de inferencia en tiempo real que te permite crear y tocar instrumentos musicales con IA en tu ordenador. Y lo nuevo: ahora corre en local, sin pasar por la nube. El modelo deja de ser un servicio remoto y se convierte en una herramienta independiente (generas y tocas música en tiempo real, respondiendo al instante a texto, MIDI o audio). Al funcionar en un Mac ya no dependes de servicios comerciales como Lyria RealTime de Gemeni.
Además, Magenta no solo abre el modelo, publica una colección de instrumentos y experiencias de ejemplo así como da acceso a librerías para creártelos tú y para que músicos y desarrolladores lo integren en su propio software. Algunos ejemplos sirven para ver como se puede usar el modelo, clonar un sonido y tocarlo, mezclar estilos sobre la marcha, montar acompañamientos en vivo con muy baja latencia, o trabajar la experimentación sonora.
Como siempre, cuidado con las palabras, sobre todo con las que dicen «genera música». Estos modelos no generan música: generan probabilidades de estilos parecidos a los que ya han visto, con más o menos acierto. Si no hay intención humana hay tokens.
A mi lo que de verdad me interesa es otra cosa y es que los pesos son libres y funciona en local, y te deje construir tus propios instrumentos, como quien diseña un módulo eurorack o parchea en Pure Data o SuperCollider, una caja de herramientas generativa.
Con esta guía busco crear un instrumento con MRT2 pero, como siempre, abriendo la caja. ¿Qué supone crear un instrumento mezclando palabras, aunque sean estilos conocidos? ¿Si pongo «punk» o «punks» suena igual? ¿Y «punks rosas» es lo mismo que «pops negros»?
Claro, al mirar en detalle apareció (o entendí) algo curioso. Por dentro, MRT2 es un sistema discreto: convierte lo que le mandes (una palabra, un audio) en un vector de 768 números, comprime ese vector a 12 símbolos (los tokens) de un vocabulario cerrado y fijo del modelo (1024 opciones por símbolo), y con ellos genera audio a trozos, como fotogramas, unas 25 veces por segundo. No entrega una pista cerrada, sino un flujo que puedes empujar mientras suena, en lugar de tocar ese flujo como instrumento, se puede recorrer el mapa de sonidos que el modelo ya distingue de forma nativa. Usar las palabras para cartografiar ese espacio latente y volverlo un sistema musical finito que se convierte en nuestro propio mapa.
Esta guía abre esa cadena paso a paso y enseña dónde metimos mano. Y lo de aquí no es solo de este modelo de música: la base (texto a vector, vector a símbolos, símbolos a salida) es común a casi toda la IA generativa.
Bajo cada título verás de quién es cada pieza: del modelo (lo que viene dado por Google y se puede comprobar), medido (lo que vimos al abrir el modelo y comprobamos nosotros) y nuestro (lo que añadimos: el mapa, el vocabulario, el instrumento).
1 · El panorama
del modelo
de una palabra a un río de audio
El recorrido completo de un vistazo. A la izquierda entra tu indicación (texto o audio); a la derecha sale música, no como pista cerrada sino como ese flujo. Entre medias, los dos cuellos de botella que vertebran toda la guía: la compresión a un vector de 768 números (el embedding, que vemos enseguida) y, sobre él, la compresión a 12 símbolos (la cuantización, justo después). Cada flecha es uno de esos pasos.
2 · Una palabra es un punto en 768 dimensiones
del modelo
el embedding (incrustación)
Cuando el modelo recibe «ocean» no piensa en olas ni en su significado, la convierte en un punto dentro de un espacio de 768 dimensiones. Es decir, 768 números, cada uno una coordenada (imposible de dibujar, pero la intuición es la de cualquier mapa). Y lo que importa no es el punto en sí, sino las distancias entre puntos: esa distancia es musical. «ocean» y «underwater» caen casi en el mismo sitio, y suenan a cosas parecidas, «thrash metal» se va a la otra punta del espacio, y suena a otro mundo. La regla es justo esa, cerca quiere decir que suena parecido.
Esa cercanía se mide con el coseno que es el ángulo entre dos puntos vistos desde el centro. Dos términos casi en la misma dirección dan coseno próximo a 1 (muy cerca) y en direcciones opuestas, próximo a 0 o negativo será lejano. Para estos modelos trabajar con vectores permite trabajar con esta matemática por es el coseno nos acompañará el resto de la guía ya es la regla con la que medimos todo el mapa.
Dos etapas, y por qué esto va más allá de MRT2
del modelo
Conviene separar dos cosas. Que «ocean» acabe en ese punto de 768 dimensiones lo decide una red neuronal, es una función aprendida, sin fórmula que puedas seguir a mano. Lo que viene después, convertir ese punto en símbolos (tokens) y volver a montarlo, es matemática sencilla, tablas y sumas (como verás enseguida). Y casi cualquier modelo actual arranca igual, texto a embedding aquí la diferencia está en qué hace luego con esos vectores.
3 · Cuantizar: del valor continuo al símbolo
del modelo
la carta de colores y el codebook
La cuantización es una idea vieja y muy usada en señales y compresión: representar algo continuo con un conjunto finito de valores de referencia, igual que una imagen reduce millones de colores a una paleta. Aquí hacemos lo mismo, pero con vectores.
Y es que un punto de 768 decimales es demasiado para un transformer, por eso estos modelos no manejan valores continuos, sino símbolos de un vocabulario finito, como un idioma maneja un número limitado de letras. Cuantizar es sustituir cada valor continuo por el más parecido dentro de un conjunto cerrado de valores de referencia. Ese conjunto es el codebook (un diccionario fijo de puntos-tipo), y a cada una de sus entradas la llamamos centroide, porque representa el centro de una región del espacio.
Verlos como una paleta de colores igual lo hace más claro esto tienes un tono exacto (tu vector) y una paleta cerrada de 1024 tonos de referencia (el codebook). Eliges el más cercano y te quedas con su número, no con el color original como resultado pierdes matices, pero ganas un símbolo manejable. Eso es cuantizar.
El codebook por dentro: abrir un token y reconstruir
del modelo
Vale la pena ver el mecanismo. Un centroide es otro vector de 768, un punto fijo de referencia. El codebook es una tabla con 1024 de esos puntos. Y abrir un token es leer una fila: el token es un número, vas a la tabla y lees esa fila. Lo que hay ahí es el centroide.
¿Y reconstruir? Igual de directo: lees las filas de los tokens (12 en MRT2) y las sumas. Esa suma recupera, casi clavado, el vector original. Por eso un estilo entero cabe en 12 símbolos.
4 · RVQ: doce capas que afinan el tono
del modelo
cuantización residual
Una sola paleta de 1024 tonos es muy basta: el tono elegido se queda lejos del original. De ahí la R de RVQ (Residual Vector Quantization, cuantización vectorial residual). La idea: tras elegir el primer tono, miras lo que aún falta (el residuo) y eliges otro tono que lo corrija; y así doce veces, cada nivel con su propia paleta. El estilo no es un símbolo: son doce. Y la reconstrucción mejora rápido: con 1 token rondas un coseno de 0,5; con los 12, ≈0,96.
El nivel 1, el más grueso, será nuestro mapa.
5 · Los índices no son coordenadas
medido
una trampa sutil
Dos estilos que suenan parecido (funk y disco, con un coseno alto de 0,77, o sea muy cerca) tienen tokens de aspecto dispar: funk da 412, 88, 5, 901… y disco 39, 991, 220, 7…, sin apenas prefijo común. Tentador concluir que están lejos, y sería falso. Los 1024 centroides están numerados de forma arbitraria: el número es una etiqueta de posición, no una medida. La cercanía solo reaparece cuando abres los tokens y sumas los centroides a los que apuntan: es ahí, sobre el vector reconstruido, donde funk y disco vuelven a quedar juntos.
Ruta, no coordenada. Eso es lo que legitima usar el codebook como mapa.
6 · Un sistema discreto que se toca en tiempo real
nuestro
qué es del modelo y qué es nuestro
Aquí viene nuestro juego y nuestra exploración, pero para eso hay que separar dos cosas. Una es del modelo: MRT2 es, de fábrica, un generador de música en tiempo real, responde al instante y nunca se detiene (esa onda sonora continua). La otra es nuestra: la interfaz que construimos para jugar, crear nuestro propio mapa y oír qué suena en las distintas regiones.
Lo que montamos es sencillo de contar. En lugar de reescribir un prompt cada vez, mandamos al motor, en caliente, el vector de estilo ya cuantizado, y dejamos que interpole suavemente de uno a otro sin cortar el sonido. Mover el estilo deja de ser escribir: es empujar un punto por el mapa y oír cómo el río cambia de color.
7 · De constelaciones a territorio
nuestro
nuestra pregunta, y dos formas de responderla
Para eso tuve que entender que las palabras, otra vez, están mediadas por el entrenamiento; pero había que poder situarlas, y al hacerlo apareció lo que de verdad buscábamos. Si cada palabra es un punto y la cercanía es musical, ¿qué ocurre si en vez de pedir música soltamos términos (estilos, nombres, verbos, colores) y miramos dónde caen y cómo suenan? ¿Se puede ver el mapa entero, no solo los lugares que sabemos nombrar?
Hay dos formas de intentarlo. La de constelaciones: eliges unos puntos con nombre (por ejemplo 24 géneros musicales) y los proyectas: el mapa toma la forma de lo que elegiste y solo navegas por ahí. La otra, la de territorio: en vez de nombrar, recorres la rejilla nativa del propio modelo y alcanzas también las zonas anónimas. Nosotros nos pasamos a la segunda.
8 · El codebook grueso = 1024 regiones = 32²
del modelo · nuestro
la partición nativa
Volvamos al codebook, pero a su primer nivel (el más grueso, el del primer paso de la cuantización residual). Tiene 1024 centros, y cada uno es una región que el modelo distingue de serie. Como 1024 = 32², se dibuja limpiamente como un tapiz de 32×32. Esos centros son reales y legibles del fichero del cuantizador (vienen negados: el centro de la región i es −codebook[0][i]).
Lo real y lo elegido. Que haya 1024 centros es del modelo; dibujarlos como tapiz 32×32 es decisión nuestra. Pero cada casilla es un punto de verdad, que suena.
9 · Situar por el centro: la palabra más cercana
nuestro
poner nombres a lo anónimo
El espacio no trae nombres propios, así que se los ponemos nosotros. Para cada región vamos a su centro y le preguntamos a nuestro vocabulario qué palabra tiene más cerca (un retrieval por coseno): esa palabra es el rótulo. La ventaja de medir desde el centro es que se puede nombrar cualquier región, también las vacías o las raras, sin depender de que una palabra «caiga» justo dentro.
El rótulo es un préstamo del lenguaje sobre un punto que existía sin él.
10 · El vocabulario: tres capas con procedencia
nuestro
la vara de medir
Situar por cercanía necesita un buen vocabulario, porque es la vara de medir con la que nombramos. Lo construimos en tres capas con procedencia: la folksonomía musical (lo que la gente usa para etiquetar música, alto en señal), un registro evocador cotidiano y una cosecha del libro Retromania. En total ~5.500 palabras. Importante: solo nombran; el territorio sigue siendo del modelo.
11 · t-SNE: el cono y por qué «respira»
medido · nuestro
aplanar 768 dimensiones a un plano
Para poder dibujar algo de 768 dimensiones hay que bajarlo a 2, y a eso se le llama reducción de dimensionalidad: buscar un plano que conserve lo esencial de la nube original. Hay dos familias. PCA (Principal Component Analysis) es lineal, se queda con los ejes donde los datos más varían, como aplastar una sombra contra la pared. Es rápido, pero si el espacio no se reparte de forma uniforme (y este no lo hace), deforma. t-SNE (t-distributed Stochastic Neighbor Embedding) es no lineal, le dan igual las distancias globales y solo cuida quién está cerca de quién, colocando cada punto junto a sus vecinos.
Y aquí el espacio tiene una maña importante: es anisótropo, no se reparte por igual en todas las direcciones. Casi todos los vectores apuntan hacia el mismo lado (el llamado efecto cono), así que el coseno crudo sale siempre alto y el PCA lo agolpa todo en una bola. El t-SNE con métrica coseno respira: separa los vecindarios y deja ver el mapa.
12 · RasterFairy: del t-SNE a la retícula
nuestro
cuadricular sin romper vecindades
El t-SNE da una nube orgánica; el tapiz necesita una retícula perfecta. El truco (estilo RasterFairy de Quasimondo): plantearlo como una asignación óptima 1:1 entre los 1024 puntos y las 1024 casillas de un 32×32, minimizando el desplazamiento total. Cada punto se mueve lo mínimo a su casilla y las vecindades se conservan (desplazamiento medio ≈ 0,10).
13 · El tapiz que suena
nuestro
el instrumento final
Todo confluye aquí. Las 1024 regiones, rotuladas y cuadriculadas, forman un tapiz navegable. Pasas el ratón y lees; haces clic y la región suena: mandamos su centro al motor por el mismo camino del panorama. Y como las casillas vecinas se parecen, recorrerlas con criterio casi compone unas pseudo-bandas sonoras latentes.
El círculo se cierra. No le pedimos música: recorremos su territorio y escuchamos lo que el modelo distingue.
Guía visual creada el 22 de junio de 2026 a partir del experimento td-magenta. Las figuras son SVG autónomos en Procesos/images/ (guia-fig-01…13). Jardín digital: las cosas están vivas y puede haber erratas o piezas fuera de sitio.
Conexiones
- Magenta RealTime 2 - de texto a música (MusicCoCa, RVQ, tokens) — la teoría a fondo detrás de estas figuras: cuantización, codebook, centroides y los cuatro ingredientes de MRT2
- ¿Somos Fitzcarraldo creando máquinas generativas? — la otra cara: el exceso de pedirle a la máquina que reproduzca lo conocido, frente a aquí, donde recorremos lo que ya distingue