caso de estudio · el motor de música
ap-studiobeatwave
Cómo se hizo el motor que compone en tiempo real la música de Asteroid Pong. AP-STUDIO BEATWAVE nació como el taller donde se diseñó ese motor: un estudio de música procedural que corre entero en el navegador. Esta página cuenta cómo funciona, qué decisiones se tomaron y qué dejó el proyecto.
afinar · vista de pc
- 17géneros
- 6compases
- 9temporadas
- 9gestos
- 8canales
- −14LUFS al exportar
Horas de música que no se repite, en un juego chico.
Un juego de partidas cortas que se juega una y otra vez necesita música para horas, que acompañe lo que pasa en pantalla y que no canse. Con temas grabados, eso son cientos de megas de audio y loops que se reconocen a los diez minutos.
Música distinta en cada partida, que cambie con cómo venís jugando y que entre en un juego web y en Android sin descargas grandes.
En lugar de reproducir canciones, un motor las compone mientras suenan, con las reglas que usaría un compositor para cada género, y sintetiza todos los sonidos en vivo con WebAudio.
Para afinar el motor hacía falta escucharlo, tocarlo y medirlo. Así nació AP-STUDIO BEATWAVE: el mismo motor con controles, pantallas y herramientas de mezcla, de donde sale lo que suena en el juego.
Diseño, composición y dirección: Daniel J. Campos Lozada (NoamDan). JavaScript y WebAudio en una sola página: todos los sonidos se sintetizan en el propio código, y pruebas automáticas renderizan pistas y las miden.
De tres notas a una canción entera.
El motor trabaja como un compositor con método: primero una idea chica que se pueda recordar, después la frase y al final la forma. Cada pista sale de una semilla, que queda anotada en su ficha.
- MotivoUna célula de 3 a 6 notas con ritmo propio. Tiene carácter: pegadiza, cantable o rítmica.
- Frase de 8 compasesEl motivo vuelve como eco, secuencia o fragmento, sube a un punto alto y cierra. La perilla Apertura decide cuánto cambia: a la izquierda se repite casi igual; a la derecha salta y usa notas de paso.
- Canción con formaLa frase se reparte en partes: intro, A, B, break y outro. Cada género tiene sus formas (Pop, EDM, Lo-fi, Hip-hop, Cinematográfica y otras) y el motor elige entre las que le tocan.
- Intro16 comp.
- A16 comp.
- B32 comp.
- Break32 comp.
- A16 comp.
- B32 comp.
- Outro16 comp.
Las reglas del gancho
- Tiempos fuertes y notas largas, siempre en notas del acorde.
- Notas de paso que resuelven por grado.
- Sin saltos de más de una sexta y con un rango acotado.
- 7 formas de melodía (pregunta y respuesta, AABA, ABAC, riffs de 1 y 2 compases, notas largas, frase corta) y 7 remates.
- En la parte B, el gancho sube una tercera.
Armonía que no choca
Progresión de 4 acordes, curada para cada género o nueva y funcional (tónica, preparación, dominante), siempre en el tono de la canción. El color (7.ª, 9.ª, add9, sus2, sus4, 6.ª) se elige solo entre los que suenan bien en la escala: probado en 600 pistas, ningún choque.
Los acordes se acomodan buscando el menor movimiento entre uno y otro, incluido el salto del último al primero. Sobre 1400 progresiones, ninguna se mueve más que antes y 732 se mueven menos.
La parte B usa otra progresión de la misma tonalidad, que arranca en otro acorde y con un poco más de color; también puede cambiar de escala sin cambiar de tónica. Probado en 240 pistas: el gancho de B cae siempre en notas del acorde.
Una segunda voz suave, una octava abajo, que le contesta al gancho en sus huecos con notas del acorde que bajan por grado. Suena en la parte B y en la última A.
17 géneros, cada uno con sus reglas.
Un género no es solo un tempo: trae su batería, su swing, sus sonidos, sus formas de canción y su manera de humanizar. Estos son los 17, con sus tempos típicos.
- Lofi canal70–90 bpm
- Lofi house lounge112–124 bpm
- Lofi house crudo122–130 bpm
- Synthwave chill85–115 bpm
- Techno melódico + trance126–135 bpm · juego
- House melódico / afro120–128 bpm · juego
- Liquid DnB168–174 bpm · juego
- Jungle melódico160–170 bpm · juego
- Neurofunk170–178 bpm · juego
- Tema de jefe120–160 bpm · juego
- Chiptune110–150 bpm
- Pocket 4-bit100–140 bpm
- Ambient50–70 bpm
- Cinematográfico60–90 bpm
- Hip-hop boom-bap85–95 bpm
- Trap / drill130–145 bpm
- UK garage130–135 bpm
Los marcados con «juego» son los que junta el atajo «Viaje del juego» de la Mezcla. El tempo se puede mover a mano; el Estudio avisa si queda fuera del rango típico del género.
La batería se reescribe para cada uno: el vals en 1-2-3, el 6/8 en dos pulsos, el 5/4 en 3+2, el 7/8 en 2+2+3. Bajo, acordes y melodía se ajustan al compás nuevo. Se elige al generar o en vivo.
Halloween, Día de Muertos, Navidad, Año Nuevo, Lluvia de meteoros, Primavera, Verano, Otoño e Invierno. Cada una suma progresiones propias a cualquier género y capas de sonido: trompetas y campanas en Día de Muertos, cascabeles y coro en Navidad, cuenta regresiva y fuegos en Año Nuevo. En automático, la temporada sale de la fecha.
Crecer, Subida, Barrido, Golpes y Reverso antes de la parte B; Hundirse y Cinta frenada antes del break; Cascada y Campanazo al entrar la A y en el final. Cada uno termina justo en el cambio de parte; el motor elige según el género y no repite el último que usó.
Halloween, por ejemplo, siempre suena en menor armónica o frigio y suma caja de música desafinada, cuerdas en trémolo, un latido cada 8 compases y susurros.
Ni perfecto ni torpe: humano.
Una máquina que toca exacto suena a máquina. El Estudio corre cada golpe y cada nota un poco, con el criterio de cada género, y deja quietos los acentos.
100 % es el valor de cada género, 0 % es exacto y llega hasta 167 %. Nunca pasa de ±20 % de fuerza ni de ±25 ms, y los golpes a fuerza plena y el primer paso de la canción no se tocan. Mueve batería, melodía, bajo y acordes, y está en todas las vistas.
El bombo empuja hacia abajo al resto, como el sidechain de la música electrónica, con una cantidad para cada grupo de instrumentos y un tiempo de recuperación que se ajusta al tempo.
Antes de entrar a una parte A o B, la caja hace un relleno en la última negra del compás, como lo haría un baterista. Se apaga entre las opciones del motor.
Melodía, acordes y synth largo tienen su perilla Ligado: de la nota cortada a la que se sostiene y empalma con la siguiente sin hueco. Cada sonido trae su valor de fábrica.
Una radio que no se termina.
En la Mezcla, el motor crea un tema tras otro y los cruza en dos decks, como un DJ: baja uno mientras sube el otro, cambia el bajo a mitad del cruce, lleva el tempo de un tema al siguiente y solo junta tonos compatibles (el mismo, la quinta o la cuarta).
Olas (por defecto): calentamiento, subida, pico con un tema de jefe y respiro, de 4 a 6 temas; cada ola arranca un poco más alta. Subida larga: unos 14 temas subiendo hasta el jefe y 3 de cierre. Parejo: energía estable.
Con «Pariente», el próximo tema comparte tono compatible, clima vecino, tempo de la misma familia (sin saltos de más de 12 %), la mitad de los sonidos y un gancho con el mismo ritmo de motivo y otras notas. Medido en 12 temas: se mantienen unos 5 de 8 sonidos y no hay saltos de tempo. «Primo» y «Libre» sueltan más.
La Mezcla puede imaginar a alguien jugando: si avanza, la ola sube; si se traba, la ola no avanza y la energía baja un poco. Es la misma idea que en el juego, donde la música sigue cómo venís jugando.
De la idea al archivo para la distribuidora.
Exportar arma un .zip con lo que pide una distribuidora para Spotify y otras plataformas. La canción se procesa fuera de tiempo real, unas 15 veces más rápido que escucharla.
aurora-lights/ aurora-lights.wav WAV 24 bits · 44,1 kHz aurora-lights.mp3 MP3 320 kbps stems/ un WAV por canal prendido portada-3000.jpg portada de 3000 × 3000 ficha.txt · .json los datos de la canción cancion.json el proyecto, para editarlo
- Volumen
- −14 LUFS integrado, medido con el estándar de streaming (ITU BS.1770), y un pico real de −1 dBTP medido entre muestras, como lo miden Spotify y YouTube. Probado: −14,0 LUFS en WAV y en MP3.
- Revisión previa
- Antes de exportar, y sin cambiar nada, revisa picos, pico real, clipping, compatibilidad en mono, DC y graves o agudos extremos de la mezcla cruda.
- Tema de referencia
- Con un tema de referencia cargado, el Estudio compara volumen, pico real, ancho estéreo y balance por zonas, y sugiere qué canal tocar. El archivo se analiza en el aparato, sin subirse a ningún lado.
- Diagnóstico de balance
- Mide la mezcla por tercios de octava contra su propia pendiente, nombra el síntoma (turbio, encajonado, áspero, retumbante, sin cuerpo), escucha cada canal solo para decir cuál lo causa y ofrece un botón por corrección. Se aplican a mano, de a una: es una guía, no una verdad absoluta.
- Ficha
- Título, artista, colección, compositor, género, tempo, tono, progresión, forma, duración y semilla. Se llena sola.
Describila y el motor la arma.
En «Pedir una pista con palabras» se escribe lo que se quiere y el Estudio entiende género, tono, modo, tempo, compás, instrumentos y algunos artistas de referencia.
- Lo que escribís gana sobre lo que sugiere una referencia.
- Si no entiende nada, pregunta en vez de inventar.
- Una referencia es una aproximación de la receta, no una copia.
- Funciona sin internet: reconoce palabras clave dentro de la misma página y no manda el texto a ningún lado.
Pedidos que entiende
- lofi en la menor a 85 bpm con piano
- cinematográfica triste en 3/4
- trap oscuro a 140 bpm
- ambient suave a 60 bpm
También entiende palabras clave en inglés.
El mismo motor que suena cuando jugás.
El Estudio parte del motor de música del juego, con las mismas tablas de teoría, y le pone controles. Por eso lo que se prueba acá puede volver al juego.
En Asteroid Pong la música arranca en techno y pasa por drum & bass y jungle hasta breakcore, de 124 a 194 BPM, según tu nivel y cómo venís jugando.
Cada jefe tiene su tema, entre 166 y 176 BPM. En el Estudio, «Tema de jefe» es un género más, y en la Mezcla cada ola del set termina en un jefe.
La rocola del juego pasa los temas de los jefes en moderno, pocket 4-bit y chiptune: son los mismos tres modos de sonido que se eligen en el Estudio.
Un interruptor hace sonar la melodía, el bajo y los sonidos tal como están hoy en el juego, para comparar con lo nuevo.
Lo primero que pasa del Estudio al juego son tres timbres de bajo nuevos (sub, cuerpo y reese), que el motor del juego puede elegir además del original. Melodías, géneros y efectos del juego quedan como están.
Un solo archivo, en el navegador.
Todos los sonidos se sintetizan en vivo con WebAudio, la API de audio del navegador. El Estudio entero, con su codificador de MP3, es una sola página web.
PC: rack, lista y mixer, para producir con mouse. iPad: escenas y pad XY, para tocar en vivo con los dedos. Celular: groovebox, para bocetar rápido. El mixer, con corte de graves, ancho y paneo por canal, está en las tres.
Las notas se agendan con al menos 300 ms de anticipación, y más si el aparato es lento: el Estudio mide cuánto tarda en redibujar la pantalla y se adapta. Los efectos caen en el tiempo exacto del paso. En una prueba con el procesador seis veces más lento: cero notas tarde (antes, hasta 161 ms).
Siete escenas de efectos: filtro, mood + energía, delay, stutter, compuerta, sidechain y eco de reverb. REC graba el pad y las perillas como automatización.
Cada sonido pasó por un Laboratorio de sonidos aparte, donde se votó si se queda, se saca o queda solo para elegir a mano.

