El proyecto beats.bitwrap.io es un generador musical que funciona íntegramente en el navegador y produce pistas completas —batería, bajo, melodía y arpegios— a partir de un único dato: una semilla numérica. No hay piano roll, ni línea de tiempo, ni inteligencia artificial implicada en la composición: la música surge de la combinación de teoría musical y números aleatorios, y la misma semilla reproduce exactamente la misma pista en cualquier máquina.
Lo singular del proyecto es que abandona el concepto habitual de secuenciador —una rejilla o un piano roll— y se apoya en redes de Petri, un modelo matemático de los años sesenta formado por círculos conectados por flechas por los que circulan tokens. Cada nota es, literalmente, un token que avanza un paso por el diagrama en cada tick. Los ritmos se construyen con el algoritmo de Bjorklund, que distribuye K golpes en N pasos de la forma más regular posible: tres golpes en ocho pasos dan el tresillo, presente en el son afrocubano o en éxitos pop; cuatro golpes en dieciséis pasos producen el pulso techno.
Cada instrumento —caja, bombo, hi-hat, palmas— corre como un anillo independiente. Si los anillos tienen longitudes distintas, se desincronizan y generan polirritmias de forma natural, como ocurre en las músicas afrocubana y de África Occidental. Las melodías, bajos, arpegios y pads armónicos se rigen por la misma estructura: anillos donde cada paso lleva una nota con su tono, velocidad y duración, elegidos para sonar coherentes sobre el acorde.
Para conseguir estructura de canción —intros, drops, breakdowns— el sistema añade redes de control que no producen sonido, sino comandos como silenciar el hi-hat o introducir el bajo. Frente a la versión inicial, que encadenaba 1.536 pasos individuales y generaba archivos de 22 MB, los autores introdujeron temporizadores de cuenta atrás con arcos inhibidores: un único círculo con muchos tokens reemplaza decenas de miles de círculos casi vacíos, reduciendo el archivo a 242 KB.
El motor de redes de Petri ocupa unas 400 líneas de JavaScript y el worker del secuenciador, unas 700. Sin npm ni bundler, con Tone.js desde CDN, un servidor Go para los ficheros estáticos y un modelo de hace seis décadas que, según el autor, demostró ser un secuenciador sorprendentemente capaz.
