Está en la página 1de 12

objetos de control

PRINT

El objeto print imprime en la pantalla de pd los datos que recibe en su inlet. En el caso del ejemplo un string (Hola); un entero (25),
un flotante (7.3); una lista (5 10 15). Cuando los números de una lista están separados por comas la lista se desarmada. En
realidad se trata de 3 enteros, uno detrás de otro.

Si print lleva un argumento, este será asociado al valor en la impresión en pantalla.

Print se utiliza principalmente para monitorear resultados de operaciones, la ocurrencia de acciones y el orden secuencial del flujo
de datos.

OBJETOS DE ALMACENAMIENTO

Estos objetos es encargan de almacenar datos, aquel que tengan definido en su argumento o el último que hayan recibido por la
izquierda. El valor es expulsado por la salida al recibir un bang por la entrada izquierda.

Al recibir un mensaje por su entrada izquierda (hot inlet) devuelven el valor inmediatamente.

BANG

un bang es un tipo de dato especial, propio de pd, que singnifica "ahora'. Se utiliza principalmente para empujar datos. Su uso
más común es el de disparar varios eventos sincronizados, es decir que desde un único bang puedo ejecutar múltiples
operaciones a la vez.
bangbang dispara n bangs en orden. Su argumento define la cantidad de salidas.

Página 1 de 12
MENSAJES

Un mensaje es lo que en programación se define como una constante, es decir que su contenido no varía a lo largo del programa.
Se utiliza también para mandar comandos exclusivos a los objetos. Por ejemplo el objeto metro deja de enviar bangs cuando
recibe por su inlet izquierdo el mensaje "stop"

Más adelante veremos que existen algunos comandos que permiten modificar en tiempo real el contenido de un mensaje,
convirtiéndolo en una variable.

Página 2 de 12
ORDEN DE LOS MENSAJES

Si bien dijimos que pd trabaja con información en paralelo esto no es del todo cierto. A nivel del procesador los datos se computan
de forma secuencial, es decir de uno a la vez.

En el ejemplo que sigue podemos comprobar que aunque parecen iguales ambos programan difieren en el orden en que ingresan
los números al objeto print.

Para tener un control sobre el orden de ejecución de los eventos se utiliza el objeto trigger.

Este objeto fuerza el orden de la ejecución de los eventos. La prioridad la tiene la salida de la derecha. Trigger devuelve los
valores de la entrada de forma secuencial de derecha a izquierda.

Página 3 de 12
NUMEROS

En pd hay una sola clase de números, los flotantes (floating point numbers) o decimales, con una resolución de 32 bits.

TOGGLE

Toggle es un objeto GUI (Graphical User Interface) de dos estados, se enciende cuando recibe un número distinto de 0 y se
apaga cuando recibe un 0. Estando solo, toggle devuelve un 1 cuando está encendido y 0 cuando está apagado. Cuando recibe
un número devuelve dicho valor. Como en la mayoría de los objetos, es posible configurar estas propiedades con el botón derecho
del mouse.

METRO

Metro es un metrónomo que permite automatizar eventos. Se enciende con un 1 en su inlet izquierdo y devuelve automáticamente
bangs por su salida a intervalos de tiempo regulares definido por su argumento, o por un valor que lo modifique, por su inlet
derecho. Un 0 lo detiene.

ENTRADA DE TELCADO

Key y Keyup son un tipo de objetos que nos comunican con los periféricos del ordenador. En este caso con el teclado. Devuelve
el valor ASCII cuando se presiona una tecla o cuando se deja de presionar en cada caso.

Página 4 de 12
ESCALADOR

m_scale convierte rangos de valores. Sus argumentos son, de izquierda a derecha: valor mínimo de entrada, valor máximo de
entrada, valor mínimo de salida y valor máximo de salida. En el caso del ejemplo va a transformar los valores que ingresen de 0 a
1 por su inlet izquierdo a valores que van desde 0 a 127, de forma lineal.

LISTAS

pack y unpack son dos objetos que trabajan con listas. El primero me permite crear una lista a partir de elementos simples y el
segundo desarmarla. Los argumentos de ambos definen el tipo y la cantidad de elementos de la lista, siendo estos de tipo float,
symbol o pointer (f, s, p).

Página 5 de 12
CONTADOR

Dos ejemplos simples de contadores que utilizan la propiedad recursiva de pd, la capacidad de almacenamiento del objeto float.

