Pure Data


Pure Data (o simplemente Pd) es un lenguaje de programación visual de código abierto para multimedia. Su distribución principal (también conocida como Pd Vanilla) es desarrollada por Miller Puckette en el año 1996.

Pd permite a los músicos, artistas visuales, intérpretes, investigadores y desarrolladores crear software gráficamente sin escribir líneas de código. Pd se puede utilizar para procesar y generar sonido, video, gráficos 2D / 3D y sensores de interfaz, dispositivos de entrada y MIDI. Pd puede trabajar fácilmente en redes locales y remotas para integrar tecnología portátil, sistemas de motor, equipos de iluminación y otros equipos. Es adecuado para aprender métodos básicos de procesamiento multimedia y programación visual, así como para realizar sistemas complejos para proyectos a gran escala.


¿Por qué el PURE-DATA?

Para las computadoras reproducir un archivo de sonido es bastante fácil, tanto que pueden reproducir varios en simultaneo y sincronizadamente, también dentro de determinadas condiciones ir de un archivo a otro sin que se escuche o exista un lapso entre ellos.

Todo esto se puede utilizar como un medio para ejecutar música aleatoria.
La música aleatoria no es una novedad, pero si es novedad que exista la posibilidad hogareña o electro-domestica de recrear el factor aleatorio de una obra e interpretarla.


Pure-Data es software libre, esta cuidado y mantenido por gente que entiende mucho del tema, hay versiones para windows, mac y linux. que, a diferencia de los lenguajes tradicionales de código secuencial, trabaja a partir de objetos gráficos con forma de pequeñas ¨cajitas¨ que se conectan entre si a través de cables virtuales. Otra diferencia entre Max o Pd con los lenguajes como C, C++ o Java es que la programación está orientada a flujo de datos. Esto permite trabajar más fácilmente con procesos en paralelo y la la dirección de los datos al determina, en principio, la conexión entre los objetos a través de los cables.

Primero, descargar  Pure Date. Al abrir el programa PD, lo primero es configurar  la tarjeta de sonido en donde vendrán las entradas y salida de audio en la pestaña: PD / Preferencias / Audio.
Luego configurar Midi, en Mac tienes que crear un puerto midi virtual en las configuraciones de  Midi (No es necesario Loop midi) y en windows instalar el programa  Loop Midi el cual creas el puerto midi virtual. Con esta última configuración podrás enviar mensaje midi desde PD a cualquier otro DAW y Receptor Midi (input Midi de  un sintetizador o secuenciador). Pestaña de: PD / Preferencias / Midi

Crea un nuevo directorio, en donde podras administrar todos tus proyectos  PD  en una carpeta llamada Parche (patches) y otra sonidos (si trabajas con sonidos importados y/o Grabaciones de origen PD. La extension del Parche es.PD

MODOS

Pd tiene dos estados, el de edición y el de ejecución. El primero de ellos se utiliza para cambiar los objetos, arrastrarles, armar o cortar conexiones entre objetos a través de los cables, etc. En el modo ejecución se pude enviar los los mensajes, cambiar números en las cajas de numero, ejecutar toggles, bangs, escuchar el audio, etc.

Los modos pueden intercambiarse desde el menú Edit, o con cmd + e (mac) o ctrl + d (win).


ARGUMENTOS

La mayoría de los objetos admiten argumentos luego del nombre del objeto. Los argumentos son valores iniciales, o por defecto, que determinan el comportamiento del objeto. Por ejemplo indicar la función que cumplen los objetos en un argumento aledaño es: En Mac (cmd + 5), Win (ctrl + 5)

Muchas veces las entradas del objeto sirven para modificar el valor inicial del argumento. En ese caso el dato que vale es el último que entró y el argumento queda sin efecto.


AYUDA

Al hacer click con el botón derecho del mouse sobre cualquier objeto se despliega un menú desde donde podemos acceder al "help" del objeto en cuestión. Allí encontramos la descripción de sus funciones y un pequeño ejemplo de programación.

También es posible hacer lo mismo sobre el canvas (el fondo de la pantalla de programación) para obtener una lista completa de los objetos de pd.

PROPIEDADES

Muchos objetos poseen propiedades que determinan su comportamiento y su aspecto en pantalla. Estas propiedades pueden verse y editarse en el menú "properties" al que se accede clickeando con el botón derecho del mouse.

Parra ello vamos al menú Poner (Put)

INLETS y OUTLETS

Los objetos para conectarse entre si poseen entradas y salidas (llamados inlets y outlets respectivamente) que permiten que la informacion pase de un objeto a otro/s. Solo es posible conectar un outlet de un objeto con un inlet de otro/s (o incluso uno propio) y viceversa. No es posible conectar inlets entre si u outlets entre si. Para realizar las conexiones se utilizan cables que se crean clickeando sobre un outlet y arrastrando hasta un inlet.

Para la mayoría de los objetos la entrada de la izquierda es la "hot inlet", debido a que el objeto solo devuelve información cuando recibe algo en esta entrada. El resto de las entradas, por lo general, solamente guardan los datos a ser procesados, pero la operación solo se resuelve en el momento en que la entrada izquierda es activada.

ELEMENTOS DE PROGRAMACION

Haciendo una comparación con los lenguajes de programación orientados a objetos, las cajitas son en realidad objetos o funciones implementados dentro de un objeto gráfico. Por lo tanto, dependiendo de las características particulares, se les puede pasar información a través de sus entradas y devolver resultados a través de sus salidas.
Importante: el flujo de datos es siempre de arriba hacia abajo. Es decir, en la parte superior de los objetos se encuentran las entradas, y por debajo las salidas. Solo puede conectarse una salida con una entrada.

Los elementos que utiliza pd para la programación son:

.- objetos
.- mensajes
.- números
.- símbolos
.- comentarios
.- los objetos gráficos (Proyectos Audiovisuales (GUI))



Aprendamos mas acerca de los objetos 

Mobirise

Print (Objetos de control)

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.

Mobirise

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.

Mobirise

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.

Mobirise

Mensaje

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.

Mobirise

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.

Mobirise

Numeros

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

Mobirise

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.

Mobirise

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.

Mobirise

Entrada de teclado

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.

Mobirise

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.

Mobirise

Pack / Unpack (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).

Mobirise

Counter (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.

Mobirise

Randon (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.

Mobirise

Urn (Urna)

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 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.

Mobirise

Operadores aritméticos

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.

Mobirise

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
> mayor a
>+ mayor o igual a
== igual a
!= distinto a

Mobirise

Operadores  lógicos

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).







                                             

Line (Rampa)

Interpola Valores

Mobirise

Select (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.

Mobirise

Split 

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.

Mobirise

Switch

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

Mobirise

Gate

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

Mobirise

Route


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".

Mobirise

Moses 

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.

Mobirise

Spigot

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

Mobirise

Subpatch (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.

Mobirise

Send y receiver 
(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.

© Copyright 2021 Creatubeat. All Rights Reserved.

How to develop a free site - Try here