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 más de una cosa a estas máquinas (como en stack o cat), separamos cada una de ellas con comas.

stack(
  s("bd - bd -"),
  s("- sd - sd"), 
  s("[hh hh] [hh hh] [hh hh] [hh hh]")
 )

No importa si usas saltos de línea o tabulaciones. Puedes organizar el código como te resulte más claro. 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 un poco 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. Por ejemplo, imagina que queremos aplicar varias transformaciones. Sin el punto, tendríamos que meter funciones una dentro de otra:
pianoroll(color(sound("bd"), "blue")) - difícil de leer.

Con el punto, podemos escribir:
sound("bd").color("blue").pianoroll() - mucho más claro, ¿no?
Es como una cadena de montaje, lo que sale de una maquina, pasa a la siguiente: "Reproduce el sonido bd, luego asígnale el color azul, y visualízalo en el piano roll"

Explicado de forma simple: En vez de pasar todo dentro del paréntesis, el punto (.) le dice a la máquina: "Toma lo que está antes del punto y trabaja con eso".

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.

Cuando las cosas no van...

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. 👉>>