Lo que dejó el proyecto.
Las primeras melodías eran caminatas al azar: técnicamente en la escala, pero sin nada que recordar. Lo que las volvió pegadizas fueron reglas simples de oficio: un motivo que vuelve, notas del acorde en los tiempos fuertes y notas de paso que resuelven.
Cada promesa se volvió una prueba: ningún choque de acordes en 600 pistas, −14,0 LUFS medidos con el estándar de streaming, pico real bajo −1 dBTP. Casi 50 pruebas automáticas renderizan audio y lo miden antes de cada cambio.
Una nota tarde se oye aunque la pantalla se vea perfecta. Separar el dibujo de la interfaz del reloj y hacer que la anticipación se adapte al aparato llevó las notas tarde a cero, aun con el procesador seis veces más lento.
Cada sonido pasó por un laboratorio de votación: se queda, se saca o queda solo para elegir a mano. Los números ayudan a encontrar problemas, pero lo que se publica lo decide una persona escuchando.
Un motor propone. Una persona decide.
La música de Asteroid Pong y AP-STUDIO BEATWAVE están compuestos y dirigidos por Daniel J. Campos Lozada, que publica como NoamDan, en Buenos Aires. El motor propone ganchos, formas y sonidos; qué se queda, qué se cambia y qué se publica lo decide una persona.
Por eso cada ficha que exporta el Estudio lo dice así:
«música creada con un motor procedural y dirección humana»
El codificador de MP3 es lamejs (licencia LGPL-3.0).