Strudel live coding: crea música con código online

Escribe patrones musicales como código y escúchalos al instante en el editor Strudel integrado: TidalCycles para el navegador.

Elige abajo un patrón inicial, pulsa reproducir dentro del editor y cambia el código mientras suena. Eso es live coding: la música se actualiza en cuanto vuelves a evaluar.

Strudel live coding: crea música con código online
Escribe patrones musicales como código y escúchalos al instante en el editor Strudel integrado: TidalCycles para el navegador.
Patrones iniciales

Patrón: Batería

sound("bd hh sd hh")

El sonido solo comienza cuando pulsas reproducir dentro del editor. ¿Quieres el entorno completo con navegador de muestras y visuales? Abrir en Strudel completo

Referencia rápida de mini-notación de Strudel

Las diez construcciones que desbloquean la mayor parte del lenguaje de patrones. Todo lo que está entre comillas dobles es mini-notación; cada secuencia entre comillas dura exactamente un ciclo.

ConstrucciónEjemploQué hace
sound() / s()sound("bd hh sd hh")Reproduce muestras o sintetizadores con nombre: bd = bombo, sd = caja, hh = charles. Los cuatro eventos comparten un ciclo por igual.
note()note("c4 e4 g4").sound("piano")Reproduce alturas por nombre (c4, eb3) o número MIDI y las envía al sonido que encadenes después.
* (repetir)sound("hh*8")Comprime 8 charles en el espacio de un evento: la forma estándar de escribir subdivisiones rápidas.
~ (silencio)sound("bd ~ sd ~")Un espacio silencioso. La cuadrícula de eventos conserva su ritmo; la tilde simplemente no reproduce nada.
[ ] (grupo)sound("bd [sd sd] bd sd")Los corchetes empaquetan varios eventos en un espacio y subdividen su tiempo; aquí dos cajas rápidas comparten el pulso 2.
< > (alternar)note("<c2 eb2 g2>")Los signos menor y mayor reproducen una entrada por ciclo y las recorren: una progresión de acordes instantánea.
stack()stack(sound("bd*4"), sound("hh*8"))Superpone patrones para que suenen a la vez: así creas una batería completa o añades un bajo bajo la batería.
fast() / slow()sound("bd sd").fast(2)Acelera o estira un patrón: fast(2) encaja dos repeticiones por ciclo; slow(2) extiende una sobre dos ciclos.
rev()note("c4 e4 g4 b4").rev()Invierte el patrón dentro de cada ciclo: una variación melódica de una sola palabra.
.euclid(k, n)sound("bd").euclid(3, 8)Distribuye k golpes lo más uniformemente posible en n pasos. euclid(3,8) es el ritmo tresillo de innumerables grooves latinos y de baile.

Sobre Strudel y el live coding

El live coding consiste en interpretar música escribiendo y reescribiendo código mientras suena. En vez de colocar notas en una línea de tiempo, describes patrones —un bombo en cada negra, un acorde que cambia en cada ciclo, charles comprimidos en tresillos— y el lenguaje convierte esas descripciones en sonido de inmediato. Cambia una línea, vuelve a evaluar y la música se transforma en el siguiente ciclo sin detenerse. Esta práctica hizo crecer las algoraves, noches de club en las que se proyecta el código de los intérpretes para que el público lo lea mientras baila. Strudel es la encarnación en JavaScript de TidalCycles, el lenguaje de patrones creado por Alex McLean en Haskell hacia 2009 que se volvió la lengua franca de la música codificada en vivo. Strudel reimplementa las ideas de Tidal para que funcionen por completo en una pestaña del navegador: sin cadena de herramientas Haskell, servidor de audio SuperCollider ni instalación. Esta página integra el REPL oficial de Strudel de strudel.cc en un marco; así tienes el editor auténtico —destello al evaluar, mensajes de error y sonidos integrados— dentro de la página, y los botones iniciales cargan patrones funcionales. El enlace para abrir Strudel completo lleva tu patrón actual al entorno con navegador de muestras y visualizaciones. El corazón de los lenguajes de la familia Tidal es el ciclo: un intervalo repetido, de unos dos segundos de forma predeterminada, con el que se miden todos los patrones. La mini-notación entre comillas dobles corta ese ciclo. Si escribes bd hh sd hh obtienes cuatro eventos iguales por ciclo: bombo, charles, caja, charles. Pequeñas ediciones producen grandes cambios musicales: un asterisco multiplica eventos, una tilde inserta silencio, los corchetes subdividen un espacio y los signos menor y mayor alternan valores en ciclos sucesivos, de modo que dos caracteres se convierten en una progresión de acordes. Lo adictivo de los lenguajes de patrones es que las transformaciones se componen. Encadena rev() para invertir una melodía, fast(2) para doblar su velocidad o euclid(3,8) para redistribuir golpes en el tresillo cubano. Todas se aplican a patrones enteros, no a notas aisladas, por lo que una edición cambia toda la textura. Empieza con Batería, cambia un nombre de muestra, añade un asterisco y estarás haciendo live coding.

