Inicio / Leccion 00

Leccion 00 — Fundamentos: Pulso y Entorno (version Strudel)

Objetivo

Al terminar esta leccion podras: (1) calcular el setcps correcto de Strudel a partir de cualquier tempo en bpm, y (2) hacer sonar cualquier instrumento de percusion con la biblioteca de sonidos incorporada de Strudel, reconociendo de oido las articulaciones basicas (abierto, tapado, bajo) de cada familia.

Concepto

Pulso, compas y subdivision

Toda la musica cubana que vas a programar en este curso esta en compas de 4/4: cuatro tiempos por compas, y cada tiempo se subdivide en dos corcheas ("y"). Eso da 8 corcheas por compas, que es la unidad que vamos a usar constantemente para escribir patrones, por ejemplo:

posicion: 1   2   3   4   5   6   7   8
corchea:  1   &   2   &   3   &   4   &
tiempo:   1       2       3       4

Cuando en este curso veas una notacion como X..X..X., cada caracter es una de esas 8 posiciones: X es un golpe, . es silencio.

Ojo: posicion no es lo mismo que tiempo

Esta es una confusion muy comun al empezar. A lo largo del curso vas a leer frases como "el golpe cae en la posicion 4" — eso NO significa "en el tiempo 4". Son 2 cosas distintas:

  • Tiempo son los 4 pulsos principales del compas (1, 2, 3, 4) — lo que cuentas con el pie al bailar.
  • Posicion es el indice de las 8 corcheas de la tabla de arriba — una numeracion mas fina que incluye tanto los tiempos como las "y" que caen entre ellos.

Cada tiempo ocupa 2 posiciones: el tiempo en si, y su "y" inmediatamente despues. Formula rapida:

  • Si la posicion es impar (1, 3, 5, 7), cae exactamente sobre un tiempo: tiempo = (posicion + 1) / 2. Ej.: posicion 5 -> tiempo (5+1)/2 = tiempo 3.
  • Si la posicion es par (2, 4, 6, 8), cae en la "y" de un tiempo: tiempo = posicion / 2. Ej.: posicion 4 -> "y" del tiempo 4/2 = "y" del tiempo 2, NO el tiempo 4 ni el tiempo 3.

Este ultimo ejemplo (posicion 4 = "y" del tiempo 2) es exactamente el primer tono abierto del tumbao de conga que vas a estudiar en la Leccion 02.

La relacion cps / bpm

Strudel (como Tidal) no piensa en "bpm" (beats per minute) sino en cps (cycles per second): cuantos ciclos completos suenan por segundo. En este proyecto usamos la convencion 1 ciclo = 1 compas de 4/4. Como un compas tiene 4 tiempos, y bpm mide tiempos por minuto:

cps = bpm / 60 / 4  =  bpm / 240

Ejemplos:

bpm cps Genero de referencia
80 0.333 bolero / son muy lento
100 0.417 (aprox. 0.42) son tradicional (tempo base de este curso)
130 0.542 mambo / songo rapido

En Strudel esto se escribe con setcps, y puedes dejarle a JavaScript la division en vez de redondear a mano: setcps(100/60/4) es exactamente igual que setcps(0.4166...). (Alternativa equivalente: setcpm(100/4), cycles per minute = bpm/4.)

Hacer sonar un instrumento

El patron de salida que vas a usar en TODO este curso es siempre el mismo:

$: s("clave")

s(...) recibe una secuencia de nombres de sonido de Strudel (usa ~ para silencio) y los reproduce por los altavoces del navegador. El nombre del sonido es el que determina que instrumento suena (clave, conga, guiro, cowbell...); las distintas articulaciones o alturas de un instrumento se eligen con el indice :n (conga:0 tapado, conga:4 abierto, conga:28 bajo). Por eso el mapa SONIDOS.md (raiz de este curso) es tu referencia constante durante todo el curso.

El prefijo $: declara un patron; si pones varias lineas $: suenan a la vez (son las capas del arreglo). Ctrl+Enter evalua y reproduce todo el documento; Ctrl+. detiene todo. No hace falta instalar ni configurar nada: el sonido sale directo del navegador.

Escucha y analisis: "El Manisero" (The Peanut Vendor, Moises Simons, 1930)

"El Manisero" fue el primer gran exito mundial de un ritmo cubano: la version instrumental de Don Azpiazu y su Havana Casino Orchestra (grabada en 1930) desato la primera "fiebre de rumba" en Estados Unidos y Europa, mucho antes de que existieran el mambo o la salsa. La cancion original es un pregon — el canto callejero de un vendedor ambulante de mani ("¡Mani, mani, manisero, que rico el mani!") tal como se escuchaba en las calles de La Habana.

Lo que nos interesa de "El Manisero" para esta leccion es su base ritmica: el bajo y la percusion tocan una celula de 5 golpes en 8 corcheas conocida como cinquillo cubano:

X . X X . X X .
1 2 3 4 5 6 7 8

Es una celula simetrica (corchea-semicorchea-corchea-semicorchea-corchea, duraciones 2+1+2+1+2): se lee igual de adelante hacia atras que al reves.

