Algo útil para hacer con tú código es crear nombres para las cosas. Sonic Pi
hace esto muy fácil, escribes el nombre que deseas utilizar, un símbolo de
(=
), después lo que quieres recordar:
sample_name = :loop_amen
Aquí hemos ‘recordado’ el símbolo :loop_amen
en la variable sample_name
.
Ahora podemos usar sample_name
en cualquier lugar donde pudiésemos usar
:loop_amen
. Por ejemplo:
sample_name = :loop_amen
sample sample_name
Hay tres razones principales para utilizar variables en Sonic Pi: comunicar significado, administrar repeticón y capturar los resultados de las cosas.
Cuando escribes código, es fácil pensar que sólo le dices a la computadora cómo hacer algo - mientras ella entienda, todo está bien. Sin embargo, es importante recordar que no sólo la computadora leerá el código. Otra gente podría leerlo e intentar comprender qué es lo que sucede. También sucede que quieras entender tu propio código en el futuro. Aunque pueda ser obvio para tí, ahora, ¡podría no serlo para otros o para tí en el futuro! When you write code it’s easy to just think you’re telling the computer how to do stuff - as long as the computer understands it’s OK. However, it’s important to remember that it’s not just the computer that reads the code. Other people may read it too and try to understand what’s going on. Also, you’re likely to read your own code in the future and try to understand what’s going on. Although it might seem obvious to you now - it might not be so obvious to others or even your future self!
One way to help others understand what your code is doing is to write comments (as we saw in a previous section). Another is to use meaningful variable names. Look at this code:
sleep 1.7533
¿Por qué utiliza el número 1.7533
? ¿de dónde proviene? ¿qué significa?
Miremos el código siguiente:
loop_amen_duration = 1.7533
sleep loop_amen_duration
Ahora está mucho más claro lo que significa 1.7533
: es la duración del
sample :loop_amen
! claro que puedes pensar que es mucho más simple escribir:
sleep sample_duration(:loop_amen)
Lo cual es una muy buena manera de comunicar la intención del código.
a menudo ves muchas repeticiones en tu código y cuando quieres cambiar algo, tienes que cambiarlo enmuchos lugares. Mira este código:
sample :loop_amen
sleep sample_duration(:loop_amen)
sample :loop_amen, rate: 0.5
sleep sample_duration(:loop_amen, rate: 0.5)
sample :loop_amen
sleep sample_duration(:loop_amen)
Estamos haciendo muchas cosas con :loop_amen
! ¿qué pasa si quisiésemos
escuchar otro sampleo como :loop_garzul
? tendríamos que buscar y reemplazar
todos los :loop_amen
con :loop_garzul
. Eso estaría bien si tienes mucho
tiempo - pero ¿qué si está en vivo? algunas veces no tendrás el lujo del tiempo -
especialmente si quieres que la gente se mantenga bailando.
¿qué tal si hubieses escrito tú código, así?:
sample_name = :loop_amen
sample sample_name
sleep sample_duration(sample_name)
sample sample_name, rate: 0.5
sleep sample_duration(sample_name, rate: 0.5)
sample sample_name
sleep sample_duration(sample_name)
Eso hace exactamente lo mismo que lo anterior (pruébalo). también nos da
la habilidad de cambiar una línea sample_name = :loop_amen
a
sample_name = :loop_garzul
y podemos hacerlo en muchos lugares gracias a
las variables.
Un buen motivo para utilizar variables es capturar los resultados de las cosas. Por ejemplo, quizás desees hacer algo con la duración de un sampleo:
sd = sample_duration(:loop_amen)
Ahora podemos usar sd
en cualquier lugar donde necesitemos la duración del
sampleo :loop_amen
.
Más importantemente, una variable nos permite capturar el resultado de una
llamada a play
o sample
:
s = play 50, release: 8
Ahora hemos atrapado y recordado s
como una variable, lo que nos permite controlar
el sintetizador mientras corre:
s = play 50, release: 8
sleep 2
control s, note: 62
Veremos en más detalle cómo controlar los sintetizadores más tarde.