Práctica 3: Contador y Secuenciador
DONE
1h 30 mins
Un secuenciador nos va a permitir repetir series de acciones de manera estructurada. Con esta estructura, por ejemplo, vamos a poder crear ritmos o melodías que se repiten.
¿Qué elementos de Pure data necesitaremos conocer?
Variables int y float
En Pure data una variable numérica va a ser una cajita en la que podamos almacenar un valor numérico. Podremos enviar ese valor por su outlet y también podremos sustituir ese valor por otro, esto nos va a ayudar a crear una estructura que nos permita contar. Esta cajita puede ser de tipo integer, objeto"int" o "i", o de tipo float, objeto "float" o "f". Las variables de tipo int solo aceptan números enteros y si reciben un numero decimal ignoraran su parte decimal y solo almacenaran la entera. Sin embargo, las variables de tipo float aceptan números enteros y decimales. Ya habíamos visto los tipos de datos y de variables en las lecciones "Programación en general: el mundo de los algoritmos" y en "Elementos que debemos conocer".
Figura 1. patch variables-demo.pd
Contador
Una vez que conocemos la variable, vamos a utilizarla para realizar un contador.
Anteriormente, introdujimos este concepto si tienes alguna duda vuelve a la página "Estructuras que debemos conocer".
Figura 2. Epi contando hasta 6 y volviendo a empezar.
Un contador nos va a permitir contar el número de veces que sucede un evento y en función de ese número tomaremos decisiones, de momento vamos a dejar lo de tomar decisiones más adelante y ahora aprenderemos a contar con Pure data. En este caso, utilizaremos una variable de tipo int, al contenido de esa variable le sumaremos 1 cada vez que llegue un evento.
Figura 3. patch contador-demo.pd
Como podéis apreciar en el patch, el outlet de la cajita de la variable i se envía a la entrada de otra cajita cuya función es sumar una unidad al valor que entre y devolver el resultado por su salida.
El resultado de esta suma se envía al inlet derecho de la variable i que lo almacenara. Los valores que entran por el inlet derecho de la variable i sustituyen el valor que almacena la variable sin sacarlo de nuevo por el outlet de la cajita con la variable i.
El cofre rojo seria nuestra variable "i" y el pajarito el objeto "+ 1" que cada vez añade una moneda más al cofre.
Figura 4. Pajarito contando.
En nuestro patch de Pure Data, para obtener el valor almacenado en la variable i a traves de su outlet utilizaremos un bang en su inlet izquierdo. Recordar lo que vimos en la lección "Elementos básicos" sobre la entra caliente de un objeto y las entradas frias. El mensaje con el valor 0 en el inlet derecho nos permitirá inicializar el contador a 0.
Tomaremos como valor de cuenta el resultante de la suma, luego el outlet del objeto "+1".
módulo, %
El objeto % es un operador matemático conocido como módulo, que devuelve por su outlet el resto de una division. El argumento de objeto (en la figura 5, el argumento del objeto "%" seria 8), indica el divisor de la operación, que también se puede configurar a traves del inlet derecho. El dividendo es el valor introducido por el inlet izquierdo y el resto de esta division es el outlet del objeto %.
Figura 5. patch variable-resto-demo.pd
Radio
El Radio es una interfaz gráfica que nos permite enviar valores correspondientes con una secuencia de celdas, esos valores se envían activando las diferentes celdas desde el ratón o a traves del inlet.
Figura 6. patch radio.pd y ventana de propiedades del Radio Horizontal
Para seleccionar cada celda, clicaremos sobre ella o enviaremos al inlet del radio un numero correspondiente a la posición de la celda. La numeración de las celdas comienza en 0, luego la primera celda corresponderá con el numero 0. Esta interfaz podrá ser vertical u horizontal y configuraremos el número de celdas, haciendo click derecho sobre el radio>Propiedades>Número de Celdas. En propiedades también podremos configurar los colores, etiqueta o tamaño del radio.
El radio por defecto tiene 8 celdas que tendremos que ajustar a nuestras necesidades. Este objeto nos va a ser extremadamente útil para visualizar secuencias o activar distintos eventos.
Contador cíclico
Figura 8. Epi contando hasta 6 y volviendo a empezar.
Ahora vamos a crear un contador que llegue a un número determinado y vuelva a empezar, para ello vamos a utilizar el objeto "%", que nos proporciona el resto de una división. Dividiremos por el numero al que queremos que llegue la cuenta teniendo en cuenta que el primero de esos números sera 0. Por ejemplo, si queremos que cuente hasta 8, nuestro divisor será 8 y el argumento de % también sera 8. El resto de esta división tendrá valores entre 0-7. De esta forma obtendremos una cuenta cíclica de 8 pasos.
Figura 9. patch contador-ciclico-demo.pd
Select. sel
Este objeto nos va a permitir clasificar valores, comparando el valor que recibe en su inlet izquierdo con el o los argumentos que contiene. Si en esa comparación hay una coincidencia emitirá un bang por el outlet correspondiente a ese argumento, el primer argumento corresponderá con el primer outlet empezando a contar por la izquierda, el segundo argumento al segundo outlet, ... Cuando no haya una coincidencia emitirá el valor recibido y no coincidente por el outlet derecho, el ultimo outlet si empezamos a contar por la izquierda.
Figura 10. patch select-demo.pd. Objeto select con 1 argumento.
Digamos que, si el objeto select tiene 5 argumentos, va a tener 6 puertas de salida. Para salir por cada una de las puertas hay que cumplir un requisito. En el caso de la figura 11, para salir por la primera puerta (primera-izquierda) el valor recibido tiene que ser un dos, para salir por la segunda puerta un 4, por la tercera un 6, por la cuarta puerta el valor deberá de ser igual a 8 y por la quinta igual a 10. Lo que sale por todas las puertas excepto por la última es un bang.
Figura 11. patch select-demo.pd. Objeto select con 5 argumentos.
¿Y quién sale por la ultima puerta? Por la ultima puerta salen todos los valores que no puedan salir por las puertas anteriores y es la unica que enviara un valor número, el resto de las puertas envían un mensaje de bang.
Ejercicio 1: Utilizando el contador que acabamos de ver y el objeto selector crea una melodía de 8 tiempos. Pista: Utiliza el objeto select para enviar las diferentes notas en el momento deseado a un "osc~". Puedes hacer que la melodía vaya más rápido o más despacio?
¿Qué tenemos que entregar?
El ejercicio 1. Sube a la carpeta del Moodle de la Practica 1 una captura de pantalla del patch y el patch que has creado. El patch deberá llamarse: Practica3_nombre_apellidopractica3_vuestronombre_vuestroapellido.pd y la imagen Practica3-imagen_nombre_apellido.practica3-imagen_vuestronombre_vuestroapellido.
Figuras:
Figura 1. patch variables-demo.pd
Figura 2. Epi contando hasta 6 y volviendo a empezar. https://giphy.com/gifs/APMTV3-apm-apmtv3-Y3LuJcBQFsqQTglmJF
Figura 4. Pajarito contando. https://giphy.com/gifs/bird-gold-saving-money-YNE2DIwH8K1aUirbwz
Figura 5. patch variable-resto-demo.pd
Figura 6. patch radio.pd y ventana de propiedades del Radio Horizontal
Figura 7. patch radio-demo.pd
Figura 8. Epi contando hasta 6 y volviendo a empezar. https://giphy.com/gifs/APMTV3-apm-apmtv3-Y3LuJcBQFsqQTglmJF
Figura 9. patch contador-ciclico-demo.pd
Figura 10. patch select-demo.pd. Objeto select con 1 argumento.
Figura 11. patch select-demo.pd. Objeto select con 5 argumentos.