Recetas de patrones para probar en el editor

Copia cualquiera en el editor integrado, pulsa reproducir y modifícala un token cada vez.

CódigoLo que oyesIdea que demuestra
sound("bd hh sd hh")Un backbeat básico: bombo, charles, caja, charles, una vez por cicloCuatro eventos dividen un ciclo por igual: el hola mundo de la mini-notación.
sound("bd*4, hh*8")Bombo four-on-the-floor bajo un flujo de charles en corcheasUna coma dentro de las comillas superpone secuencias, como un stack() compacto.
note("<c2 eb2 g1 bb1>").sound("sawtooth").lpf(500)Una línea de bajo oscura y filtrada que cambia de fundamental en cada cicloLos signos menor y mayor alternan por ciclo; lpf(500) es un filtro pasa-bajos de 500 Hz que suaviza el diente de sierra.
sound("bd").euclid(3, 8)El tresillo: golpes en los pasos 1, 4 y 7 de 8Los ritmos euclidianos distribuyen 3 golpes lo más uniforme posible en 8 pasos, de son cubano a EDM.
note("c4 e4 g4 b4").rev().fast(2)Un arpegio descendente tocado dos veces por cicloLas transformaciones se encadenan de izquierda a derecha: invierte el patrón y luego duplica su velocidad.

Cómo empezar a hacer live coding

  1. Haz clic en un patrón inicial —Batería, Melodía, Línea de bajo o Polirritmia— para cargar su código en el editor Strudel integrado.
  2. Pulsa el botón de reproducir dentro del editor (los navegadores requieren un clic antes de iniciar sonido).
  3. Edita el código mientras suena: cambia una muestra, añade *2 a un evento o cambia una nota; después pulsa Ctrl+Enter (Cmd+Enter en Mac) para volver a evaluar.
  4. Superpone más patrones con stack() y dales forma con fast, slow, rev o euclid usando la tabla de referencia rápida.
  5. Cuando el patrón supere el boceto, abre Strudel completo para usar el entorno con navegador de sonidos y visuales.

Preguntas frecuentes sobre Strudel live coding

¿Qué diferencia hay entre Strudel y TidalCycles?
TidalCycles es el lenguaje de patrones original, escrito en Haskell y normalmente combinado con el motor de síntesis SuperCollider. Strudel es un proyecto hermano oficial que porta el mismo sistema de patrones a JavaScript y Web Audio API, por lo que se ejecuta en cualquier navegador moderno sin instalación. Los patrones y conceptos se transfieren casi uno a uno.
¿Por qué los botones iniciales recargan el editor?
Strudel acepta un programa completo mediante la URL: la fuente del patrón se codifica en base64 en la dirección después del símbolo #. Cada botón inicial dirige el editor integrado a una URL nueva que contiene ese patrón; por eso el enlace para abrir Strudel completo también lleva tu patrón actual.
¿Por qué no hay sonido hasta que pulso reproducir en el editor?
Los navegadores bloquean todo audio hasta que el usuario interactúa con la página que lo produce: es una protección contra la reproducción automática. El marco de Strudel es su propia página, así que el primer clic debe ocurrir dentro del editor. Después, al volver a evaluar el código, la música se actualiza sin parar.
¿Qué es un ciclo?
El ciclo es la unidad de tiempo musical de Tidal y Strudel: un intervalo repetido de unos dos segundos al tempo predeterminado contra el que se miden todos los patrones. Una secuencia entre comillas como bd hh sd hh divide un ciclo en partes iguales; fast(2) mete dos ciclos en uno y los signos menor y mayor entregan un valor por ciclo.
¿Qué es una algorave?
Una algorave es un evento musical donde los intérpretes generan música, y a menudo visuales, en directo escribiendo código. Normalmente proyectan la pantalla para que el público vea cómo cambia el código fuente. El término se acuñó hacia 2012 en la comunidad TidalCycles y hoy hay algoraves en todo el mundo.
¿Strudel es gratis? ¿Por qué está integrado en un marco?
Sí. Strudel es software libre y de código abierto publicado bajo la licencia AGPL-3.0 por la comunidad Strudel/TidalCycles. Integrar el editor oficial de strudel.cc conserva ese código en su propio origen, separado limpiamente de este sitio, y te ofrece el REPL real y siempre actualizado en lugar de una copia.