Entorno y Objetos básicos
ENTORNO
Cuando trabajemos con Pd veremos la Ventana principal de Pd y posiblemente uno o mas "patches", "canvases" o "lienzos" (Pure Data, 2022). Los "patches" serán los espacios en los que vamos a construir nuestros programas.
Ventana principal
La ventana principal se abre cuando ejecutamos Pd y tiene esta apariencia:
(imagen de la ventana principal con texto explicando las partes)
En la parte superior encontramos un menú horizontal que aparecerá también en los patched de Pd. Este es el menu principal que utilizaremos para configurar Pd, realizar acciones, / que nos permite interactuar don Pd.
Si queremos aumentar el tamaño del texto podemos hacerlo desde el Menu horizontal en Editar>Fuente
(Imagen de editar fuente)
En la parte inferior tenemos un espacio para la impresión de contenido desde patches de Pd y/o mensajes del propio Pd (Pure Data, 2022). Para imprimir desde un patch utilizaremos principalmente el objeto "print". Este objeto es util para visualizar el estado de los datos en diferentes partes de la estructura/programa que creemos, nos va a ayudar a encontrar errores y entender mejor como funciona nuestro programa.
Los mensajes que Pd envíe aparecen en el mismo espacio y nos dan información acerca de errores y procesos que realiza el programa. El botón de "Log" nos permite filtrar la cantidad de mensajes enviados por Pd que queremos ver en ese espacio. Siendo "0 fatal" la minima cantidad de información mostrada y "4 todo" la maxima. Inicial mente vamos a tener el Log en "2 normal" y ampliaremos la información mostrada en función de nuestras necesidades a la hora se resolver posibles problemas.
La casilla de "DSP" nos permite encender y apagar el sistema de audio del programa. Si el audio esta apagado las señales de audio de nuestros patches no se procesaran, luego siempre que trabajemos con audio debemos de tener el DSP encendido. El DSP también lo podemos encender y apagar desde el Menu superior en Medios>Encender DSP o Medios>Apagar DSP;DSP; o utilizando los comandos "Ctrl+/" para encenderlo y "Ctrl + ." para apagarlo.
Patches
Los "patches" son las ventanas en las que construiremos nuestros programas y tienen este aspecto:
La ventana de patch tiene en la parte superior el mismo menu principal que la ventana principal de Pd. Encima del menu veremos el nombre del patch y en que directorio esta guardado. Cuando estemos en el modo edición entre el nombre del patch y el directorio veremos "[edit]". El modo edición de un patch es el estado de construcción en el que podemos añadir objetos y modificar conexiones o mensajes. Para activar y desactivar el modo edición utilizaremos el comando "Ctrl+E" o en el menu horizontal Editar>Modo edición. Cuando el modo edición este desactivado el programa se estará ejecutando, estará en el modo de funcionamiento y no podremos modificarlo, cuando el modo edición este activado el programa no se estará ejecutando y podremos modificarlo.
Para crear un patch iremos al menu horizontal Archivo>Nuevo o utilizando el Shortcut/abreviatura "Ctrl+N" y para guardar un patch "Ctrl+S" o en Archivo>Guardar. Es conveniente guardar el patch en el que este estemos trabajando para no perder nuestros progresos en caso de que haya un error grave.
Dentro de un Patch podremos crear sub-patches que son ventanitas dentro de nuestra ventana principal del patch, o procesos dentro de nuestro programa principal/algoritmo principal. Los sub-patches nos permitirán agrupar, estructurar y organizar las diferentes partes de un programa con muchos elementos, de manera que la estructura principal del nuestro programa sea visible y comprensible. Cuando el programa se este ejecutando, aunque la ventana de un sub-patch este cerrada, está siempre en funcionamiento (Pure Data, 2022).
Poner un ejemplo de imagen de un patch enorme y el mismo patch agrupado.
Por ejemplo estamos siguiendo una receta de un libro de repostería para hacer una tarta. La receta de la tarta seria nuestro algoritmo principal=ventana de patch principal. Esta receta nos pide montar las claras de 5 huevos pero no nos explica como hacerlo, nos indica que en la pagina 6 del libro de cocina están las instrucciones de como montar claras. Tambien nos pide hacer hojaldre pero tampoco nos explica como hacerlo en la receta de la tarta, nos indica que las instrucciones parar hacer hojaldre se encuentran en la pagina 8. Nuestro algoritmo principal es la receta de la tarta y las instrucciones de la pagina 6 y la pagina 8 son sub algoritmos necesarios para el algoritmo principal que es nuestra receta. Si toda la información de como hacer esta tarta incluyendo como montar las claras y hacer hojaldre se encontrara toda junta en la misma pagina, nos seria mas complicado comprender y visualizar rápidamente el proceso general que debemos seguir para hacer esta tarta.
ELEMENTOS
En Pure Data trabajaremos con 4 tipos/clase de elementos o cajitas: objetos, mensajes, GUI, y comentarios. Estas cajitas pueden tener 0 o más entradas y/o salidas (Pure Data, 2022). Estas cajitas van a ser contenedores de procesos o datos y las conectaremos unas a otras para crear la estructura que nos permita obtener el resultado deseado.
Un clic derecho sobre cualquier elemento nos abre un menu con tres opciones: Propiedades, Abrir y Ayuda.
Ayuda nos va a abrir un patch sobre ese elemento con una explicación sobre su funcionamiento y ejemplos
Objeto
Los objetos se crean escribiendo texto en una cajita de objetos, y es ese texto el que va a crear un objeto determinado con una función especifica. Este texto se divide en atoms separados por un espacio. El primer atom indica que tipo de objeto sera creado, los atoms siguientes, llamados argumentos de creación indican a Pd como inicializar el objeto, por ejemplo que valor o en que estado comienza el objeto (Pure Data, 2022).
La cajita de objeto se representa por un rectángulo, en la parte superior del rectángulo se encuentran las entradas o inputs, marcadas con una pequeña línea gruesa. En la parte inferior se encuentran las salidas o outputs marcadas cada una de ellas también con una pequeña línea gruesa. Dependiendo del objeto el numero de entradas y salidas variara, hay objetos que solo tienen entrada como el "print".
Por ejemplo:
el "+" especifica el tipo de objeto que es, indica que es un objeto de suma y su función sera esa sumar. El "13" indica que cantidad se va a sumar al numero que llegue por la entrada izquierda del objeto (Pure Data, 2022):
Entrada/input izquierda + 13 = output/salida
La cantidad a sumar sera la inicial del objeto ,13, a no ser que introduzcamos otro numero por la entrada derecha del objeto. El numero introducido remplazara al 13 y quedara almacenado en el objeto suma aunque visualmente en el objeto sigamos viendo "+ 13" y contenido es "+ Ultima Entrada/input derecha"
Entrada/input izquierda + Ultima Entrada/input derecha = output/salida
(Gif de la suma)
Los atoms son números o símbolos. Todo aquello que no sea considerado un numero valido sera interpretado por el programa como símbolo. Los números validos pueden contener decimales (12, 15.6, -783) o estar escritos con notación exponencial (7.8e3 = quiere decir 78 multiplicado por 10 tres veces = 7800) (Pure Data, 2022). Los exponenciales negativos dividen entre 10 (69.3e-4= 0,00693) (Pure Data, 2022).
Entre números no validos que son leidosleídos como simbolossímbolos podemos encontrar expersionesexpresiones como "+5" "0..6" "casa" y el programa reconoce como simbolossímbolos diferentes "hola" , "Hola" y "HOLA" luego diferencia entre mayúsculas y minúsculas (Pure Data, 2022).
Para colocar un objeto en nuestro patch: menu horizontal>Poner>Objeto o utilizando en comando "Ctrl+1"
Para mas información de cualquier elemento de Pure Data accederemos a el patch de ayuda que encontraremos clicando sobre el elemento con el botón derecho y seleccionando Ayuda. Este patch en ingles explica la funcionalidad y posibilidades del elemento.
Para colocar un objeto en nuestro patch: menu horizontal>Poner>Objeto o utilizando en comando "Ctrl+1"
(gif del patch de ayuda)
Cuando trabajemos con señales de audio utilizaremos objetos específicos de audio. Estos objetos siempre contienen el simbolosímbolo de virgulilla : "~" y a diferencia de los objetos de control/Data flow que relizanrealizan su funcionfunción unicamenteúnicamente cuando sucedcesucede un evento y los activa (ejemplo: un el clic sobre un mensaje, la llegada de un simbolosímbolo a un print), los objetos de audio procesan señal constantemente sin necesidad de eventos que los activen. La señal de audio sera un flujo constante de datos y visualmente la podremos diferenciar como una línea mas gruesa que une distintas cajitas.
(Meter algo como el ejemplo que esta en la seccionsección de objeto)
Poner ejemplo de la suma/resta.
El
Lista de objetos de Pure Data Vanilla + librerías externas: https://puredata.info/docs/ListOfPdExternals/
Mensaje
La cajita de Mensaje se representa por un polígono irregular, un rectángulo con dos piquitos en los vertices derechos. El contenido que introduzcamos en una cajita de mensaje en el modo edición no se puede cambiar mientras el programa se ejecuta, para modificar el contenido de un mensaje tenemos que hacerlo en el modo edición del patch y este contenido se conserva cuando guardamos, cerramos y volvemos a abrir el patch.
Los mensajes envían su contenido cuando son activados (generalmente utilizaremos un Bang para activar un mensaje, si queremos que un mensaje se envié dos veces tendremos que activar el bang dos veces). Conectaremos la salida de un mensaje con la entrada de un objeto que sera el destinatario del mensaje. Tambien podemos interactuar con el clicando sobre el, esto hace que sea considerado también una GUI.
Para colocar un mensaje en nuestro patch: menu horizontal>Poner>Mensaje o utilizando en comando "Ctrl+2"
GUI (Graphical User Interface/ Interfaz Grafica de Usuario)
Las interfaces graficas de usuario (GUI) son elementos cuya apariencia puede variar cuando el programa este en funcionamiento, a diferencia de los objetos y mensajes que tienen una apariencia estática. Alguno de estos elementos son interactivos y nos van a permitir modificar parámetros desde el ratón y/o visualizar esos cambios o estados cuando el programa este en ejecución. Tienen diferentes formas y funciones. Estas son algunas de las mas utilizadas:
Cajita de numero
La cajita de numero se representa por un rectángulo truncado en su esquina superior derecha. Este elemento nos permite almacenar y visualizar diferentesel numerosnumero que llegaranllegue por el inlet a travestravés de un mensaje u objeto,objeto. que podremosPodremos modificar el numero almacenado con el ratonratón clicando y arastrandoarrastrando arriba o abajo cuamdocuando el programa este en ejecucion.ejecución. Este elemento enviara el numero que contiene cuando varieeste varíe o cuando reciba un evento ej (bang). Si el numero no variavaría y no recibe nigunningún bang, la cajita de numero no enviaenvía nada y a diferencia del mensaje que con un clic hacemos que se envie,envíe, sobre este el click de ratonratón no hara que la cajita de numero envieenvíe su contenido.
Clic derecho en el objeto>Propiedades = nos permite modificar tamaño, limites, etiquetas ...
Para colocar una caja de numero en nuestro patch: menu horizontal>Poner>Numero o utilizando en comando "Ctrl+3"
Bang
Este elemento es un botón que nos permite enviar un "impulso" o "mensaje de bang" cuando se activa: bien clicando sobre el o cuando recibe cualquier mensaje en su entrada, da igual el contenido del mensaje. Frecuentemente utilizaremos el bang para activar otros elementos y nos va permitir visualizar cuando hay flujo de datos entre otros objetos. El mensaje de bang le dice a otros objetos: actua! para que realicen su función. Y a nosotros nos dice que algo ha llegado.
Su forma GUI se representa con un cuadrado con un circulo circunscrito, cuando el bang se activa el circulo cambia momentaneamente de color, nos indica que ha enviado un impulso. En la parte superior izquierda tiene una entrada y en la parte inferior izquierda una salida.
Clic derecho en el objeto>Propiedades = nos permite modificar tamaño, color, etiquetas ...
Para colocar un bang en nuestro patch: menu horizontal>Poner>Bang o utilizando en comando "Shift+Ctrl+B"
El bang se puede crear también como objeto: "bang" o "b" y realiza la misma función que su version GUI pero no permite al usuario activarlo desde el ratón ni visualiza su actividad. (poner imagen del objeto bang y b)
Podremos encontrarlo también en forma de mensaje con el texto "bang"
Toggle
Este objeto GUI tiene dos estados: apagado y encendido. Cuando el estado cambia a apagado o recibe un valor igual a 0 en su entrada el toggle emite por la salida el valor 0 y visualmente lo reconoceremos como un cuadrado blanco vacío. Al cambiar el estado a encendido o recibir en su entrada un numero distinto de 0, su salida emite ese numero distinto de cero, que por defecto es el 1 y reconoceremos este estado por una cruz dentro del cuadrado. Un clic de ratón sobre el objeto o un mensaje de bang cambian el estado del objeto, si esta encendido cambiara a apagado y emite un 0, y si esta apagado cambiara a encendido y emitirá un 1. Un input numérico distinto de zero posiciona siempre el toggle en estado de encendido y un input igual a cero lo cambia o mantiene en estado apagado. El toggle emite un valor por su salida cada vez que el valor de entrada cambie aunque este valor no haga que cambie su estado. Frecuentemente utilizaremos el toggle para activar o cambiar de estado otros elementos y nos va permitir visualizar el estado de esos elementos.
Si el input del toggle es un numero distinto de 0 y distinto de 1, por ejemplo el 5, el toggle estará en el estado de encendido y emitiáemitirá un 5 por su output, si después de ese 5 enviamos un 6 al input del toggle el estado de este no cambiara y permanecerá encendido pero emitirá el numero 6.
Para cambiar el estado del toggle sin que emita ningún valor a su salida se utiliza el mensaje "set 0" para apagarlo y "set (valor distinto de 0)" para encenderlo.
Clic derecho en el objeto>Propiedades = nos permite modificar tamaño, color, etiquetas ...
Para colocar un toggle en nuestro patch desde el menu horizontal en Poner>Toggle o utilizando en comando "Shift+Ctrl+T"
En el patch de Lista de objetos (5.reference) que se encuentra en menu horizontal>Ayuda>Lista de objetos hay un sub-patch llamado "all_guis" que nos muestra todas la interfaces graficas de Pd Vanilla.
Comentarios
Los comentarios visualmente no aparecen en ninguna cajita ni tienen entradas/inputs ni salidas/outputs. El texto introducido en los comentarios es información que no sera interpretada por la maquina como elementos transformadores del programa/patch que estamos construyendo. Estos comentarios contienen información dirigida a las personas, notas que tomareis para vosotros mismos relacionadas con el funcionamiento del patch que estéis construyendo o notas para facilitar a otras personas la comprensión del patch que habéis creado. Son muy útiles para escribir recordatorios o explicaciones durante el proceso de trabajo y para etiquetar las diferentes partes de la estructuras que hagáis.
(poner gif/imagen de un comentario)
Líneas de que conectan las cajitas
-------
Finalizar esta seccion el videotutorial probando ejemplos.
Para crear un sub-patch utilizaremos un objeto en el que escribiremos "pd" como primer atom seguido del nombre que queramos darle a ese sub-patch
Este capitulo ha sido redactado tomando como guía el Capitulo 2 del Manual de Pd.
Referencias:
Pure Data (2022). Pd Manual chapter 2: theory of operation. In Pure Data (Version 0.52.2). [Computer software]. Pure Data. https://puredata.info/downloads/pure-data