Escucha la grabacion (por ejemplo la version de Don Azpiazu) prestando atencion solo al bajo/tumbadora: notaras que el patron no cae "parejo" sobre los 4 tiempos — tras el golpe inicial (posicion 1) hay dos grupos de dos golpes pegados (posiciones 3-4 y 6-7). Esa irregularidad es la firma sonora de la musica cubana desde el siglo XIX (el cinquillo viene de la contradanza y la habanera), y es el ancestro directo de la sincopa que en la Leccion 01 vas a estudiar de forma mas refinada: la clave.

El archivo codigo_ejemplo/02_cinquillo_manisero.strudel te deja escuchar exactamente esa celula, aislada, tocada con claves.

Ejemplo de codigo

00_disparo_instrumentos.strudel — un disparo por instrumento/articulacion

setcps(0.42)

$: s("clave*4")        // claves (Hit)                <-- ACTIVA por defecto
_$: s("cowbell*4")     // campana / cencerro 1 shank
_$: s("conga:28*4")    // conga 2, golpe de bajo (Bass)
// ...y asi hasta 12 lineas, una por cada familia de instrumento

Cada instrumento suena como un pulso de 4 golpes por compas (*4) para que se oiga con claridad; un solo golpe por ciclo se pierde con facilidad. Cada linea hace sonar UN solo instrumento. A diferencia de Tidal (donde se evalua una linea a la vez con Shift+Enter), en Strudel Ctrl+Enter evalua TODO el documento de una vez — pero solo suenan las lineas que NO empiezan por _. Por eso 11 de las 12 lineas vienen muteadas con el prefijo _ (_$:) y solo la de las claves esta activa: al evaluar oiras las claves. Para oir otro instrumento aislado, pon _ delante de la linea activa y quitaselo a la que quieras, y pulsa Ctrl+Enter. Asi comparas timbres de uno en uno.

01_pulso_y_cps.strudel — el mismo patron a 3 tempos distintos

// 80 bpm -> cps = 80/240 = 0.333...
setcps(80/60/4)
// 100 bpm (tempo del resto del curso)
// setcps(100/60/4)
// 130 bpm
// setcps(130/60/4)

// clave (misma en los 3 tempos)
$: s("clave ~ ~ clave ~ clave ~ ~")

El patron de clave (68 ~ ~ 68 ~ 68 ~ ~) es identico en los 3 casos; lo unico que cambia es cual setcps esta activo. Como en Strudel todos los setcps del documento se ejecutan (gana el ultimo), deja uno solo sin comentar y comenta los otros dos con //, luego Ctrl+Enter. Ve cambiando cual esta activo para sentir como cambia la velocidad del ciclo sin cambiar ni una nota del patron.

02_cinquillo_manisero.strudel — el cinquillo con claves

setcps(100/60/4)

// cinquillo con claves: X.XX.XX.
$: s("clave ~ clave clave ~ clave clave ~")

s("clave ~ clave clave ~ clave clave ~") es la celula de cinquillo completa en una sola secuencia de 8 corcheas: 68 dispara la clave (Hit), ~ es silencio explicito. Evalua con Ctrl+Enter.

Ejercicios

  1. Programa el cinquillo (X.XX.XX.) pero con maracas (sonido shaker_small) en vez de claves, a 90 bpm.
  2. Calcula y escribe el setcps correcto para una pieza a 96 bpm, y dispara un patron de 4 golpes de cajon (sonido bd, bajo abierto) a ese tempo.
  3. Combina por primera vez 2 instrumentos sonando simultaneamente: clave (sonido clave) tocando solo en las posiciones 1 y 5 de un compas de 8 corcheas, y maracas (sonido shaker_small) tocando las 8 corcheas completas, usando dos capas (dos lineas $:).

Soluciones en solucion_ejercicios/ejercicio_1_solucion.strudel, ejercicio_2_solucion.strudel y ejercicio_3_solucion.strudel.

Ejemplos de codigo

Pulsa ▶ Tocar aqui para abrir el editor de Strudel y reproducir el patron directamente en el navegador (usa los sonidos nativos de Strudel, no hace falta instalar nada). O Copia el codigo y pegalo en strudel.cc.

00_disparo_instrumentos.strudel
// Leccion 00 - Disparo individual de cada familia de instrumento de la biblioteca de sonidos de Strudel
// Requiere: un navegador con sonido. No hace falta MIDI ni programas externos: el audio suena en el navegador.
//
// Cada instrumento suena como un pulso de 4 golpes por compas ("*4") para que se oiga con claridad.
// Uso: al pulsar Ctrl+Enter suena SOLO la linea activa (la que NO empieza por "_"). Por defecto
// suenan las claves. Para oir otro instrumento aislado: pon "_" delante de la linea activa y quitaselo
// al que quieras escuchar, luego Ctrl+Enter. Detener todo: Ctrl+.
// (Nota: la primera vez que suena un instrumento, Strudel descarga su sample; puede tardar un instante.)

