Skip to main content

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:

image-1663059064619.jpg

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.  

image-1661613340653.gif

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; 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:

image-1663060366147.jpg

La ventana de patch tiene en la parte superior el mismo menu horizontal 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 de 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.

(imagen de menu clic derecho)

Ayuda nos va a abrir un patch sobre ese elemento con una explicación sobre su funcionamiento y ejemplos


image-1661609279467.jpg  <--- en este patch hay cuatro cajitas de texto: una cajita de numero (que contiene un cero), una caja de objeto que contiene la palabra "print" y dos comentarios que indican la función de las otras dos cajas.

image-1661427608752.PNGObjeto 

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 u outputs marcadas cada una de ellas también con una pequeña línea gruesa. Dependiendo del objeto el número de entradas y salidas variara, hay objetos que solo tienen entrada como el "print".

Por ejemplo:

image-1661757829440.3.jpg 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). 

mencionar el termino float e int con los numeros

Entre números no validos que son leídos como símbolos podemos encontrar expresiones como "+5" "0..6" "casa" y el programa reconoce como sí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.

(gif del patch de ayuda)

Cuando trabajemos con señales de audio utilizaremos objetos específicos de audio. Estos objetos siempre contienen el símbolo de virgulilla : "~" y a diferencia de los objetos de control/Data flow que realizan su función únicamente cuando sucede un evento y los activa (ejemplo: un el clic sobre un mensaje, la llegada de un sí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 secció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/

image-1661427544240.PNGMensaje

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 el mensaje 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:

image-1661427699753.PNGCajita 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 el numero que llegue por el inlet a través de un mensaje u objeto. Podremos modificar el numero almacenado con el ratón clicando y arrastrando arriba o abajo cuando el programa este en ejecución. Este elemento enviara el numero que contiene cuando este varíe o cuando reciba un evento ej (bang). Si el numero no varía y no recibe ningún bang, la cajita de numero no envía nada y a diferencia del mensaje que con un clic hacemos que se envíe, sobre este el click de ratón no hara que la cajita de numero enví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"

Ejercicio 1: Realizar una suma de dos números contenidos en dos mensajes e imprimir el resultado en la ventana principal.

Ejercicio 2: Realizar una suma utilizando dos cajitas de numero variable. Ves alguna diferencia entre el input derecho de la suma y el input izquierdo? Si la hubiere como afecta esta diferencia al output del objeto suma?

image-1661427750318.PNGBang

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 recibido cualquier mensaje y enviado un mensaje de bang. 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"

Ejercicio 3: Abrir el patch de ayuda del objeto suma (binops-help.pd). Dentro del patch de ayuda del objeto suma, abrir el subpatch "pd reference" para obtener más información acerca del funcionamiento de los objetos de operadores aritméticos. Utiliza deeple para traducir el texto en ingles del patch de ayuda que no comprendas. Responde las siguientes preguntas:

3.1 - Que utilidad tiene el objeto trigger ([t b f]) en el primer ejemplo del patch?

3.2 - Que sale del output derecho del objeto trigger ([t b f])? Y del output izquierdo? Utiliza el objeto print para comprobarlo.

3.3 - Qué pasaría si prescindiéramos del objeto trigger en este ejemplo y conectáramos la cajita de numero variable del lado derecho directamente al inlet derecho de los operadores? 

Ejercicio 4: El el caso anterior sustituye el objeto trigger ([t b f]) por un bang y reconecta las cajitas para obtener la misma funcionalidad que con el objeto trigger ([t b f]).

Reto! Construye un programa en Pd que imprima el resultado de la siguiente ecuacion: (2X + 4) x (3Y -20)  Pista: X e Y seran cajitas de numro variable.


image-1661427774284.PNGToggle

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. (redactar mejor y mas claro)

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 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. (hacer un gif de esto)

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. (hacer un gif de esto)

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.


image-1661427636895.PNGComentarios

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 sección 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