Notas sobre Sampleos

Digamos que quisiera componer una pieza, y encima de ella improvisar en Tidal. Hay una serie de problemas importantes que hay que saber manejar, independientemente de la parte creativa. Son preguntas que una persona seguramente se hará, al querer controlar mejor el proceso y obtener buenos resultados.

Tomemos por ejemplo, mi live Coding Miserable Mix, en el que incorporé varias muestras de audio, de diversas longitudes, que se corresponden con las secciones de guitarras, el pad, voces o percusiones.

Es una canción que compuse a 110 pulsos por minuto. Así que, lo primero que hacer y muy importante es declarar el tempo con el que los samples funcionan correctamente:

bps (110/60) o cps(110/60).

Al componer la canción, escogí bps (110/60)

y un sampleo de guitarra lo ajusté así:

d4 $ slow 8 $ sound "guitar:2"

Porque la muestra de audio es tan larga que si sólo se escribe

d4 $ sound "guitar:2",

entonces por cada vuelta del ciclo de tiempo predeterminado, se instancia un sampleo nuevo, que se encima con el anterior, que todavía no terminaba de leerse en el momento para el que ya comenzó el siguiente. Así que se van traslapando los sonidos.

slow 8 suena bien con ese sonido, pero no significa que el sampleo sea ocho veces más largo que cada ciclo de tiempo en bps. De hecho es veinticuatro veces más largo. Sería más correcto escribir:

d4 $ slow 24 $ sound "guitar:2"

Pero se escucha mejor con slow 8, pues usando slow 24 se percibe muy abruptamente el momento en que termina el audio.

Otra pregunta:

Si yo quiero hacer un live coding sobre una canción de longitud de, digamos, 360 beats, y tengo un archivo de audio de esa extensión, que quiero incorporar a mi live coding, ¿cómo me aseguro de que el archivo suene de principio a fin una y sólo una vez?

¿Por qué no usar el siguiente código:

d8 $ slow 720 $ sound “__” ?

Es una manera. Pero no se tiene control sobre el momento en que empieza el sampleo, y lo que se está haciendo es evitar que el sonido se dispare dos veces, a partir de hacer el ciclo de tiempo del patrón lo suficientemente extenso.

Una mejor opción es evaluar

do {
now <- getNow; d1 (rotR (now+0.1) $ playFor 0 1 $ s "dif") }

O alternativamente, definir una función, para utilizarla varias veces, usando una sintaxis más breve:

let playOnce dn p = getNow >>= \x -> dn (rotR (x+0.063) $ playFor 0 1 $ p)

playOnce d1 (s "dif")

Otra cuestión que frecuentemente llega a la hora de trabajar con sampleos (de mayor longitud que un ciclo) es:

¿Cómo le hago para recortar una muestra de audio y que se reproduzca sólo una parte?

Suelo buscar recortar un sampleo para que se reproduzca desde el inicio, hasta cierta porción del audio, así que el parámetro # end sirve para este fin.

Por ejemplo:

d4 $ slow 24 $ sound "guitar:2" # end “0.5”

está recortado por la mitad. O

d4 $ slow 24 $ sound "guitar:2" # end “0.25”

reproduce únicamente una cuarta parte del sonido, comenzando desde el principio de éste.

Pero se puede preferir usar el parámetro # begin, para tocar una parte del sampleo, comenzando a partir de una porción especificada de éste. Por ejemplo,

d4 $ slow 24 $ sound "guitar:2" # begin “0.25”

toca tres cuartas partes del audio, eliminando la primera cuarta parte.

Aunque al hacer un live coding sin mucha planeación detrás, puede que no se tenga mucho control sobre el momento exacto en que las muestras de audio terminan, o más sencillamente, si se gusta cortar un sonido instantáneamente y que sea sustituido completamente por otro, el parámetro indicado para esta tarea es #cut.

Para ilustrar el funcionamiento de #cut, se escucha que es muy distinto el resultado de, sin # cut, evaluar:

d1 $ slow 8 $ sound "guitar:2"

d1 $ sound "{bd1 ~ ~ bd1, ~ cp ~*2}" ,

que, con # cut evaluar :

d1 $ slow 8 $ sound "guitar:2" # cut "1"

d1 $ sound "{bd1 ~ ~ bd1, ~ cp ~*2}" # cut "1".

En el primer caso, como el sampleo guitar:2 es un audio muy largo, a pesar de la evaluación de un nuevo patrón que lo sustituye, guitar:2 dejará de sonar una vez recorrido todo el sampleo.

Y en el segundo caso, inmediatamente evaluado el patrón {bd1 ~ ~ bd1, ~ cp ~*2}, el sonido de la guitarra se calla y es totalmente sustituido por el más reciente.

#cut es también una manera muy útil de reducir acumulación de ruidos indeseados en un live coding, porque evita que los audios se traslapen, y así, provee transiciones más limpias entre los sampleos. Pero hay que notar que #cut cambia la manera en que suenan los patrones, y es relativo si usar este parámetro es mejor o peor.

El tempo en Tidal se puede controlar con dos opciones: bps y cps.

Miserable Mix, al ser compuesta, utilizó bps, y si se quiere cambiar a cps, se tienen que cambiar varias cosas del código.

bps y cps definen casi el mismo pulso. Es decir, el tempo de 110 beats por minuto coincide con escribir

bps(110/60) o cps(110/60).

La diferencia radica en que un ciclo de tiempo en tidal definido en bps equivale a la mitad de un ciclo de tiempo en tidal definido en cps.

Por ejemplo, para convertir en cps lo siguiente:

bps(110/60)

d4 $ slow 24 $ sound "guitar:2" ,

habría que cambiarse el bps y el slow:

cps(110/60)

d4 $ slow 48 $ sound "guitar:2"

Pero como observación, al usar sampleos largos parece ser más conveniente utilizar cps. Pues, además de que el tiempo en cps coincide con los bpm definidos por un metrónomo, se tiene la posibilidad de reiniciar los sampleos, controlando cuándo empiezan, evaluando las cosas en el siguiente orden:

d4 $ slow 48 $ sound "guitar:2"
cps(-1)
cps(110/60)

Una pregunta importante si se está trabajando con una canción:

¿Cuántos ciclos dura toda la canción? O más precisamente, ¿Cuántos ciclos en bps o cps le corresponden a una canción de x minutos que va a y beats por minuto?

Por ejemplo,

¿Cuántos ciclos en cps le corresponden a una canción de 4 minutos que va a 120bpm?

¿Cuántos ciclos en cps le corresponden a una canción de 4 minutos que va a 90bpm?

¿Cuántos ciclos en cps le corresponden a una canción de 4 minutos que va a 180bpm?

Si una canción va a 60 beats por minuto, entonces una canción de 4 minutos será recorrida en
60 x 4 = 240 beats.

Si una canción de 4 minutos va a 180bpm, entonces la canción completa será recorrida en
\begin{align}\frac{(180)(60)(4)}{60},\end{align} es decir en 720 beats.

Si una canción de 4 minutos va a 90bpm, entonces la canción completa será recorrida en
\begin{align}\frac{(90)(4)(60)}{60}, \end{align}es decir en 360 beats.

Y así sucesivamente.

Pues bien, sólo resta hacer una o más piezas en Tidal, aplicando estos conceptos.