setcps(0.42)

$: s("clave*4")           // claves (Hit)                              <-- ACTIVA por defecto
_$: s("cowbell*4")        // campana / cencerro 1 shank
_$: s("conga:28*4")       // conga 2, golpe de bajo (Bass)
_$: s("conga:4*4")        // conga 2, tono abierto (Open Right)
_$: s("conga:0*4")        // conga 2, tono tapado / manoteo (Muted Right)
_$: s("bongo:0*4")        // bongo 1, tono abierto (Open Finger)
_$: s("guiro:1*4")        // guiro (Hit)
_$: s("shaker_small*4")   // maracas 1 (Beat)
_$: s("bd*4")             // cajon, bajo abierto (Bass Open, "kick")
_$: s("sd*4")             // cajon, palmada abierta (Slap Open, "snare")
_$: s("conga:26*4")       // timbal 1, tono abierto (Open)
_$: s("bongo:26*4")       // redoble de timbal (Timbale 2 Roll)

// Reto de oido: ve activando una linea a la vez (deja solo UNA sin "_"), cierra los ojos
// y nombra el instrumento y su articulacion (abierto/tapado/bajo) solo por el timbre.
01_pulso_y_cps.strudel
// Leccion 00 - Relacion entre cps (cycles per second) y bpm (beats per minute)
// Convencion de este proyecto: 1 ciclo = 1 compas de 4/4 -> cps = bpm / 60 / 4 = bpm / 240
//
// Uso: deja UN solo setcps sin comentar (los otros dos con "//") y pulsa Ctrl+Enter para oir
// el mismo patron de claves a esa velocidad. Cambia cual setcps esta activo para comparar.
// Detener todo: Ctrl+.

setcps(80/60/4)       // 80 bpm (son muy lento / bolero) = 0.333...
// setcps(100/60/4)   // 100 bpm (son tradicional tipico, tempo del resto del curso) = 0.4166...
// setcps(130/60/4)   // 130 bpm (songo/mambo rapido) = 0.5416...

$: s("clave ~ ~ clave ~ clave ~ ~")   // clave (misma en los 3 tempos)

// Nota: setcps(0.42) es la forma abreviada de ~100 bpm; usar (bpm/60/4) es mas legible.
02_cinquillo_manisero.strudel
// Leccion 00 - El cinquillo cubano, celula ritmica de "El Manisero" (1930)
// Celula simetrica de 5 golpes en 8 corcheas: X.XX.XX. (posiciones 1,3,4,6,7 de 8)
//   = corchea-semicorchea-corchea-semicorchea-corchea (duraciones 2+1+2+1+2)
// Ancestro historico de la sincopa cubana que mas tarde se refina en la clave (Leccion 01)
//
// Uso: pega en strudel.cc y pulsa Ctrl+Enter. Detener todo: Ctrl+.

setcps(100/60/4)

$: s("clave ~ clave clave ~ clave clave ~")   // cinquillo con claves: X.XX.XX.

// Escucha como el patron NO cae parejo sobre los 4 tiempos: tras el golpe inicial (posicion 1)
// hay dos grupos de 2 corcheas pegadas (posiciones 3-4 y 6-7) que generan el "tumbao"
// caracteristico que luego escucharas en la conga (Leccion 02). La celula es simetrica.

Soluciones de los ejercicios

Pulsa ▶ Tocar aqui para abrir el editor de Strudel y reproducir el patron directamente en el navegador (usa los sonidos nativos de Strudel, no hace falta instalar nada). O Copia el codigo y pegalo en strudel.cc.

ejercicio_1_solucion.strudel
// Solucion ejercicio 1 (Leccion 00)
// Enunciado: programar el cinquillo (X.XX.XX.) pero con maracas en vez de claves, a 90 bpm.

setcps(90/60/4)

$: s("shaker_small ~ shaker_small shaker_small ~ shaker_small shaker_small ~")   // cinquillo con maracas 1 (sonido `shaker_small`), 90 bpm
ejercicio_2_solucion.strudel
// Solucion ejercicio 2 (Leccion 00)
// Enunciado: calcular el setcps correcto para 96 bpm y disparar 4 golpes de cajon a ese tempo.
// Formula: cps = bpm / 60 / 4 = 96 / 60 / 4 = 0.4

setcps(96/60/4)   // = 0.4

$: s("bd bd bd bd")   // 4 golpes de cajon, bajo abierto (sonido `bd`), a 96 bpm
ejercicio_3_solucion.strudel
// Solucion ejercicio 3 (Leccion 00)
// Enunciado: combinar clave (posiciones 1 y 5 de 8) con maracas tocando las 8 corcheas, en 2 capas.
//
// Uso: Ctrl+Enter reproduce las 2 capas a la vez. Mutear una: pon "_" delante ("_$:"). Parar: Ctrl+.

setcps(100/60/4)

$: s("clave ~ ~ ~ clave ~ ~ ~")   // clave en posiciones 1 y 5 de 8
$: s("shaker_small*8")                // maracas en las 8 corcheas