La lección más importante que debes aprender de Sonic Pi es que realmente no hay errores. La mejor forma de aprender es sencillamente probar, probar y probar. Prueba un montón de cosas, deja de preocuparte de si tu código suena bien o no y empieza a experimentar con tantos sintetizadores, notas, FX y opciones como puedas. Quita las cosas que no te gusten y deja las cosas que te gusten, sencilamente. Cuantos más ‘errores’ te permitas hacer, más rápido aprenderás y descubrirás tu propio sonido al hacer código.
¿Ya has dominado lo esencial de Sonic Pi haciendo sonidos con sample
y play
? ¿Y ahora, qué? ¿Sabías que Sonic Pi ofrece hasta 27 efectos FX de estudio para cambiar el sonido de tu código? Los efectos son como filtros imagen chulos para los programas de dibujo, sólo que en vez de difuminar o hacer algo blanco y negro, puedes añadir cosas como reverberación, distorsión y eco a tu sonido. Piensa en lo que haces cuando conectas el cable de tu guitarra con un pedal de efectos que te guste, que a su vez va a un amplificador. Por suerte, usar efectos en Sonic Pi es muy fácil, ¡y no necesitas cables! Sólo necesitas escoger la sección de tu código a la que le quieras añadir el efecto, y envolverla con el código del mismo. Vamos a ver un ejemplo. Imagina que tienes el siguiente código:
sample :loop_garzul
16.times do
sample :bd_haus
sleep 0.5
end
Si quieres añadir el efecto al sample :loop_garzul
, sólo necesitas meter el bucle en un bloque with_fx
, así:
with_fx :flanger do
sample :loop_garzul
end
16.times do
sample :bd_haus
sleep 0.5
end
Vale, y ahora si quieres añadir el efecto al pedal de la batería, vas y lo envuelves con with_fx
, exactamente igual:
with_fx :flanger do
sample :loop_garzul
end
with_fx :echo do
16.times do
sample :bd_haus
sleep 0.5
end
end
Recuerda, puedes envolver cualquier código en with_fx
y cualquier sonido que haya creado el código pasará por ese efecto.
Si estás buscando tu verdadero sonido al hacer código, pronto querrás saber cómo modificar y controlar sintetizadores y efectos. Por ejemplo, puede que quieras cambiar la duración de una nota, añadir más reverberación, o cambiar el tiempo entre ecos. Por suerte, Sonic Pi te da un nivel de control increíble para hacer esto, con unas cosas especiales llamadas parámetros u opciones (abreviado como opts). Copia este código en tu área de trabajo y dale a Ejecutar:
sample :guit_em9
¡Hey, un sonido de guitarra! Vamos a jugar un poco con ese sonido. ¿Qué te parece si cambiamos su ritmo?
sample :guit_em9, rate: 0.5
Ey, ¿qué es ese rate: 0.5
que acabo de añadir al final? Eso se llama opción (opt). Todos los sintetizadores y efectos de Sonic Pi soportan los opt’s, y hay montones con los que puedes trastear. También están disponibles para efectos. Prueba esto:
with_fx :flanger, feedback: 0.6 do
sample :guit_em9
end
Ahora, ¡prueba a subir la retroalimentación (feedback) a 1, para escuchar sonidos muuy locos! Lee la documentación para más detalles sobre los muchos opts que tienes disponibles.
La mejor forma de experimentar rápido y explorar Sonic Pi es hacer código en vivo (live coding). Esto te permite empezar con algo de código e ir cambiándolo continuamente, retocándolo mientras suena. Por ejemplo, si no sabes qué le hace el parámetro cutoff a un sample, empieza a trastear con ello. ¡Vamos a probar! Copia este código en una de tus áreas de trabajo de Sonic Pi:
live_loop :experiment do
sample :loop_amen, cutoff: 70
sleep 1.75
end
Ahora, dale a Ejecutar y escucharás un break de batería ligeramente amortiguado. Vale, ahora cambia el valor de cutoff:
a 80
y dale a Ejecutar de nuevo. ¿Escuchas la diferencia? Prueba con 90
, 100
, 110
…
Una vez le has cogido el tranquillo a usar live_loop
s, verás no puedes dejar de usarlo. Cada vez que toco en un concierto de live coding, confío en mi live_loop
igual que un/a baterista confía en sus baquetas. Para más información sobre live coding, mira la Sección 9 de el tutorial incluido en el programa.
Por último, algo que me encanta es hacer trampa dejando a Sonic Pi que componga cosas por mí. Una forma muy chula de hacer esto es usar randomización. Puede sonar complicado, pero en realidad no lo es. Vamos a echarle un vistazo. Copia esto en un área de trabajo vacía:
live_loop :rand_surfer do
use_synth :dsaw
notes = (scale :e2, :minor_pentatonic, num_octaves: 2)
16.times do
play notes.choose, release: 0.1, cutoff: rrand(70, 120)
sleep 0.125
end
end
Ahora, cuando toques esto, escucharás un flujo constante de notas aleatorias de la escala :e2 :minor_pentatonic
, tocada con el sintetizador :dsaw
. “¡Espera, espera! Eso no es una melodía”, te oigo decir entre gritos. Pues bien, aquí viene la primera parte del truco de magia. Cada vez que damos una vuelta en el live_loop
, le podemos decir a Sonic Pi que resetee el flujo aleatorio a un punto que conozcamos. Vamos a probarlo - añade la línea use_random_seed_1
al live_loop
:
live_loop :rand_surfer do
use_random_seed 1
use_synth :dsaw
notes = (scale :e2, :minor_pentatonic, num_octaves: 2)
16.times do
play notes.choose, release: 0.1, cutoff: rrand(70, 120)
sleep 0.125
end
end
Ahora, cada vez que el live_loop
da una vuelta, el flujo de notas aleatorias se resetea. Esto significa que elige las mismas 16 notas cada vez. ¡Abracadabra! Una melodía en el momento. Aquí viene la parte realmente interesante. Cambia el valor de la semilla de 1
a cualquier otro número. Por ejemplo, 4923
. ¡Guau! ¡Otra melodía! O sea, con cambiar un sólo número (la semilla), ¡puedes explorar tantas combinaciones melódicas que te puedas imaginar! He aquí la magia del código.