counter cuenta los bangs que recibe por su inlet izquierdo. El primer argumento define si lo hace de forma ascendente (0),
descendente (1), o de ida y vuelta. Los otros dos determinan los límites mínimo y máximo del conteo respectivamente. En el
ejemplo counter contará de forma ascendente desde 0 hasta 127 y volverá a comenzar si continúan entrando bangs.

Página 6 de 12
ALEATORIEDAD

random es un generador de valores pseudoaleatorios. Al recibir un bang devuelve n valores enteros al azar entre 0 y n -1, siendo
n el valor definido en su argumento, y que puede modificarse desde su inlet derecho.

urna es similar a random, pero nunca repite un mismo valor hasta no terminar todas las opciones. Cada vez que devuelve un valor
lo descarta de los candidatos , y no podrá ser elegido en los próximos bangs. Una vez que salieron todos los números posibles la
urna nos avisa con un bang por su outlet derecho que está vacía. Un mensaje "clear" vuelve a cargar los números en la urna para
seguir funcionando.

Tanto urn como random generan valores aleatorios con una distribución uniforme, es decir que todos los valores tienen la misma
posibilidad de ocurrir.
Es posible definir una distribución probabilística diferente para la ocurrencia de los bangs. El objeto moses divide una secuencia
Página 7 de 12
de números entre aquellos que son menores y los que son mayores o iguales a un límite (definido en el argumento) y los devuelve
por una y otra salida respectivamente.

Si generamos 100 valores aleatorios, la probabilidad de que los valores menores a 20 salgan por la salida de la izquierda es igual
al 20%.

OPERADORES ARITMETICOS

Como en todo lenguaje de programación existen símbolos que definen la operaciones aritméticas elementales: suma, resta,
multiplicación y división. En el ejemplo agregamos la operación de módulo (%): el resto de la división de dos números. Por ejemplo
5 mod 4 es igual a 1, porque 5/4 = 0, con un resto de 1.

OPERADORES RELACIONALES

Los operadores relacionales son símbolos que se utilizan para comparar dos valores. El resultado de la operación devuelve un
valore de verdad: verdadero (1) o falso (0).

< menor a
<= menor o igual a

Página 8 de 12
> mayor a
>+ mayor o igual a
== igual a
!= distinto a

OPERADORES LOGICOS

El resultado de una operación lógica && es verdadera (1) si los dos operandos son verdaderos (1).

El resultado de una operación lógica || es verdadera (1) si los alguno de los dos operandos es verdadero (1).

RAMPAS

line interpola valores.

Página 9 de 12
RUTEO DE DATOS

select devuelve un bang cuando la entrada coincide con alguno de los argumentos. Por ejemplo, si el valor de entrada es igual al
tercer argumento, se dispara un bang por la tercer salida.

split busca un rango de números, definido por el argumento. Los valores dentro de ese argumento salen por la salida izquierda,
los que se encuentran fuera de él, se derivan a la salida derecha.

switch deja pasar a su salida solamente la entrada seleccionada desde su primer inlet.

gate por el contrario, envía los datos a la salida seleccionada desde su primer inlet.

Página 10 de 12
route funciona de manera similar a select. La diferencia es que route funciona con listas de datos. Los datos enviados a la salida
son aquellos cuyo primer elemento coincide con el argumento. Los datos que salen son todos menos el primero, que funciona
como "identificador".

moses envía los valores a su salida izquierda cuando la entrada es menor al valor del argumento(umbral) y por la salida derecha
cuando son mayores o iguales.

spigot deja pasar el valor de su entrada izquierda cuando el valor de la entrada derecha es distinto de 0 .

ENCAPSULAMIENTO

subpatch Es posible encapsular parte de la programación en un subpatch. Tipeando "pd" en una caja de objeto se crea un nuevo
patch dependiente del patch principal (main). Los inlets y outlets permiten agregar entradas y salidas al subpatch. Esta es la base
de la programación de pd y la que permite crear objetos propios dentro de la programación.

Página 11 de 12
ENVIOS REMOTOS

send y receive son los objetos que permiten realizar envíos remotos de datos entre diferentes partes del patch, o entre diferentes
subpatchs. Se utilizan para evitar los cables, o en caso que sea imposible utilizarlos. La conexión se realiza entre
un send y receive que tengan el mismo nombre o etiqueta en su argumento.

DESCARGAS:

Página 12 de 12

También podría gustarte