sábado, 27 de febrero de 2016

Ahora sí de verdad vamos con la programación

 
Bueno ahora solo nos hemos estado divirtiendo con lo básico, ya saben, crear sonidos con play, sample y creando simples ritmos melódicos usando sleep para que cada sonido aparezca en su debido momento, pero esto no es todo lo que el mundo de la programación tiene para ofrecernos.  Hey! si al oir eso de algún modo te emociona, entonces esas son malas noticias ¡pues es genial! y ¡ahora se va poner mucho mejor!


Llego la hora de conocer las estructuras básicas de programación como lo son los ciclos, las condicionales, las funciones y los hilos. Y aunque no lo parezca todo esto que acabo de mencionar nos ayudaran a desarrollas de una manera más eficiente nuestras composiciones

Pero empecemos por explicar lo básico

Bloques



Una clase de estructura que vamos a observar mucho en Sonic Pi son los bloques. Los bloques llegan a ser bastante útiles a la hora de la codificación. Por ejemplo con los parámetros synth y sample podemos solo podremos hacer cambios que afecten a una linea. Pero llenar lineas y lineas de código con el parámetro play y sleep no suena una idea tan atractiva, créeme va llegar un momento en que ni tu mismo sabes que escribiste allí, pero ese es otro asunto, retomemos, imagina que quieres escuchar varias veces  este tono:

El sonido resultante sería una especie de bib glup Bu


Pues, si me gustaría meterlo como en una especie de ciclo, no se, bueno para decirle a Sonic Pi donde bloque empieza y donde termina se escribe "do" para empezar y "end" para terminar, algo así:

No se preocupen si les da error por escribir algo así, solo esta mal escrito


Sin embargo una cadena así no va funcionar por que aun no le hemos dicho, al Sonic pi, que vamos hacer con ese bloque, para que funcione debemos escribir otras ordenes antes del "do" y de eso es lo que vamos hablar hoy. Empecemos con las Iteraciones

Iteraciones y ciclos



Volvamos al código de arriba, no el que esta mal escrito, el de más arriba, vale ok, supongamos que el sonido que nos gusta el sonido que sale o crees que se apreciaría mejor si este sonido se repitiese n veces, digamos unas tres veces, bueno con lo que acabamos de aprender solo lo agarramos y lo copiamos 2 veces y ya...

Ehm no
Ya esta, allí están tus 3 veces, verán ahora parece inofensivo pero créeme, es como una bola de nieve llegara un momento y sin que te des cuenta ya es un alu, por que veamos de ese código del que solo eran
¿cuantas a ver? 1, 2, 6 , 6 lineas de código, si lo repites 2 veces ya no serán 6 serán 12 y si lo vuelves hacer serán como 18 y eso que no estoy contando los espacios en blanco. Es que como decirlo ¡ahora tenemos un montón de código donde prácticamente se esta haciendo lo mismo! que pasaría si quisieras cambiar el tono de la primera linea, pues tendrías que cambiarlo otras 2 veces, eso sin pensar que en lugar de repetirlo unas 3 veces lo hubieras hecho unas 1000, ya no se ve tan inofensivo verdad, descuiden para eso existe la Iteración.

Ahora vamos a darle un poco de sentido a esto o mejor dicho finalmente vamos a darle uso a los bloques, solo tendríamos que decirle algo antes del do como por ejemplo "haz eso 3 veces"(do this three times) bueno pues lo escribimos como debería oírse en ingles 3.times.do y justo al final escribimos end y ahora tendríamos algo así:

Ahora se ve más limpio y no solo eso, también es más funcional, ahora podremos cambiar el tono de una parte y solo lo tendríamos que hacer una vez no solo eso sino que también podemos repetirlo cuantas veces queramos y no habrá necesidad de escribir más código, solo cambiamos el valor del número de iteraciones y ya esta... oh no
Vale, sacaste un ritmo pegajoso ¿cuantas tengo que repetir ese mismo ritmo para que abarque toda la composición?

Forever Forever, Forever
 Quizás una mejor pregunta sería ¿Sonic pi puede repetir un ritmo por siempre? sí, es posible solo que en la orden en lugar de mandarle un numero le decimos "haz esto cíclico"(loop do) algo así

 Todo muy lindo solo hay un problema, los ciclos actúan como agujeros negros, una vez que entras a uno no sales de el nunca, eso quiere decir que si hay algún otro código abajo del ciclo este no sonara nunca a menos que no hagamos algo.
Forever, Forever, Forever

Pero ya pensaremos como arreglar eso en otra ocasión por ahora lo dejaremos aquí.


No hay comentarios:

Publicar un comentario