
La sintaxis de Strudel
La sintaxis de Strudel
Paremos un momento para entender la sintaxis de Strudel.
En Strudel siempre encontramos comandos con esta forma: algo()
. Por ejemplo, sound()
, stack()
, cat()
. A esto se le llama funciones. Sin embargo, como probablemente esa palabra suene muy técnica, puedes llamarlas máquinas o programas.
Por ejemplo, piensa en sound()
como una máquina a la que lo que le pongas dentro del paréntesis, lo transformará en sonido: sound("bd bd bd bd")
.
De manera similar, piensa en cat()
como otra máquina. Lo que pongas dentro del paréntesis, lo concatenará para que suene una cosa detrás de otra.
En resumen, son máquinas que hacen el trabajo por nosotros.
Cuando les pasamos mas de una cosa a estas máquinas (como en stack
o cat
), separamos cada una con comas.
stack(
s("bd - bd -"),
s("- sd - sd"),
s("[hh hh] [hh hh] [hh hh] [hh hh]")
)
No importa si usas espacios, tabulaciones o saltos de línea. Puedes organizar el código como prefieras. Podríamos escribir todo en una sola línea si así quisiéramos.
stack(s("bd - bd -"), s("- sd - sd"), s("[hh hh] [hh hh] [hh hh] [hh hh]"))
Visualizando tus creaciones:
¿Quieres ver tu ritmo de forma más visual? Añade _pianoroll({ labels: 1 })
en cualquier línea.
¿Qué hace labels: 1
? Muestra el nombre del instrumento en la visualización. Si usas labels: 0
o simplemente _pianoroll()
, ocultarás los nombres.
Puedes añadir un color a cada instrumento también:
La otra sintaxis de Strudel
En los ejemplos anteriores has visto la otra sintaxis de Strudel: las "funciones" con punto (.
).
Has visto .color()
y ._pianoroll()
. Son las mismas "máquinas" que hacen cosas por nosotros, solo que escritas de forma diferente. A veces esta forma es más cómoda.
Es lo mismo escribir sound("bd bd bd bd")
que escribir "bd bd bd bd".sound()
.
Esta sintaxis nos ayuda en situaciones complejas. En vez de tener algo como d(c(b(a())))
, podemos escribir a().b().c().d()
. Es más fácil de leer, ¿no?
Explicado de forma simple: En vez de pasar todo dentro del paréntesis, el punto (.
) le dice a la función: "Toma lo que está antes del punto y trabaja con eso".
Ejemplo: En vez de pasarle a ._pianoroll()
todo nuestro ritmo dentro del paréntesis, el punto (.
) le dice: "Toma todo el ritmo que está antes del punto y hazme un gráfico con él".
Lo mismo pasa con s("bd - bd -").color("blue")
: "Toma lo que está antes del punto y asígnale el color azul".
Compara estas dos formas:
s("bd - bd -").color("blue").pianoroll()
Es como una cadena de montaje, lo que sale de una maquina, pasa a la siguiente.pianoroll(color(s("bd - bd -"), "blue"))
En el caso de que pudiéramos escribirlo asi, vemos que es mucho menos legible.
Al final, todo es lo mismo: máquinas que trabajan con la información que les pasamos, sea dentro del paréntesis o sea antes del punto.
Más adelante veremos cómo simplificar esta sintaxis. Por ahora, es fácil olvidar una coma o un paréntesis. Cuando esto pasa, no suena nada al darle a play. ¡No te preocupes! Strudel te ayuda con una pista.
Strudel muestra en la parte de abajo de la pantalla un mensaje de error con el número de línea donde está el problema: Error: Unexpected token (7:1).
El mensaje no es muy claro, lo sé. Pero los dos últimos números (7:1) indican dónde buscar: línea 7, carácter 1.
En la siguiente lección volvemos a los ritmos de batería y veremos algunos ejemplos reales. 👉>>