Sunteți pe pagina 1din 71

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

INGENIERA TCNICA EN INFORMTICA DE GESTIN

PURE DATA

Realizado por
DANIEL BECERRA VELA
48884306Z

Dirigido por
VCTOR J. DAZ MADRIGAL
Departamento
LENGUAJES Y SISTEMAS INFORMTICOS

Sevilla, Mayo de 2014

UNIVERSIDAD DE SEVILLA

ESCUELA TCNICA SUPERIOR DE


INGENIERA INFORMTICA

ndice
Introduccin y conclusiones...........................................................................3
Funcionamiento bsico ...................................................................................7
Las 3 cajas.................................................................................................................. 7
Atoms......................................................................................................................... 8
Conexiones................................................................................................................ 8
Datos .......................................................................................................................... 9
Parches....................................................................................................................... 9
Hola Mundo!............................................................................................................ 9
Bang.......................................................................................................................... 10
Ayuda ....................................................................................................................... 10

Matemtica simple y lgica del bang............................................................11


Metro........................................................................................................................ 12

MIDI y Makenote ..........................................................................................13


Makenote ................................................................................................................. 14

Lgica condicional con spigot y moses .......................................................16


Spigot ....................................................................................................................... 16
Moses ....................................................................................................................... 17

Secuenciador simple.......................................................................................18
Sel.............................................................................................................................. 18
Counter .................................................................................................................... 19

Nmeros aleatorios........................................................................................20
Random.................................................................................................................... 20
TripleRand............................................................................................................... 20
Drunk ....................................................................................................................... 21

Enviar y recibir (send & receive)..................................................................22


Knob ........................................................................................................................ 22

El objeto expr .................................................................................................23


reacTIVision y Tuio Client.................................................................................... 24

Subpatching ....................................................................................................28
A Beat Machine ..............................................................................................29
Grficos con tablas y arrays ..........................................................................33
Tabwrite................................................................................................................... 33
Tabread .................................................................................................................... 34

Objetos tiles y manejo de listas ..................................................................37


Pack / Unpack ........................................................................................................ 37
$................................................................................................................................. 38
zl................................................................................................................................ 38
slice / ecils ............................................................................................................................ 38
group...................................................................................................................................... 38
join.......................................................................................................................................... 38
union ...................................................................................................................................... 39
sect.......................................................................................................................................... 39

Bondo....................................................................................................................... 39

Abstracciones..................................................................................................40
Leyendo audio con readsf~ ..........................................................................41
Osciladores osc~............................................................................................42
Sntesis de AM (Modulador de amplitud)........................................................... 43
Sntesis de FM (Modulador de frecuencia)......................................................... 44

Audio avanzado con tabread4~ ...................................................................45


Open Sound Control (OSC).........................................................................47
GEM................................................................................................................49
Reproduccin de video con GEM....................................................................... 49
Manipulacin de video con GEM........................................................................ 50

Abstracciones visuales ...................................................................................52


Grabando audio a disco con writesf~.........................................................54
Filtros de audio...............................................................................................56
High pass ................................................................................................................. 56
Low pass .................................................................................................................. 57
Band pass................................................................................................................. 58

Reverb and Delay...........................................................................................59


CASO PRCTICO I: Secuenciador simple ...............................................61
CASO PRCTICO II: Reproductor wav...................................................62
CASO PRCTICO III: Minireactable ........................................................63
Anexo I: Instalando Pure Data.....................................................................65
Referencias ......................................................................................................69
Web .......................................................................................................................... 69

I N T R O D U C C I N

P U R E

D A T A

INTRODUCCIN

Introduccin y conclusiones

ste documento recoge la memoria presentada en la asignatura Proyecto


Informtico para la obtencin del ttulo Ingeniera Tcnica en Informtica de
Gestin. En ella se presenta un manual junto con una serie de ejemplos
prcticos de uso y aplicacin del lenguaje de programacin musical y de audio
Pure Data.
Pure data, como proyecto, fue iniciado por el ingeniero de software
norteamericano Miller Puckette, quien previamente co-desarroll el Max/Msp, un
programa muy conocido y de estructura similar. No es un programa comercial, no fue
desarrollado por una corporacin y tampoco est a la venta. Pure Data es software
libre, este cdigo no es propiedad de una corporacin sino que esta disponible para
cualquiera.
Es un lenguaje de programacin grfico que hace ms fcil construir
programas para manipular y trabajar con seales de audio. Nos permite crear
incontables tipos de sintetizadores, samplers y melodas e incluso poder conectar con
software externo. Pure Data est en continuo desarrollo y mejora, es software libre
desarrollado por una comunidad cuya web es http://puredata.info/.
La principal aplicacin de Pure Data y para lo que ha sido creado es el
procesado de seales de audio. Pero su desarrollo lo ha convertido en un medio de
procesado de seales con otros diversos usos. Pure Data se puede usar para procesar y
manipular seales de video mediante GEM, crear imgenes en 2D y 3D con PDP y
Gridflow. Existe una coleccin de objetos que actan como interfaces, con los que se
podrn conectar y controlar joysticks, sensores, prototipos de robtica e incluso
controles de consolas de videojuegos como DJ Hero o Guitar Hero.
Su simplicidad y sencillez visual es apabullante, sin nada de adornos, har que
complejos programas sean agradables a la vista y den una descripcin grfica del
sonido.

The Diagram is the program

Lo ms atractivo de Pure Data es su sencillez en su entorno de desarrollo y lo


intuitivo de la escritura de su lenguaje. Es tan simple como arrastrar cajas a un lienzo
que harn las veces de funciones o procesos, estas cajas tendrn unas marcas en su
parte superior que equivalen a las entradas o argumentos de la funcin y marcas en su
parte inferior a modo de salidas o resultados de la funcin, de forma, que las salidas de
unas cajas sern las entradas de las siguientes dando esa sensacin de que el flujo de
datos va de arriba a bajo, lo que har que los programas sean legibles y entendibles slo
detectando algunas cajas en un solo golpe de vista.
3

I N T R O D U C C I N

P U R E

D A T A

Aunque al principio uno debe aprender las ideas bsicas del lenguaje, en poco
tiempo, Pure Data, se hace disfrutar. Trabajar y cacharrear con Pure Data es de lo
ms entretenido sobre todo para aquellos a los que nos gusta la msica y
particularmente la msica electrnica. La capacidad de Pure Data de generar notas
MIDI nos da la posibilidad de conectar multitud de instrumentos y programas externos
con lo que en poco tiempo se conseguirn resultados espectaculares a la par que se van
aprendiendo las palabras reservadas del lenguaje y su relacin con la msica como por
ejemplo el objeto metro (metrnomo), fundamental a la hora de hacer msica.
Tras este estudio, las desventajas que se detectan en este lenguaje de
programacin son, sobre todo, la escasa documentacin en castellano, a lo cual aporto
mi humilde granito de arena con este manual, y algo meramente tcnico relacionado
con el entorno de desarrollo, que dar algunos problemas, es la importacin de libreras
haciendo uso del path. Respecto a esta segunda cuestin se supone que en versiones
posteriores se ir subsanando el problema.
Para escribir este sencillo y sobre todo prctico manual de introduccin a Pure
Data se ha seguido como guin de estudio un videotutorial (en ingls) de youtube
subido por el compositor y profesor de msica Dr. Rafael Hernndez
(http://www.rafaelhernandez.org/) completado con el libro Designing Sound de Andrew
James Farnell. En definida, el manual es el producto resultante de hacer todos los
ejemplos de dicho videotutorial, usando herramientas y programas externos, como por
ejemplo reacTIVision, y dar una explicacin breve de todos los aspectos tcnicos y de
semntica del lenguaje consultando tutoriales y manuales adems del libro antes
mencionado.
Concluyendo, quizs lo ms prctico que se encuentre en este manual, a parte
de toda la semntica y tcnicas de Pure Data, y para mi lo mas interesante y divertido es
reacTIVsion, un software capaz de reconocer formas (fiduciales) y adems detectar
movimientos en esas formas. Como con el reactable se puden asociar sonidos y
samples a esas fiduciales o formas y como con movimientos de esos fiduciales se
manipulan esos sonidos sabiendo que una cancin o performance con el reactable es
nica puesto que mover esos fiduciales por las mismas zonas de la mesa, con los
mismo giros y en los mismos instantes es imposible. La msica electrnica despus del
todo no es tan cuadrada como dicen algunos, es igual de bonita e infinitesimal que el
rock clsico y con el mismo mrito o incluso ms, depende del programa.
Aqu dejo un par de actuaciones o performance con reactable:

Ver en youtube: ReacTj ReacTable Trance live performance @ submixpro studio


Torino 02: https://www.youtube.com/watch?v=Mgy1S8qymx0

Ver en youtube: Reactable - SoulFul House Part1 (By Kokab):


https://www.youtube.com/watch?v=psQIFVdLR4A

I N T R O D U C C I N

P U R E

D A T A

Esta memoria, cuya columna vertebral es un manual introductorio a Pure Data


se estructura en 29 entradas, la primera entrada es esta misma introduccin a modo de
resumen, luego se presenta el manual en 22 lecciones, se incluyen 3 casos prcticos mas
a parte de los del manual, se aade un anexo con indicaciones para la instalacin de
Pure Data, un ndice de figuras y una ultima entrada con las referencias de herramientas
y bsqueda de informacin.

Leccin 1- Funcionamiento Bsico: Se explican los tres tipos de cajas u


objetos bsicos de Pure Data y la forma en que se conectan. Se presenta una
introduccin al entorno de desarrollo, se crean un primer programa (parche en
Pure Data) con el tpico 'Hola Mundo!'.

Leccin 2- Matemtica simple y lgica del bang: Se ve el mas fundamental


de los objetos o cajas de Pure Data, el objeto bang, el que inicia el flujo de
datos, y el objeto metro que da ritmo a ese flujo de datos.

Leccin 3- MIDI y makenote: En este captulo se expone la configuracin


MIDI y la generacin de sus notas mediante el objeto makenote.

Leccin 4- Lgica condicional con spigot y moses: Como su nombre


indica, en Pure Data, adems de poder hacerse msica y operaciones
matemticas tambin se puede operar con la lgica.

Leccin 5- Secuenciador simple: Se crea, de forma bsica, la herramienta


principal de composicin, programacin y control sobre los equipos de
instrumentacin electrnica musical (sintetizadores, samplers, cajas de ritmo,
procesadores de seal, etc), el secuenciador.

Leccin 6- Nmeros aleatorios: Se ven palabras reservadas para crear objetos


o cajas que generan nmeros aleatorios y la relacin que tienen con el clculo
de probabilidades.

Leccin 7- Enviar y recibir (send & receive): Los objetos send y receive se
usan para enviar informacin de una caja a otra sin necesidad de conexiones
entre ellas, aumentando as la limpieza y legibilidad del cdigo (parche).

Leccin 8- El objeto expr: Con dicho objeto se simplifican las operaciones


matemticas a una sola caja u objeto. Incluye un ejemplo prctico con
reacTIVision.

Leccin 9- Subpatching: Relacionado con la legibilidad de cdigo y la


abstraccin de zonas del cdigo o parche.
5

I N T R O D U C C I N

P U R E

D A T A

Leccin 10- A Beat Machine: Se crea una caja de ritmos mediante un ejemplo
prctico con Reason.

Leccin 11- Grficos con tablas y arrays: Sobre el pintado y manipulacin de


grficos y el uso de tablas para crear secuenciadores.

Leccin 12- Objetos tiles y manejo de listas: Se explican objetos o cajas


muy tiles a la hora de manipular listas de nmeros y cadenas.

Leccin 13- Abstracciones: La forma en Pure Data de reutilizar y modularizar


el cdigo, tan importante en cualquier lenguaje de programacin.

Leccin 14- Leyendo audio con readsf~: til para usar sonidos y samples ya
creados en nuestros parches musicales.

Leccin 15- Osciladores osc~: En este captulo se hace una pasada a la


generacin de ondas y a su manipulacin tanto en amplitud como en
frecuencia.

Leccin 16- Audio avanzado con tabread4~: Ejemplo de reproduccin y


manipulacin de un archivo de audio.

Leccin 17- Open Sound Control (OSC): Una resea a la posibilidad de Pure
Data de conectarse con dispositivos externos como puede ser un joystick de
videojuego, el telfono movil, Guitar Hero,

Leccin 18- GEM: Capitulo dedicado a la manipulacin de video.

Leccin 19- Abstracciones visuales: Dado que Pure Data es 100% visual y
grfico, en este captulo se aprender a crear y reutilizar parches o cdigo que
son en definitiva indicadores grficos.

Leccin 20- Grabando audio a disco con writesf~: Se explican un par de


formas de grabar a nuestro disco duro los sonidos generados en Pure Data.

Leccin 21- Filtros de audio: Manipulacin de sonidos en sus tres grupos de


frecuencias, agudos, graves y medios.

Leccin 22- Reverb and Delay: Se ven las tcnicas para producir la
reverberacin y el eco en el sonido.
6

I N T R O D U C C I N

P U R E

D A T A

LECCIN

x
1
Funcionamiento bsico

ure Data usa un tipo de programacin llamado dataflow (flujo de datos) porque
los datos fluyen a travs de conexiones y son procesados en objetos. La salida
de un objeto es la entrada del siguiente.

Un objeto es una caja rectangular con entradas y salidas denominadas inlets y outlets
representados mediante unas pequeas rayitas negras. Los inlets estn en la parte de
arriba de la caja y los outlets en la parte de abajo. Un objeto realiza un determinado
proceso a los datos que le entran por sus inlets y enva los resultados por sus outlets.
Cada objeto realiza una funcin diferente segn el nombre que contenga dicho objeto.
Hot inlet: es el inlet ms a la izquierda, son las
entradas del objeto que activan el proceso.
Cold inlet: es o son (puede haber mas de uno)
argumentos o entradas adicionales al objeto.
FIGURA 1. OBJETO.

Las 3 cajas
En Pure Data se usan 3 cajas u objetos bsicos, Objeto, Mensaje y Nmero. Las cajas de
los objetos son rectangulares, las cajas de los mensajes tienen el lado vertical derecho
distinto de los otros y la caja de los nmeros tiene el ngulo superior derecho cortado.
Hay un edit mode (modo edicin) y un execute mode (modo ejecucin). Se puede
saber en cual estado se est mirando el cursor.

FIGURA 2. LAS 3 CAJAS.

Estando en modo edicin es posible alterar el valor


de un nmero manteniendo apretada la tecla CTRL y
moviendo el cursor arriba o abajo. Tambin es til
para emitir los mensajes. La caja objeto se podra ver
como una funcin en la que sus inlets seran los
argumentos de entrada de dicha funcin y sus outlets
seran los argumentos de salida de la funcin.

I N T R O D U C C I N

P U R E

FIGURA 3. USO DE OBJETOS Y


MENSAJES.

D A T A

El objeto osc~ 440 es un oscilador. Al pulsar


sobre el mensaje 1 se escucha un tono sinusoide con
una frecuencia de 440 Hertz. Con la caja nmero, se
modifican los valores de esa frecuencia que hacen
que el tono se modifique.
Esta es la estructura bsica en Pure Data: Un objeto
tiene un nombre (si produce seales, una tilde "~"
sigue despus de su nombre), despus hay un espacio
y se continua con uno o mas argumentos (En este
caso en particular el argumento inicial fue 440).
Con la mayora de los objetos, los argumentos
pueden ser modificados cuando nuevos valores
ingresan por sus inlets. Si nuevos valores ingresan de
esta forma, el argumento en el objeto es ignorado.
(en este ejemplo, 350 en lugar de 440).

Atoms
Se puede introducir informacin en los nmeros y en los mensajes. Los mensajes
pueden contener letras, entonces se denominan smbolos. A toda esta informacin se
hace referencia con los atoms (tomos).
Un mensaje para un objeto tiene dos partes: Una designacin de mtodo (selector) y
cero, uno, o varios valores (argumentos). Por ejemplo si el mensaje es 5, en realidad
el mensaje verdadero es float 5 y se compone de los tomos float y 5. El
mensaje bang, que se explicar mas adelante, se compone solo del selector bang y
no contiene argumentos. El mensaje 1 2 3 4 5 es en realidad list 1 2 3 4 5 (list =
lista). Por tanto, existen dos tipos de tomos: un numero (en lenguaje de programacin
= float) que es un valor de 32-bit, o un smbolo, que es una sucesin de letras. El
mensaje float 5 se compone de dos tipos de tomos, smbolo y float. La parte
simbolo tiene el valor float(una sucesin de letras) y la parte float tiene el valor 5.
El selector es siempre un smbolo.

Conexiones
Las conexiones entre los objetos se llaman cuerdas o cables. Van desde el outlet de un
objeto hasta el inlet de otro. Pueden cruzarse entre ellos a la hora de hacer el programa
pero debe evitarse para as favorecer la lectura del mismo.
Hay 2 tipos de conexin o cable entre las cajas u objetos, grueso y fino. Los cables
gruesos transmiten seales de audio, mientras que los cables finos transmiten solo
datos. Todos los objetos que producen seales o trabajan con seales en su entrada,
tienen tilde "~" inmediatamente despus de su nombre. Los otros objetos no. Estos
dos niveles se denominan "control level (donde solo "data de control" fluye, tambin

I N T R O D U C C I N

P U R E

D A T A

denominado "message domain") y "signal level" (donde las seales fluyen, tambin
denominado "signal domain").

Datos
Los datos a procesar por los objetos pueden ser muy variados. Mensajes, sonidos y
tramas de video sern los que se vean en este humilde manual. El objeto da pistas del
tipo de dato que procesa por su nombre. El carcter ~ indica que el objeto procesa
seales de audio.

Parches
Un programa o parche es una coleccin de objetos conectados con cables. En el mundo
de la sntesis de sonido la palabra parche (patch) y programa significan lo mismo. Para
construir el programa o parche se irn colocando objetos en una zona vaca
denominada canvas.

Hola Mundo!
Se crear un primer patch. Para ello se seleccionar ArchivoNuevo para abrir un
canvas vaco. Antes de todo se cambiar el canvas a modo edicin, para ello se
selecionar EditarModo Edicin o Ctrl+E. Para aadir objetos al canvas se
seleccionar Poner
Objeto o CTRL+1.

FIGURA 4. HOLA MUNDO.

Se seleccionar Poner
Mensaje o CTRL+2 y se
escribir en el objeto mensaje Hola Mundo!.
Los objetos mensajes soportan string, floats
(nmeros) o instant floats (nmeros con
decimales), tienen una muesca en el lateral
derecho u slo tiene un inlet y un outlet. Se
necesitar un objeto que interprete el mensaje.
Se aadir un objeto con la palabra reservada
print que imprimir el mensaje por consola.

Si se escribiera una palabra no reservada o no reconocida en el path, la caja quedar en


color rojo y abierta con lnea discontinua. Se unir con cuerdas inlets y outlets tal como
aparecen en la imagen. Obsrvese como cambia el icono al acercarse a los inlets u
outlets indicando que se podr crear una nueva cuerda de conexin. Al hacer clic sobre
el mensaje la cadena Hola Mundo! se imprimir en consola. Pero antes habr que
desactivar el modo edicin con Ctrl+E. Los patch se guardan en archivos con extensin
.pd.

I N T R O D U C C I N

P U R E

D A T A

Bang
Existe un objeto esencial en Pure Data denominado bang. Para crear este objeto se
usar la palabra reservada bng. Esta vez no se quedar esa palabra escrita sino que se
sustituir por un smbolo consistente en cuadrado con un crculo en su interior (Ver
Figura 5) en el que al hacer clic se pondr de color oscuro imitando un parpadeo.

FIGURA 5. DISTINTOS BANGS.

Al hacer clic en el bang se conseguir el mismo


efecto. El objeto bang slo enva y recibe
mensajes de tipo bang, es usado para indicar
que se haga algo, para indicar start (fire, do
somethig). El objeto mensaje bang equivale al
objeto bng.

Ayuda
Pure Data tiene un sistema de ayuda con informacin de uso y ejemplos de cada
objeto. Al hacer clic con el botn derecho en un objeto y seleccionar la opcin Ayuda
se abrir un nuevo patch que explica la funcionalidad de la palabra reservada de dicho
objeto, como por ejemplo informacin sobre los inlets y outlets, argumentos, mensajes
de inicializacin de objetos, etc.

FIGURA 6. PARCHE DE AYUDA DE METRO.

10

I N T R O D U C C I N

P U R E

D A T A

LECCIN

2
Matemtica simple y lgica del
bang

ure Data puede realizar operaciones matemticas pero es importante conocer el


funcionamiento y orden de realizacin de las operaciones en base al orden en
que se conecte el bang con los inlets a los que afecte.
Al hacer clic en el bang la primera vez, el objeto nmero que
almacena el resultado mostrar 10. Por qu 10 y no 15?.

FIGURA 7. SUMA ERRONEA.

El motor de Pure Data enva los bangs de acuerdo al orden en


el que se conectaron los objetos mensaje, que actan como
operandos, al objeto bang. Como el primero en conectarse
fue el 10, el objeto + que acta como operador solo recibir el
10 de un hot inlet.

Si se hubiera conectado el bang primero al mensaje 5 y luego al 10 el resultado hubiese


sido correcto debido a que el 5 est conectado al segundo argumento del objeto +. Y el
objeto + necesita el argumento de su hot inlet para activarse.
Esto puede llegar a ser una locura a la hora de trabajar con Pure Data. La solucin es
usar un objeto trigger, el cual forzara a hacer bang en los inlets del objeto + de derecha
a izquierda terminando por su hot inlet.
El objeto trigger escupe sus salidas siempre de derecha
a izquierda y por cada outlet saldr el tipo de dato
definido en sus argumentos. Siempre tendr un solo
inlet y tantos outlets como argumentos se escriban. En
este caso al escribir 2 argumentos de tipo bang se
crearan 2 outlets y por cada uno de ellos se enviaran
mensajes bang. Una forma resumida y equivalente de
FIGURA 8. SUMA CORRECTA.

representar ese mismo trigger hubiera sido:

11

I N T R O D U C C I N

P U R E

D A T A

En el trigger entrar el mensaje dog my cats, pero ese


mensaje lleva consigo la seal de bang al hacer clic sobre
l. Por el outlet izquierdo, como indica el tipo del
argumento del trigger, saldr un mensaje de tipo bang
mientras que por el outlet derecho cualquier cosa
(anything) que no sea la seal bang, por tanto, saldr el
mensaje en cuestin. En la consola se imprimir:
FIGURA 9. TRIGGER.

b: dog my cats
a: bang

Metro
Uno de los objetos mas tiles a la hora de hacer msica con Pure Data es el objeto
metro el cual permite generar bangs a intervalos regulares como si fuera un
metrnomo obteniendo as un ritmo.

FIGURA 10. METRO.

Para activar el metro se necesita, en su hot inlet un 1 y


para desactivarlo un 0 o un mensaje stop. Siendo ms
especfico, para activarlo solo se necesita algo distinto
de 0 o un mensaje bang. Su segundo inlet es para
configurar la frecuencia o tempo del metro, en
milisegundos. En nuestro ejemplo se generar un
bang cada medio segundo. Suele ponerse un objeto
bang en su salida para visualizar el ritmo que marca.
En la mayora de programas de msica, el tempo,
viene dado en bpm (beats per minute). En la figura 11
se muestra un parche que equivale a un metro bpm.
Primero se hace el calculo para pasar de bpm a
milisegundos, para ello, se dividen 60000 milisegundos
que hay en un minuto ente el numero de beats que se
quiera por minuto. 60000/144=416.6. Aproximando a
416, este ser el segundo argumento en milisegundos
del objeto metro. Con el objeto int, que traduce el
bang a numero, el +1, el %8 y ese entrecruce de cabes
se consigue hacer un contador de 0 a 7 en el que se
visualizar la velocidad de incremento generada por el
metro. Obsrvese como al ir incrementando el BPM
el contador ir contando mas rpido.
Nota

FIGURA 11. METRO BPM.

Los objetos nmero se crean por defecto a 0. Se pueden


incrementar pulsando con el ratn y subiendo hacia arriba
o hacia abajo para decrementar. Si a la vez se pulsa la tecla
mayusculas este incremento ser decimal.

12

I N T R O D U C C I N

P U R E

D A T A

LECCIN

3
MIDI y Makenote

no de los usos fundamentales de Pure Data es la manipulacin de


instrumentos midi. Para el diseo de sonido resulta muy til conectar
instrumentos midi y controlar sus parmetros desde Pure Data.
En este manual se usar un instrumento midi virtual, de manera que este
instrumento interprete y reproduzca las seales midi generadas por Pure Data.
Concretamente se usar FM 8 de Native Instruments (http://www.nativeinstruments.com/es/products/komplete/synths/fm8/). Para conectar ambos
programas se usar una pequea aplicacin o driver llamado loopMidi
(http://www.tobias-erichsen.de/software/loopmidi.html), capaz de crear un puerto
midi virtual (loopMidiPort).

FIGURA 12. LOOPMIDI Y FM8.

13

I N T R O D U C C I N

P U R E

D A T A

Tras arrancar loopMidi, se abrir FM8 y en la barra de men se seleccionar


File
Audio and MIDI Settings , en la pestaa MIDI se activar loopMIDI Port en
la zona Input Interface. En Pure Data seleccionar Media
Preferencias de MIDI y
en Dispositivo de salida 1 se seleccionar loopMIDI Port. De esta forma se
conseguir que loopMIDI haga de cable de conexin entre ambos programas y
cualquier nota midi creada y reproducida en Pure Data ser interpretada y sonar en
FM8 pudiendo reproducirla con multitud de instrumentos.

FIGURA 13.CONFIGURANDO LOOPMIDI COMO PUERTO DE ENTRADA EN FM8


Y DE SALIDA EN PURE DATA.

Makenote
Con makenote se pueden construir notas midi con una velocidad y duracin en
milisegundos definidas. Haciendo un smil, esa velocidad se relaciona con la fuerza o
intensidad con la que se pulsa la tecla del teclado y la duracin sera el tiempo que se
tenga pulsada esa tecla. Estos parmetros seran cold inlets o inlets derechos del objeto
makenote, su hot inlet o inlet izquierdo sera el de la entrada de la nota en cuestin, es
decir, la tecla que se pulsa.
Los outlets de makenote sern de nuevo la nota y la
velocidad que servirn de entrada a noteout el cual
se encarga de enviar la nota midi al puerto de salida,
loopMidi en nuestro caso.
Con el mensaje 60 85 400 se est generando una
nota 60, pulsando con velocidad o fuerza de 85 y
durante 400 milisegundos.
Pulsando el bang se generan tres notas 60, 64 y 67.
En FM8 se puede observar como se pulsan tres
teclas a la vez con una velocidad de 80 y durante 50
milisegundos.
14

I N T R O D U C C I N

P U R E

D A T A

FIGURA 14. MAKENOTE.

A parte de los inlets de la nota y velocidad de noteout, el tercer inlet es para indicar el
canal midi por el que se transmitir la nota. Existen 16 canales diferentes.
Hay dos objetos muy interesantes y tiles para aumentar el control midi. Con ctlin y ctlout,
Pure Data puede recibir o enviar mensajes de control.
Inlet 1: valor a enviar. (0-127).
Inlet 2: nmero de control.
Inlet 3: canal midi.

FIGURA 15. CTLOUT.

En las especificaciones de programas de msica como puede ser


Reason o Fruity Loops, los botones de los instrumentos tienen
asociado un nmero. Si el botn que regula la frecuencia de
cierto instrumento es el 74, con el patch de la figura 15 se podr
controlar ese botn desde Pure Data.

Nota

El objeto morado que controla la frecuencia es un objeto vslider (vertical slider) que enva nmeros
a ctlout, se autogenera creando un objeto con la palabra reservada vslider. El vslider se puede
configurar pulsando con el botn derecho sobre l y seleccionando Propiedades, de forma que se
pondr ese rango de 0 a 127. Con hslider se crear la versin horizontal, el hslider.

15

I N T R O D U C C I N

P U R E

D A T A

LECCIN

4
Lgica condicional con spigot y
moses

a lgica condicional es la tcnica con la que se hace que los parches tomen
decisiones en base a las entradas. La lgica condicional ms simple es probar si
algo es cierto, si algo es cierto realiza tal accin. Se actuar de forma similar
que en los if de un lenguaje de programacin, si algo es cierto haz la accin A,
si es falso, haz la accin B.

Spigot
Deja pasar lo que entra por su inlet izquierdo o hot inlet y lo expulsa por su outlet slo
si su inlet derecho o cold inlet recibe algo distinto de 0. Acta como si fuera una llave
de paso.

Se comparan dos nmeros con el objeto >. Si esa


comparacin es cierta se devuelve 1 y si no lo es se
devolver 0. La certeza de la comparacin provocar
que el spigot se abra y ese mensaje 1 active el trigger
y por tanto se genere sonido. Si la comparacin es
falsa el spigot quedar cerrado, el trigger no se
activar y no sonara ningn sonido.

FIGURA 16. SPIGOT.

16

I N T R O D U C C I N

P U R E

D A T A

Moses
Si el valor de su hot inlet o inlet izquierdo es menor que su cold inlet o inlet derecho
(argumento), ese valor, saldr por su outlet izquierdo. Si el valor de hot inlet o inlet
izquierdo es mayor o igual que su cold inlet o inlet derecho (argumento), ese valor,
saldr por su outlet derecho.

Se comparan dos nmeros, el


de entrada del moses y el de su
argumento, 50. Si el valor de
entrada es < 50 sonarn las
notas 60 y 67 asociadas a su
outlet izquierdo. Si el valor de
entrada es 50 sonarn las
notas 66 y 71 asociadas a su
outlet derecho.

FIGURA 17. MOSES.

17

I N T R O D U C C I N

P U R E

D A T A

LECCIN

5
Secuenciador simple

U
travs

n secuenciador es dispositivo fsico o programa que permite reproducir


sonidos de forma secuencial mediante una interfaz de control conectada a
uno o mas instrumentos musicales electrnicos. En este caso, la interfaz de
control ser MIDI y estar gobernada por Pure Data y FM8 (siempre a
de
loopMidi)
se
encargar
de
cargar
el
instrumento.
Aqui un secuenciador simple con 8 notas
diferentes. Para ello se crea un contador con
el objeto counter de los mensajes bang que
enve el objeto metro a una frecuencia
controlada y que podr cambiarse en
ejecucin. A ese contador se le aplicar la
operacin %8 para obtener una secuencia de
8 valores de 0 a 7. Estos valores determinarn
la nota que suena con ayuda de un selector
implementado mediante el objeto sel.

Sel

FIGURA 18. SECUENCIADOR SIMPLE.

El objeto sel tiene tantos outlets como


argumentos se le aadan mas uno extra. Su
funcionamiento es sencillo, compara el valor
de entrada con esos argumentos y si ese valor
es igual al n-esimo argumento enviar un
mensaje bang por su n-esimo outlet, si no
coincidiera con ningn de sus argumentos el
bang se enviara por el outlet extra.

FIGURA 19. SEL.

18

I N T R O D U C C I N

P U R E

D A T A

Counter
Cuenta el nmero de bangs recibidos.

CONTADOR HASTA 50

CONTADOR QUE EMPIEZA EN 50 Y HASTA 100

FIGURA 20. INICIALIZACIN DE COUNTER


FIGURA 21. INLETS Y OUTLETS DE COUNTER.

19

I N T R O D U C C I N

P U R E

D A T A

LECCIN

6
Nmeros aleatorios

n este captulo se exponen varios objetos de Pure Data que resultan muy
tiles para generar sonidos electrnicos. Se trata de objetos que generan
nmeros aleatorios con cada bang que reciben. Estos nmeros podrn ser
enteros o decimales e incluso podrn ir creciendo o decreciendo
aleatoriamente. Se ver como manejar probabilidades mediante el uso de nmeros
aleatorios y el objeto moses visto en la anterior leccin 4.

Random

FIGURA 22. RANDOM.

random genera nmeros aleatorios entre 0 y n-1 a ritmo de los


mensajes bang recibidos por su hot inlet, siendo n el
argumento o cold inlet del objeto. Con seed se asegura que
siempre genere la misma secuencia de nmeros aleatorios. En
el patch de la figura 22 se generarn numero aleatorios de 0 a
99 cada segundo, al enviar el mensaje seed 17, se generar la
secuencia 6, 31, 58, 7, 11, 41
randomF es igual que random salvo que genera nmeros
decimales.

Nota

El objeto rojo de la figura 23 es un objeto toggle, autogenerado al escribir la palabra


reservada toggle o tgl. Al hacer clic enviar un mensaje bang y se marcar con un
aspa, al hacer clic de nuevo se enviara un mensaje de stop y desaparecer el aspa.

TripleRand

FIGURA 24. TRIPLERAND.

tripleRand genera una lista de 3 nmeros aleatorios decimales


entre 0 y n-1, siendo n el argumento de creacin. Con el
mensaje 30 10 2 se establece el rango mximo de cada
nmero de la lista.
unpack desempaqueta la lista y las separa en tantos nmeros
como argumentos tenga.
20

I N T R O D U C C I N

P U R E

D A T A

Drunk

FIGURA 25. DRUNK.

drunk genera nmeros aleatorios entre 0 y n-1 pero estos irn


ascendiendo y descendiendo aleatoriamente pero con una
tendencia ascendente primero y descendente despus. Tal
como el nombre indica, los nmeros irn tambalendose
como un borracho (drunk) pero poco a poco llegar a su
destino. Con el mensaje 20 se actualiza el limite superior a 20
(0-19). Con el mensaje 5 se hace que los saltos o
incrementos sean mayores.

En la leccin 4 se vi como el objeto moses compara su hot inlet (H) y su cold inlet (C)
de forma que si H<C se enva un mensaje bang por su outlet izquierdo y si H C el
mensaje bang se enva por su outlet derecho. Si como entrada de moses 50 se
conectara el outlet de un random 100 se conseguir que haya un 50% de posibilidades
de que el mensaje bang salga por cada outlet del moses.
En el patch de la figura 26 se usa random y moses
para repartir las posibilidades de que suene una
nota u otra de la forma siguiente:
-

Con el mensaje 10 (moses 10) se


consigue que la mayora del tiempo suene
la nota B porque el 10% de los bangs se
enviaran por el outlet izquierdo y el 90%
se enviarn por el derecho.

Con el mensaje 50 (moses 50) se


consigue que ambas notas suenen
aproximadamente las mismas veces
porque cada outlet tiene un 50% de
posibilidades de enviar el bang.

Con el mensaje 90 (moses 90) se


consigue que la mayora del tiempo suene
la nota A porque el 90% de los bangs se
enviaran por el outlet izquierdo y el 10%
se enviarn por el derecho.

FIGURA 26. LGICA DE PROBABILIDADES


CON RANDOM Y MOSES.

21

I N T R O D U C C I N

P U R E

D A T A

LECCIN

7
Enviar y recibir (send & receive)

n Pure Data se puede enviar mensajes de un objeto a otro sin necesidad de


conectarlos con cables. Esto se consigue con el par de objetos send y receive (o
s y r de forma abreviada). El objeto send enva un mensaje (en la aplicacin
Pure Data se usa el enviar smbolo) desde un lugar del patch a otro objeto que
est muy separado de su origen, con receive se obtiene el valor de ese mensaje, para
ello solo se tendr que usar el mismo nombre como argumento al crear los objetos
send y receive. Esta estrategia dar limpieza y legibilidad a los parches y permite que un
mismo mensaje enviado pueda ser usado en varios objetos simultneamente y todo ello
sin necesidad de cables.
En el patch de la figura 27 se representa un
ejemplo de uso de send y receive. Concretamente
el tempo o frecuencia, con la que el metro enva
bangs a makenote y por tanto se genera un
sonido, es usado tanto como para el metro como
para establecer la duracin de la pulsacin en
makenote (inlet derecho). Al hacer clic en los
mensajes 500 o 750 se va cambiando este valor
tempo.

Knob
FIGURA 27. USO DE SEND Y RECEIVE.

FIGURA 28. PROPIEDADES DEL KNOB.

El objeto representado por el crculo abierto de


arriba a la izquierda representa un knob.
En los aparatos de msica electrnica el knob es
un botn que al girarse manipula el sonido. Se
autogenera al escribir la palabra reservada knob.
Al hacer clic con el segundo botn del ratn
sobre el knob y seleccionar Propiedades se
acceder a la ventana KNOB Propiedades donde
aparte de configurar su lmite inferior (izquierda) y
su rango superior (derecha)en la casilla Enviar
smbolo (send) se pondr tempo para poder
controlar ese tempo girando el knob. Tambin se
podra usar su outlet en vez de enviar smbolo
(send).

22

I N T R O D U C C I N

P U R E

D A T A

LECCIN

8
El objeto expr

as operaciones matemticas en Pure Data se hacen con objetos que


representan operadores y operandos y triggers para determinar el orden de
ejecucin de dichas operaciones. Con el objeto expr se evitar toda esa
complicacin, pudiendo hacer esas operaciones deforma natural en una simple
lnea y determinando el orden con el uso clsico de parntesis.

FIGURA 29. USO DE EXPR.

El objeto expr tendr tantos inlets como variables $f se usen en las expresiones y
tendr tantos outlets como expresiones se definan dentro del objeto expr. En el
ejemplo de la figura 29 se usan 2 variables ($f1 y $f2, por tanto dos inlets) y solo hay
una expresin (un outlet).
En el patch de la figura 30 se tiene un
ejemplo de expr con 4 expresiones separadas
por ; que generan 4 outlets. Si la entrada de
la expresin viniera en forma de lista, esta
sera interpretada de izquierda a derecha.
Debajo se ven los distintos resultados si se
hiciera clic sobre el bang o si se hiciera sobre
la lista 45 457.

FIGURA 30. EXPR CON VARIAS EXPRESIONES.

23

I N T R O D U C C I N

P U R E

D A T A

FIGURA 31. EXPR Y EXPRESIONES LGICAS.

reacTIVision y Tuio Client


Se har un ejemplo prctico de uso del objeto expr. Para ello se conectar Pure Data a
reacTIVision que es un software opensource y multi-plataforma para reconocimiento de
patrones fiduciales creado en la Universidad Pompeu Fabra de Barcelona. Como puente de
conexin entre reacTIVision y Pure Data existe un software llamado Tuio Client que
tambin est disponible para otros lenguajes de programacin.
La idea general es que Pure Data genere sonido al
mover los fiduciales delante de la cmara web.
Los fiduciales no son mas que unos dibujos o
patrones numerados que reacTIVision es capaz
de distinguir e incluso detectar su movimiento.
Tuio Client facilita una serie de parches para
aadir a Pure Data que permitir usar el objeto
TuioClient el cual recibe informacin (mensaje)
desde reacTIVision. La nica labor ser entender
e interpretar esos mensajes a nuestro antojo con
Pure Data.
FIGURA 32. FIDUCIAL 7.

24

I N T R O D U C C I N

P U R E

D A T A

Puede ser que no se disponga de cmara web en el ordenador. La solucin es usar el


simulador Tuio Simulator que incluye una abstraccin de los 36 fiduciales y una mesa
similar a la del reactable.
Tanto Tuio Simulator como Tuio
http://reactivision.sourceforge.net/.

Client

se

pueden

descargar

desde

FIGURA 33. DESCARGA DE TUIO SIMULATOR Y TUIO CLIENT.

No es necesario instalar Tuio Simulator, bastara con descomprimir el .zip y ejecutar


TuioSimulator.jar. El .zip de Tuio Client contiene una carpeta que se deber incluir en
el path de Pure Data. Para seleccionando en la barra de men EditarPreferencias y
en la ventana que se abre aadir la carpeta TUIO_PureData que se descomprimir
previamente.

25

I N T R O D U C C I N

P U R E

D A T A

FIGURA 34. TUIO SIMULATOR.

FIGURA 35. PATCH QUE CALCULA LA DISTANCIA ENTRE FIDUCIALES 1 Y 4

Cada vez que se mueve un fiducial sobre la mesa (zona blanca del Tuio Simulator), el
objeto TuioClient recibe mensajes con informacin de ese movimiento. Hay 3 tipos de
movimientos: addObject, cuando un fiducial entra en la mesa, updateObject, cuando un
fiducial cambia su posicin en la mesa y removeObject, cuando un fiducial sale de la mesa.

26

I N T R O D U C C I N

P U R E

D A T A

Observes este tipo de mensajes en la


consola aadiendo un objeto print al
objeto TuioClient. En la figura 36 se
puede observar el rastro de mensajes
que ha dejado la simple accin de
introducir el fiducial 6 en la mesa y
retirarlo de ella.
En el mensaje updateObject 9 6
0.534375 0.075 0 0 0.322581 0 -3.26926
0. El numero 9 es un contador que se
incrementa cada vez que un fiducial
entra en la mesa.

FIGURA 36. CONSOLA MOSTRANDO FIDUCIAL 6.

El numero 6 es el identificador del fiducial. El par (0.534375 0.075) se relacionan con


las coordenadas (X, Y) dentro de la mesa y el resto de nmeros estn relacionados con
la rotacin del fiducial.
En la figura 35 se presenta el parche que interpreta esos mensajes. Con el objeto route se
consigue canalizar el mensaje de acuerdo al primer elemento del mensaje quitando del
mensaje ese primer elemento. Por tanto el mensaje updateObject 5 1 0.251563
0.308333 0 0 0 0 0 0 har que por el tercer outlet salga 5 1 0.251563 0.308333 0 0 0 0 0
0. Con el objeto zl slice 1 se dividir el mensaje en dos trozos a partir del 1er carcter, el
trozo izquierdo con ese primer carcter incluido saldr por el outlet izquierdo y el trozo
derecho saldr por el outlet derecho (ver leccin 13). As se habr quitado el contador
de fiduciales que no se necesita. De nuevo con el route se canaliza cada mensaje a su
outlet de forma que por el outlet izquierdo de route 1 4 saldrn los mensajes
relacionados con el fiducial 1 y por el outlet derecho saldrn los mensajes relacionados
con el fiducial 4. Con unpack f f se separarn las coordenadas X e Y del elemento.

FIGURA 37. CALCULO DE LA DISTANCIA.

La frmula de la figura 37 calcula la distancia


entre dos objetos con coordenadas (x1, y1) y (x2,
y2) respectivamente, que es justamente lo que
hace el objeto expr en su primera expresin
(outlet izquierdo). Por el segundo outlet saldr un
0 cuando esa distancia sea menor o igual a 0.5 y 1
cuando sea mayor a 0.5, para as determinar
mediante el objeto sel que nota sonar.

Ver en youtube: Mini reactable con Pure Data, FM8 y reacTIVision:


https://www.youtube.com/watch?v=jS8XdQrlTa4

27

I N T R O D U C C I N

P U R E

D A T A

LECCIN

9
Subpatching

ualquier canvas de un parche puede contener subparches que contienen sus


propios canvas pero que comparten el mismo archivo fsico que el parche
principal, al guardar el parche principal se guardaran todos sus subparches.
Los subparches tienen inlets y outlets que se deben definir, por tanto, se
parecen a los objetos regulares. El subpatching es un mtodo para ocultar cdigo,
abstraerse de l y as dar limpieza y orden al programa final. Para crear un subparche se
crear un objeto que empiece por pd, un espacio y el nombre del subparche de tal
modo que al hacer clic en ese objeto se abrir una ventana mostrando el interior del
subparche en el que se podrn crear ms subparches.
Para
establecer
comunicacin entre el
parche inicial y el
subparche se usarn
objetos inlet y outlet de
manera que al crear un
objeto inlet dentro del
subparche le aparecer el
cuadradito de inlet al
objeto pd del parche
principal. Los outlets
siguen la misma lgica.
El orden de los inlets del
objeto pd del parche
principal ser el orden de
creacin de los objetos
inlet en el subparche.

FIGURA 38. SUBPATCHING

Nota

El objeto azul se denomina hradio y es bsicamente un selector de 0 a n-1, siendo el n el


tamao, que puede ser modificado en las propiedades del objeto. Se autogenera creando un
objeto y escribiendo la palabra reservada hradio. En este caso el selector de tempo (Tempo
chooser) tiene tamao 4 y por tanto enviara valores de 0 a 3. Estos valores se reciben con el
objeto receive r sequence. Previamente, y como se vi en la pasado leccin 7, en las
propiedades del hradio se rellenar el campo Enviar smbolo con el valor sequence.

28

I N T R O D U C C I N

P U R E

D A T A

LECCIN

10
A Beat Machine

na caja de ritmos (beat machine) es un instrumento musical electrnico que


permite componer, programar y reproducir patrones de ritmo mediante un
secuenciador interno y un generador de sonidos de percusin. A diferencia
de un secuenciador convencional, la caja de ritmos se basa en la
programacin de patrones, que son grupos limitados de compases que se reproducen
de forma cclica. Esto significa que una vez puesta en marcha, la caja de ritmos
reproducir el mismo patrn en bucle (loop) hasta que no se d la orden de pasar a
otro.
En este prctico captulo se construir una caja de ritmos con Pure Data y se conectar
a Reason una vez ms mediante loopMidi. Reason es un software musical avanzado que
emula todo tipo de instrumentos musicales y que permite ser controlado con un
controlador midi. Precisamente ese controlador midi es el que se crear.

Hay que asegurarse que Pure Data tiene como dispositivo de salida el puerto midi
virtual loopMidi (MediaPreferencias de Midi) y que Reason tiene como dispositivo
de entrada midi el puerto midi virtual loopMidi (EditPreferences, Page: Advanced,
BUS A: loopMidi). De esta forma se asegurar la conexin midi entre Pure Data y
Reason. Ahora se activar el BUS A, asociado a loopMidi en la interfaz de hardware
de Reason pulsando en el botn ADVANCED MIDI. Bajar una nueva ventana en
la que se podr seleccionar el BUS A. Obsrvese que aparece la leyenda loopMidi.
Para la caja de ritmos se usar un instrumento denominado Dr. Octo Rex Loop
Player. Se activar haciendo clic en la barra de men de Reason y seleccionando
CreateDr. Octo Rex Loop Player. Una se vea el aparato, el cual es azul, se volver a la
zona ADVANCED MIDI DEVICE y en el Channel 1 se seleccionar dicho
aparato. Hay que asegurarse que las conexiones traseras son correctas. Para ello
pulsando el tabulador se mostrar la parte de atrs de los aparatos. Hay que asegurarse
que las salidas AUDIO OUTPUT del aparato AUDIO I/O estn conectadas con la
salida principal (MAIN OUTPUT) del Dr. Octo Rex. (Ver figuras 39 y 40 de la
pgina
siguiente).
La idea es hacer un parche en Pure Data y enviar las notas midi al ADVANCE MIDI
de Reason va loopMidi. Estas notas sern interpretadas con el instrumento Dr. Octo
Rex en el que se podrn cargar beats y melodas prediseadas.

29

I N T R O D U C C I N

P U R E

D A T A

FIGURA 39. REASON

FIGURA 40. CABLEADO TRASERO

30

I N T R O D U C C I N

P U R E

D A T A

La estructura principal del parche ser un objeto metro que genere las notas con la
ayuda de makenote. El BPM se controlar mediante el subparche bpm que se
encargar de hacer el clculo para pasar de bpm a milisegundos porque el inlet derecho
o cold inlet del objeto metro para la frecuencia de los bangs viene determinado en
milisegundos. Por tanto, una entrada o inlet del subparche ser el bpm. Como segundo
inlet de entrada se configurar un selector de nota para poder optar por 4 velocidades
distintas de bpm.

FIGURA 41. PARCHE PRINCIPAL


FIGURA 42. SUBPARCHE (BPM)

El ciclo inicial de la caja de ritmos contendr 8 notas, de la 42 a la 49. Para hacer que
esa longitud del ciclo de las notas pueda cambiarse sobre la marcha y que sea desde 1
hasta 8, se crea el hradio Cycle length y as ir cambiando esa operacin mdulo (%)
sobre
la
marcha
con
la
ayuda
del
mensaje
cycleNotes.
Tambin se crea un hslider (slider horizontal) para poder cambiar el offset de creacin
de notas y as desplazarse por el teclado y no estar limitado solo al rango 42-49,
mensaje
offset.

31

I N T R O D U C C I N

P U R E

D A T A

Los vsliders (vertical slider) Freq y Res son para enviar mensajes de control al puerto
MIDI y as controlar los botones Freq y Res de la botonera FILTER del Dr. Octo
Rex. Segn la documentacin de Reason, para el instrumento Dr. Octo Rex los
nmeros de mensajes de control que gobiernas esos botones son el 74 y 71.

FIGURA 43. DOCUMENTACN CONTROL MIDI DE REASON

Ver en youtube: Beat Machine with Pure Data and Reason:


https://www.youtube.com/watch?v=SCM2XEXAx4I

32

I N T R O D U C C I N

P U R E

D A T A

LECCIN

11
Grficos con tablas y arrays

as tablas y los arrays suelen ir de la mano en Pure Data. La tabla es un array


almacenado en un subparche y el array es la representacin grfica de esa tabla
en el canvas. Al crear una tabla se crea un objeto sin inlets ni outlets y al hacer
clic sobre el se abre el subparche que contiene el array como la representacin
grfica de la tabla. Se entender fcilmente con el ejemplo de la figura 44.

FIGURA 44. TABLA Y SU SUBPARCHE ARRAY

Para crear el array directamente en el canvas principal sin tener que recurrir a un
subparche se seleccionar en la barra de men PonerMatriz.

Tabwrite
Existen varias formas para escribir en una tabla, una de ellas es con el objeto tabwrite.
En su hot inlet se indicar el valor a guardar y en el cold inlet o inlet derecho se indicar
el ndice donde guardar ese valor.

FIGURA 45. TABWRITE.

El ndice equivale a la coordenada X y el valor a la


coordenada Y. Primero se marca el ndice y luego se
marca el valor a guardar en dicho ndice.
Si se enviara un mensaje con un par de nmeros al
hot inlet el primero sera considerado el valor y el
segundo el ndice.

33

I N T R O D U C C I N

P U R E

D A T A

Otra forma de escribir en una tabla es usando un objeto mensaje en el que se indicar
el nombre de la tabla, el ndice en el que se empezar a guardar valores y una lista de
valores.

FIGURA 46. ESCRITURA EN TABLA CON


MENSAJE.

Con el valor 5 se indica que es el primer ndice en el


que se empezara a guardar valores, por tanto en el
ndice 5 se guardara 0.2, en el 6 se guarda 0.5, en el 7
se guarda -0.3 y en el 8 el valor 0.6.

Tabread
Para leer de una tabla se usa el objeto tabread. En su hot inlet se indicar el ndice que se
quiere leer y por su outlet se enviar el valor.

FIGURA 47. TABREAD.

Un uso muy til de tabread es como secuenciador de notas de forma que una tabla
almacena las notas que sonarn en ese orden. Para ir cambiando de notas musicales
bastar con ir enviando distintos mensajes de escritura en la tabla.

FIGURA 48. USO DE TABREAD COMO SECUENCIADOR.

34

I N T R O D U C C I N

P U R E

D A T A

Con el uso de mensajes tambin se podr cambiar la apariencia y configuracin del


array. Con resize se consigue que el array muestre solo el rango de ndices que le ordene.

FIGURA 49. RESIZE.

Para cambiar las dimensiones en altura y anchura se usa bounds. El primer valor (0)
indica el ndice de inicio del grfico en su eje horizontal, el segundo valor (1) indica la
altura del grfico hacia arriba, el tercer valor (5) indica el ndice final del grfico en su
eje horizontal y el cuarto valor (0) indica la altura del grfico hacia abajo.

FIGURA 50. BOUNDS.

Con xticks y yticks se podrn aadir marcas tanto al eje vertical como al horizontal. Con
el primer valor se indica el valor a partir del cual se pondrn las marcas, el segundo
valor es para indicar el espacio entre las marcas y el tercero para indicar cada cuantas
marcas se pondr una marca ms grande.

FIGURA 51. XTICKS / YTICKS.

35

I N T R O D U C C I N

P U R E

D A T A

Para aadir etiquetas se usa xlabel y ylabel. El primer valor indica la separacin entre el
eje y la etiqueta y el resto de valores son las etiquetas a aadir.

FIGURA 52. XLABEL / YLABEL.

El objeto expr resulta muy til para leer tablas. En la figura 53 se aprecia un ejemplo de
su uso.

FIGURA 53. SECUENCIADOR LEYENDO UNA TABLA CON EXPR.

36

I N T R O D U C C I N

P U R E

D A T A

LECCIN

12
Objetos tiles y manejo de
listas

as listas y su manipulacin podran suponer un manual completo. Usando slo


operaciones con listas, Pure Data tiene las mismas capacidades que un lenguaje
de programacin completo como LISP. A parte de las operaciones con listas
definidas en Pure Data existen otros paquetes de operaciones con listas para
aadir a Pure Data como por ejemplo la coleccin list-abs de Frank Barknecht
(http://puredata.info/author/fbar) que contiene multitud de operaciones avanzadas de
ordenado, insercin, bsqueda y operaciones condicionales. En este captulo solo se
vern algunos simples objetos de bsicas operaciones con listas.

Pack / Unpack
Con el objeto pack se empaquetan datos de distinto tipo en una lista y con unpack se
desempaquetan.

FIGURA 54. PACK Y UNPACK.

La cantidad y tipos de los datos a empaquetar o


desempaquetar vienen determinados por los
argumentos que acompaen al objeto pack o
unpack. En el caso de pack se crearan tantos
inlets como datos se quieran empaquetar, en el
caso de unpack se crearan tantos outlets como
datos se quieran desempaquetar.

37

I N T R O D U C C I N

P U R E

D A T A

$
Un objeto mensaje puede funcionar como una plantilla. Cuando un mensaje contiene
$1 se entiende que se recibir un mensaje de entrada en forma de lista.

Cada elemento con el carcter dlar $1, $2,


$3, se corresponder con los elementos de
una lista de izquierda a derecha o siguiendo el
orden definido por los caracteres dlar.
FIGURA 55. USO DE $.

zl
slice / ecils

Divide una lista en dos a partir de un ndice dado, el primer trozo saldr por su outlet
izquierdo y el segundo por su outlet derecho. Con slice el ndice se cuenta desde el
principio y con ecils desde el final.

FIGURA 56. ZL SLICE Y ZL ECILS.


group

Devuelve grupos de elementos de la lista


dada por su hot inlet, cada grupo tendr
tantos elementos como se indiquen en su
argumento o por su cold inlet.
FIGURA 57. GROUP.
join

Une dos listas.

38

I N T R O D U C C I N

P U R E

D A T A

FIGURA 58. JOIN.


union

Enva el contenido comn y no comn de


las litas, o sea, el contenido de ambas listas
sin repetir ninguno.
FIGURA 59. UNION.
sect

Solo enva el contenido comn de las litas.

FIGURA 60. SECT.

Bondo
Como todos los objetos, el objeto pack para empaquetar una lista slo efectuar el
empaquetado cuando su hot inlet o inlet izquierdo sea el que se active. Para hacer que
el pack u otro tipo de objeto haga su funcin al activarse cualquiera de sus inlets se
utilizar el objeto bondo.
El bang del final se activar al modificar
cualquiera de los objetos nmero del
principio. Sin el bondo, slo se activara al
tocar el objeto nmero que corresponde
con el hot inlet.
FIGURA 61. BONDO.

El bondo es muy til para el uso de


funciones en el que cambie alguno de sus
parmetros de entrada. Se usa mucho con
el objeto expr.

FIGURA 62. BONDO Y EXPR.

39

I N T R O D U C C I N

P U R E

D A T A

LECCIN

13
Abstracciones

uando hay cierta funcin o proceso que se repite y se usa mucho en tus
parches de Pure Data, una buena idea es crear una abstraccin de esa funcin
o proceso de forma que lo podrs modificar una sola vez y su funcionalidad
seguir viva en todos los parches en los que se use. Es una estrategia de
modularizacin.
Para crear una abstraccin basta con crear un parche con el proceso y referenciarlo en
otros parches con el mismo nombre con el que se guard. Vemoslo con detalles.
Un ejemplo de lecciones anteriores sera el clculo de los milisegundos a partir de un
bpm dado para poder trabajar cmodamente con el objeto metro que como ya se vi
funciona recibiendo la frecuencia en milisegundos.

FIGURA 63. BPM A MILISEGUNDOS.

FIGURA 64. USANDO LA NUEVA ABSTRACCIN.

40

Se crear un parche nuevo


llamado
bpm-mseg.pd. Se aadir ese
parche
al
path
en
Editar
Preferencias, indicando
la carpeta donde se guard el
parche. Es aconsejable tener
todos
los
parches
de
abstracciones
ordenados
y
guardados en una misma carpeta
que sea la que se aada al path.
Con el objeto f $1 se har que la
abstraccin puede recibir un
argumento adems del inlet. Para
usar el nuevo objeto slo se
tendr que escribir bpm-mseg, la
cual pasa a ser palabra reservada.
Es muy similar a los subparches,
pero con las abstracciones se crea
un archivo aparte mientras que el
contenido de un subparche se
guarda todo en el mismo archivo.

I N T R O D U C C I N

P U R E

D A T A

LECCIN

14
Leyendo audio con readsf~

on el objeto readsf~ se podr leer un archivo de sonido de tipo wav o aiff. En


primer lugar se deber abrir el archivo de sonido usando el mensaje open y
el objeto readsf~ comenzar a leer inmediatamente, pero la salida slo
aparecer despus de enviar un 1 o el mensaje start, momento en el que
se reproducir el audio. Con un 0 o un mensaje de stop se parar la reproduccin.

Antes de usar el objeto readsf~ hay que asegurarse que el audio DSP (digital signal
processor) est encendido. Se activar seleccionando en la barra de men MediaDSP
Encendido o marcando el check correspondiente en la consola de Pure Data. Tambin
se puede hacer con el mensaje pd dsp 1.

FIGURA 65. ACTIVAR DSP.

Vase un ejemplo de lectura bsica de un archivo de sonido:

FIGURA 66. REPRODUCCIN BSICA.

Lo primero ser enviar el mensaje open para


abrir fsicamente el archivo. Con start comenzar
la reproduccin del mismo. El objeto readsf~
tendr tantos outlets de salida de audio como
canales se indiquen en su argumento (2 en nuestro
caso) ms el outlet de mas a la derecha que enviar
un bang cuando la reproduccin haya finalizado.
Con el objeto dac~ se enviar la seal a la placa de
sonido, sus argumentos 1 2 son para indicar el
nmero de canales. Su hot inlet se corresponde
con el lazo izquierdo del auricular y cold inlet con
el lado derecho.

41

I N T R O D U C C I N

P U R E

D A T A

LECCIN

15
Osciladores osc~

ras toda seal de audio en Pure Data hay un oscilador. El elemento


fundamental utilizado en la sntesis auditiva, al igual que en muchas otras
tcnicas de sntesis, es el oscilador. Un oscilador digital es una unidad
generadora que lee cclicamente una funcin para generar una onda peridica.
Los osciladores se usarn para generar sonido y se podrn unir ms de uno para poder
modular la amplitud de la onda y as crear nuevos sonidos. Los osciladores de Pure
Data tambin pueden leer y escribir en tablas y otros tipos de datos.
Se usar una seal de onda mediante un oscilador para crear un grfico dentro de un
array a modo de osciloscopio.

El objeto mtof transforma una nota


MIDI a su frecuencia numrica, con el
objeto sig~ se traduce esa seal
numrica a seal de audio. El objeto
osc~ crea la onda sinusoidal con una
frecuencia inicial de 440 Hz. Esta seal
de audio es enviada al objeto tabwrite
que la pintar en el array oscil e ir
refrescando ese grfico cada 50
milisegundos, y al objeto dac~ para
que la pase a la salida de la placa de
sonido. Con el objeto env~ se podr
ver numricamente la amplitud de la
onda.
FIGURA 67. OSCILADOR.

Nota

Los objetos de pd que manejan seal de audio se distinguen por dos caractersticas: llevan el signo
~ junto al nombre del objeto, y el cable por donde circulan las muestras de audio son ms
gruesos que los de control.. As por ejemplo el objeto que suma dos seales de audio se llama +~.

42

I N T R O D U C C I N

P U R E

D A T A

Sntesis de AM (Modulador de amplitud)


La manipulacin de la amplitud es una forma genial de familiarizarse con los
osciladores de Pure Data y la generacin de sonidos. Manipular la amplitud hace el
efecto de aumentar el volumen de la seal. En la figura 68 se muestra una seal de
audio principal y su manipulacin mediante un oscilador alternativo haciendo las veces
de modulador de la seal.

FIGURA 68. MODULADOR DE AMPLITUD.

A: Seal principal, tambin llamada carrier. Con el objeto line~ se genera la seal
principal, el mensaje 5 10000 hace que se genere una seal con una amplitud 5
progresivamente en 10000 milisegundos (10 segundos). Con el mensaje 0 5000 se
cambia en 5000 milisegundos (5 segundos) a una amplitud de 0, es decir, se apaga la
seal.
B: Seal del modulador. Solapando otro objeto osc~ a o modo de modulador. Con el
slider horizontal se manipular la amplitud de la seal. Incrementando progresivamente
el knob se le dar frecuencia a dicha seal hasta ver como se aprecia la aparicin de la
misma en el array.
43

I N T R O D U C C I N

P U R E

D A T A

Sntesis de FM (Modulador de frecuencia)


Mientras que con la modulacin de la amplitud se consiguen cambios en el volumen de
la seal, la manipulacin de la frecuencia se usa para hacer cambios peridicos en la
frecuencia de la onda.
En este ejemplo se crean dos ondas y se unirn para crear un sonido nuevo muy similar
al tpico sonido de la radio.
Carrier es la seal principal que ser
modulada. El modulador consiste en
un oscilador con su propia frecuencia
que tendr un factor de multiplicacin
controlado
por
index.
Al
incrementar este factor se observa
como la onda empieza a vibrar a una
frecuencia determinada por freq. En
trminos generales la onda principal se
mueve arriba y abajo en funcin del
modulador y la parte del regulador de
amplitud har que la onda sea mas
ancha o mas estrecha haciendo las
veces de volumen, con el objeto line~
se evitan los clicks tpicos al cambiar de
amplitud haciendo que el cambio sea
progresivo.
En la zona inferior se consigue que las
variables frecuencia, factor de
multiplicacin y amplitud se regulen al
azar.

FIGURA 69. MODULADOR DE FRECUENCIA.

44

I N T R O D U C C I N

P U R E

D A T A

LECCIN

16
Audio avanzado con tabread4~

n este captulo se cargar en Pure Data un archivo de audio para manipularlo. Se


usar una tabla para almacenar la onda del audio y tabread4~ para leer de ella a
nuestro antojo.

45

I N T R O D U C C I N

P U R E

D A T A

FIGURA 70. REPRODUCTOR CON TABREAD Y SOUNDFILER.

1): Se crean los dos arrays donde se pintarn las ondas de audio del archivo, uno para el
canal derecho y otro para el izquierdo.
2: Con openpanel se abre el audio en cuestin. Con 'read -resize' y soundfiler se crean los
dos arrays donde se pintarn los canales del audio. soundfiler devolver el nmero total
de samples que han sido ledos.
3: Dividiendo la frecuencia de muestreo del audio (44100) entre el n total de samples
se obtiene la velocidad de reproduccin del mismo.
4: Esta velocidad de reproduccin actuar como hot intlet de pashor~ que devolver la
seal sonora preparada para que tabread4~ las lea y las pase al dac~ para su
reproduccin en la tarjeta de sonido.
5: Con el objeto snapshot~ se podr monitorear la posicin de reproduccin en un slider
a ritmo del metro que ir refrescando esa posicin cada 50 milisegundos.
6: Manipulando el hot inlet del objeto phasor~ se podr cambiar la velocidad de
reproduccin e incluso reproducir marcha atrs. Con el inlet derecho se podrn hacer
bsquedas directas.
Ver en youtube: Audio Playback patch with Pure Data [tabread4~]:
https://www.youtube.com/watch?v=nToPeudym1U

46

I N T R O D U C C I N

P U R E

D A T A

LECCIN

17
Open Sound Control (OSC)

os objetos OSC se utilizan para compartir datos musicales a travs de una red.
OSC es un estndar que da estructura y formato a los mensajes de datos
musicales. OSC permite intercambiar informacin con multitud de dispositivos
como el iPhone (a travs de Osculator), Dj Hero o Guitar Hero de PlayStation. En
este captulo se usar una aplicacin musical para mvil capaz de transmitir mensajes a
Pure Data llamada TouchOSC. Concretamente se usar la versin para Android
instalada en un Samsung Galaxy S2. (http://hexler.net/software/touchosc-android).
Primero se configurar la conexin entre el ordenador y el mvil. Ambos dispositivos
debern estar conectados a la misma red wifi. En la aplicacin TouchOSC se
establecer una conexin con el PC, anotando como Host la IP del PC en cuestin y
los puertos, tanto para enviar informacin como para recibirla.

FIGURA 71. CONFIGURACIN DE TOUCHOSC.

47

I N T R O D U C C I N

P U R E

D A T A

Como implementacin de OSC en Pure Data se utilizar la implementacin mrpeach.


Ser necesario importar mrpeach aadindola al path como en captulos anteriores o
haciendo una importacin explcita en el parche con el objeto declare.

Al tocar en la aplicacin TouchOSC del


mvil cualquier botonera en un Layout
cualquiera se apreciar como en la
consola se muestran mensajes que se
podrn interpretar como notas midi,
frecuencias, vsliders, knob, etc

FIGURA 72. RECIBIR DATOS OSC.

Tambin se podrn enviar mensajes desde el PC a la aplicacin TouchOSC del mvil y


controlarla desde nuestro PC.
Primero se deber establecer una
conexin con el mvil. Se usar el
mensaje connect con los argumentos
referentes a la IP del mvil en la red
wifi y el puerto de entrada de datos.
Con el mensaje send se enviarn los
mensajes oportunos despus de
observar y estudiar previamente el
funcionamiento de los botones. As el
fader amarillo del Beatmachine es
/1/fader1 X, siendo X un valor entre
0 y 1.

FIGURA 73. ENVIAR DATOS OSC.

El mensaje debe ser empaquetado


previamente con el objeto packOSC y
luego enviado con el objeto updsend, el
cual enva un mensaje de bang por su
outlet tras establecer una conexin
exitosa.
Al activar el metro se ver como el
fader amarillo del Beatmachine se
mueve aleatoriamente con una
frecuencia de 5 milisegundos.
FIGURA 74. VISTA DEL FADER 1 DEL BEATMACHINE.

48

I N T R O D U C C I N

P U R E

D A T A

LECCIN

18
GEM

em, "Graphics Environment for Multimedia" (http://gem.iem.at/), es una


librera grfica para Pure Data con la que se pueden generar y manipular
grficos 2D y 3D y animaciones as como procesar y modificar imgenes y
videos. En este captulo se vern los objetos ms bsicos y tcnicas simples
con las que podrs iniciarte para crear proyectos de ms envergadura.

Reproduccin de video con GEM


Antes de poder reproducir un video se debera crear una pantalla donde reproducirlo,
para ello se usar el objeto gemwin que representa la pantalla.

1: Antes de crear la pantalla se deben


especificar las dimensiones con el
mensaje dimen. Con create, 1 se crear
la pantalla y con 0, destroy se eliminar.
2: gemhead activa o desactiva el
renderizado del video conectando con la
pantalla
previamente
creada.
3. pix_film se encargar del renderizado
del video. En su hot inlet recibir un
mensaje de apertura de archivo open o
un mensaje para iniciar (auto 1) o parar
(auto 0) la reproduccin. En su segundo
inlet o cold inlet se podr cambiar el
frame a reproducir, usando un hslider se
podr rebobinar adelante y atrs. En su
segundo outlet muestra informacin
sobre el video: n total de frames, ancho
y
alto.
pix_texture carga y mapea el video en
memoria.
FIGURA 75. USO DE GEM.

49

I N T R O D U C C I N

P U R E

D A T A

4. Con pix_mix se podr hacer una


fusin de dos videos distintos, pero con
las mismas dimensiones, de forma que
sus dos primeros inlets recibirn objetos
pix_film y con el tercero se controlar el
video a reproducir de forma que 0 se
corresponde con el video del primer inlet
y 1 con el video del segundo inlet. Por
defecto, 0.5, mostrar una fusin de los
dos.
FIGURA 76. PANTALLA GEM. PIX_MIX 0.5.

Manipulacin de video con GEM

FIGURA 77. TRANSLATEXYZ Y ROTATEXYZ

Con el objeto translateXYZ se podr mover la imagen de izquierda a derecha (2do inlet),
de arriba abajo (3er inlet) o de delante a atrs a modo de zoom (4to inlet).
Con el objeto rotateXYZ se podr rotar el video sobre su eje X (2do inlet), sobre su eje Y
(3er
inlet)
o
girar
el
video
(4to
inlet).
El objeto adc~ recoge el sonido del micrfono, por tanto, conectando la salida del
objeto line~ a alguno de los inlets de control de translateXYZ o rotateXYZ se
conseguir que la imagen del video se mueva al ritmo de nuestra voz. De igual forma se
podra cargar un archivo de audio y hacer que el video se mueva al ritmo de la msica.

Con el objeto pix_gain se crear una ganancia en el color. Por su 3er inlet recibir el
mensaje de ganancia en forma de 3 nmeros para los canales B (blue), G (green) y R
50

I N T R O D U C C I N

P U R E

D A T A

(red). Con pix_treshold es similar pero genera un efecto de umbral. Sus valores estarn
entre 0 y 1.

FIGURA 78. PIX_GAIN Y PIX_TRESHOLD

51

I N T R O D U C C I N

P U R E

D A T A

LECCIN

19
Abstracciones visuales

omo se vi en la leccin 13, las abstracciones en Pure Data permiten crear


cdigo reutilizable en distintos parches. De igual forma se podrn crear
documentos visuales reutilizables mediante las denominadas abstracciones
visuales. En este captulo se har un ejemplo de abstraccin visual, se crear
un VU doble reutilizable.

FIGURA 79. PROPIEDADES DEL LIENZO

Para ello se abrir un nuevo parche y se


pinchar con el segundo botn sobre el canvas
y se seleccionar Propiedades, en el dilogo
Propiedades del lienzo se marcar Dibujar
contenido. Esto crear un cuadro rojo donde
poner los elementos visuales, todo lo que quede
fuera de dicho cuadro rojo no ser visible al
usar la abstraccin. Un doble VU entra
perfectamente en un cuadro de 85x140, se
introducirn estos valores en el ancho (rango
X) y alto (rango Y) del cuadro.

FIGURA 80. DOBLE VU

Se crearn dos VU y se introducirn en el


cuadro rojo. Para evitar el solapamiento de las
etiquetas, al primero de ellos se le ocultarn
ponindole el color de la etiqueta en blanco en
las
propiedades
del
VU.
Se crearn dos objetos env~, uno por canal, y
dos objetos inlet~ y dos outlet~ que enviarn
la misma seal de audio que reciben los inlets.
Estos objetos debern quedar fuera del cuadro
rojo para evitar que se vean al usar la
abstraccin.

52

I N T R O D U C C I N

P U R E

D A T A

Se guardar el parche con el nombre vu-doble~.pd (en Windows el carcter ~ puede


dar problemas). Hay que asegurarse que este archivo se incluye en el path
(Editar
Preferencias).
Para poder usarlo slo se tendr que crear un objeto y escribir vu-doble~. El doble
VU se autogenerar mostrando solo lo que se pint dentro del cuadro rojo y dos
marcas inlets y otras dos outlets.

FIGURA 81. USO DEL VU DOBLE EN UN PARCHE

53

I N T R O D U C C I N

P U R E

D A T A

LECCIN

20
Grabando audio a disco con
writesf~

ditando sonido hay veces que se necesitarn usar los sonidos generados por
Pure Data en otras aplicaciones o incluso en un editor de ondas para
limpiarlos y masterizarlos. Con writesf~ se podr grabar a disco nuestros
sonidos y samples como archivos .wav para posteriormente disponer de ellos
a nuestro antojo. En esta leccin se vern ejemplos de grabacin de audio tanto a disco
como a memoria, para ello se usar el siguiente secuenciador basado en dos osciladores
que ira leyendo las notas desde una tabla.

FIGURA 82. USO DE WRITESF~ Y TABWRITE~

54

I N T R O D U C C I N

P U R E

D A T A

1: Con writesf~ se grabar el audio que entre por su hot inlet en 2 canales, por eso su
argumento. Previamente se abrir el archivo en el que se escribir el audio con el
mensaje open y con start y stop se controlar la grabacin. Si en el mensaje open no se
indica la ruta absoluta del archivo .wav, este se crear en el mismo directorio donde est
fsicamente el parche.
2: Para grabar en memoria con tabwrite~ se hace de forma similar pero esta vez se
grabar a un array previamente creado. Con tabplay~ se podr reproducir. tabwrite~
dejar de grabar cuando se llegue al final del array. Al crear el array (Poner
Matriz) el
tamao de este ser de 44100 por cada segundo que se quiera grabar, ya que la
frecuencia de muestreo por defecto es de 44100 Hz. Por tanto para grabar 10 segundos
se pondr un tamao de 441000.

55

I N T R O D U C C I N

P U R E

D A T A

LECCIN

21
Filtros de audio

unque en Pure Data existen multitud de filtros de audio en esta leccin slo
se vern tres filtros bsicos capaces de filtrar y manipular agudos, graves y
medios. Para ver los ejemplos se usar el reproductor que se vi en la leccin
19.

High pass
El filtro high pass agudiza la seal transformndola como su nombre indica a frecuencias
mas altas. El objeto hip~ se usa para crear este tipo de filtro. Cuanto mas alto sea el
valor que recibe por su inlet derecho mayor ser el efecto. Si observa el oscilador las
seales varan antes y despus de aplicarle el filtro. Parece que aparte de la frecuencia,
tambin afecta en cierto modo a la amplitud de la onda.

FIGURA 83. FILTRO HIP~

56

I N T R O D U C C I N

P U R E

D A T A

Low pass
El filtro low pass hace mas grave la seal transformndola como su nombre indica a
frecuencias mas bajas. El objeto lop~ se usa para crear este tipo de filtro. Cuanto mas
cercano a 0 seal el valor que recibe por su inlet derecho mayor ser el efecto. En 0 la
seal bajar tanto que dejar de orse. Vase en la figura de abajo el efecto que produce
el filtro en los osciladores. Parece que tambin afecta algo a la amplitud de la onda.
Pero se ve claramente como afecta a la frecuencia estirando la seal. Recuerda que la
frecuencia est asociada al eje horizontal y la amplitud al eje vertical.

FIGURA 84. FILTRO LOP~

57

I N T R O D U C C I N

P U R E

D A T A

Band pass
El filtro band pass acta sobre las frecuencias medias. El objeto bp~ se usa para crear
este tipo de filtro. Este objeto tiene un 3er inlet, llamado por algunos Q el cual le da
resonancia al efecto. Con Q a 0 no hay efecto diferenciable pero aumentndolo
levemente el efecto se hace notar. Este efecto parece que estiliza an mas la seal.

FIGURA 85. FILTRO BP~

El objeto vcf~ hace el mismo efecto que bp~ pero la entrada que filtra la seal es
una seal de audio en vez de un mensaje numrico. Con el objeto sig~ se traduce ese
nmero a una seal sonora.

FIGURA 86. FILTRO VCF~

58

I N T R O D U C C I N

P U R E

D A T A

LECCIN

22
Reverb and Delay

a reverberacin es el efecto por el cual un sonido se mantiene un poco mas


tiempo en el ambiente despus de que la fuente deje de emitirlo. En el mundo
del sonido la seal sin procesar se llama dry (seca) y la seal procesada wet
(mojada). En la comparacin de osciloscopio se ve claramente la seal
reverberizada que se mantiene despus de dejar de emitirse sonido.

FIGURA 87. EFECTO REVERB

wet: Nivel de seal mojada o reverberizada. Valores de 0 1. Por defecto 0.3.

dry: Nivel de seal seca o sin procesar. Valores de 0 1. Por defecto 0.

roomsize: Simula el tamao de la habitacin. Por defecto 0.85.

59

I N T R O D U C C I N

P U R E

D A T A

El efecto delay o retraso produce el clsico eco. Para hacer los efectos de delay se utiliza
un array en memoria en el que se escribir y del que se leer con un determinado
retraso. En el ejemplo se usan dos arrays, uno para cada canal. Se seguir usando el
efecto reverb para tunear aun mas la seal.

FIGURA 88. EFECTO DELAY

Con delwrite~ se reserva un array en memoria para guardar la seal con el delay indicado
en milisegundos. Con delread~ se leer ese delay indicndole en milisegundos la
longitud del mismo. Esta longitud de retraso al leer el delay ser como mximo el delay
con
el
que
se
grab.
4000
milisegundos
en
este
caso.
Con vd~ se crear ese retraso con una longitud de onda. Se podrn aplicar tantos delays
(delread o vd) como se desee hasta conseguir mltiples efectos de eco.

60

I N T R O D U C C I N

P U R E

D A T A

CASOS PRCTICOS

CASO PRCTICO I: Secuenciador simple


Este simple secuenciador trabaja con 8 notas
que van sonando secuencialmente bajo el
ritmo del objeto metro. El corazn del parche
es el objeto counter va contando las seales
de metro, con la operacin %8 determina las
diferentes notas de 0 a 7 que irn sonando
gracias al sel que acta como selector de
notas. El ritmo del metro (125, 250, 500, 750
milisegundos) puede modificarse en el
selector de tempo de la derecha.
CONTROLES
El selector de secuencia de arriba se encarga
de modificar las 8 notas que suenan. El
selector de direccin acta sobre el contador
para que invierta el orden de conteo y as las
notas sonarn en direccin contraria.

FIGURA 89. SECUENCIADOR SIMPLE

Los dos objetos knob de abajo controlan la


velocidad de la nota y la duracin de la
misma. La velocidad de la nota equivale a la
fuerza con la que se pulsara la tecla del piano
y la duracin equivaldra al tiempo que se
mantendra pulsada.
Descrgate el parche en:
http://ge.tt/4OmrQdh1/v/0?c

I N T R O D U C C I N

P U R E

D A T A

CASOS PRCTICOS

CASO PRCTICO II: Reproductor wav

FIGURA 90. REPRODUCTOR WAV

Al pulsar en botn rojo se abrir un panel para buscar el archivo wav que se quiera reproducir cuya onda se cargar en las tablas de la derecha. Soundfiler
devolver el nmero total de samples que contiene el archivo. Al dividir 44100 entre el nmero de samples se obtendr la velocidad normal de reproduccin que
se tendr que introducir en los mensajes 'para delante' y 'para atrs' con el signo menos. Con estos mensajes se podr reproducir adelante o atrs a nuestro
antojo o con el slider horizontal. RECUERDA AUMENTAR EL VOLUMEN.
VER LECCIN 16: Descrgate el parche en: http://ge.tt/6A1iUdh1/v/0?c

62

Ver en youtube: Audio Playback patch with Pure Data [tabread4~]:


https://www.youtube.com/watch?v=nToPeudym1U

I N T R O D U C C I N

P U R E

D A T A

CASOS PRCTICOS

CASO PRCTICO III: Minireactable

FIGURA 92. REACTIVISIN TUIOSIMULATOR

FIGURA 91. LECTOR REACTIVISION

VER LECCIN 16: Descrgate el parche en: http://ge.tt/4Ybszgh1/v/0?c

63

Ver en youtube: Mini reactable con Pure Data, FM8 y reacTIVision:


https://www.youtube.com/watch?v=jS8XdQrlTa4

I N T R O D U C C I N

P U R E

D A T A

CASOS PRCTICOS

El ejemplo de este caso prctico se basa en el ejemplo descrito en la LECCIN 8, por


tanto sera recomendable recordar dicho captulo.
Se har un pequeo minireactable haciendo uso de reacTIVision TUIO Simulator y
de TUIO Client para poder captar en Pure Data los movimientos de los fiduciales al
moverse.
Por tanto, el parche comienza con el TuioClient que recibe mensajes cada vez que un
fiducial se mueve. Como ya se hizo en la LECCIN 8, con el objeto route se obviarn
los mensajes que se producen al aadir el fiducial y al retirarlo, quedando slo los
movimientos que el fiducial haga por la mesa. Con el objeto unpack se separar la lista
de entrada y se aprovecharn los cuatro primeros valores. Como ya vimos, el primer
valor es un contador, el segundo valor identifica al fiducial y el par siguiente determinan
las coordenadas (X, Y) del fiducial en la mesa. Este ltimo par de valores son los que
interesan.
El valor X que determina la posicin horizontal del fiducial se asociar a una nota y el
valor Y que determina la posicin vertical del fiducial se asociar a otra nota. Se usar el
identificador del fiducial para determinar la duracin de la pulsacin de tecla de las
notas que se emitan. Recurdese que el segundo argumento (3er inlet) del objeto
makenote determina esta caracterstica.
Obsrvese como al mover el fiducial por las distintas zonas de la mesa las notas van
sonando ms agudas o mas graves dependiendo de la zona por la que pase el fiducial.
La zona superior-izquierda tiene valores bajos en posicin (X, Y) y por tanto sern
interpretados con notas bajas y graves, sin embargo, la zona inferior-derecha tiene
valores altos en posicin (X, Y) y por tanto sern interpretados con notas altas y
agudas.
Lo ms importante de este ejemplo es la conexin con reacTIVisin y el fundamento
bsico del objeto de deseo de cualquier DJ o aficionado a la msica electrnica: el
reactable.

I N T R O D U C C I N

P U R E

D A T A

ANEXO

Anexo I: Instalando Pure Data

ajad de la web la ltima versin de Pure Data. En este manual se usar PdExtended que es una versin de Pure Data ms completa que incluye libreras,
extensiones y documentacin abundante. Hay distintas versiones para
Windows,
Mac
y
Linux.
Al arrancar el programa lo primero que aparecer ser la consola.

FIGURA 93. CONSOLA DE PURE DATA.

65

I N T R O D U C C I N

P U R E

D A T A

Lo primero que se har es activar el sonido y probarlo. En la barra de men se


seleccionar MediaDSP Encendido. Para probar que el sonido funciona
correctamente se seleccionar MediaProbar audio y midi y se manipular en la
zona Test Tones. Se debera or un sonido claro por los altavoces.

FIGURA 94. PRUEBA DE SONIDO.

Si no se oyera el sonido se debera elegir la configuracin correcta del sonido en


MediaPreferencias de audio, que depender del ordenador. Las opciones suelen ser
Jack, ASIO, OSS, ALSA o un nombre relacionado con la tarjeta de sonido que tengas
instalada.

FIGURA 95. PREFERENCIAS DE AUDIO.

66

I N T R O D U C C I N

P U R E

D A T A

INDICE DE FIGURAS

ndice de figuras
FIGURA 1. OBJETO. .................................................................................................................. 7
FIGURA 2. LAS 3 CAJAS............................................................................................................ 7
FIGURA 3. USO DE OBJETOS Y MENSAJES. .......................................................................... 8
FIGURA 4. HOLA MUNDO........................................................................................................ 9
FIGURA 5. DISTINTOS BANGS............................................................................................... 10
FIGURA 6. PARCHE DE AYUDA DE METRO........................................................................ 10
FIGURA 7. SUMA ERRONEA. ................................................................................................. 11
FIGURA 8. SUMA CORRECTA. ............................................................................................... 11
FIGURA 9. TRIGGER. .............................................................................................................. 12
FIGURA 10. METRO. ............................................................................................................... 12
FIGURA 11. METRO BPM. ...................................................................................................... 12
FIGURA 12. LOOPMIDI Y FM8............................................................................................... 13
FIGURA 13.CONFIGURANDO LOOPMIDI COMO PUERTO DE ENTRADA EN FM8 ....... 14
Y DE SALIDA EN PURE DATA. ............................................................................................. 14
FIGURA 14. MAKENOTE......................................................................................................... 15
FIGURA 15. CTLOUT............................................................................................................... 15
FIGURA 16. SPIGOT. ............................................................................................................... 16
FIGURA 17. MOSES. ................................................................................................................ 17
FIGURA 18. SECUENCIADOR SIMPLE. ................................................................................ 18
FIGURA 19. SEL. ...................................................................................................................... 18
FIGURA 20. INICIALIZACIN DE COUNTER ....................................................................... 19
FIGURA 21. INLETS Y OUTLETS DE COUNTER................................................................... 19
FIGURA 22. RANDOM. ............................................................................................................ 20
FIGURA 24. TRIPLERAND. ..................................................................................................... 20
FIGURA 25. DRUNK. ............................................................................................................... 21
FIGURA 26. LGICA DE PROBABILIDADES CON RANDOM Y MOSES. ........................... 21
FIGURA 27. USO DE SEND Y RECEIVE. ............................................................................... 22
FIGURA 28. PROPIEDADES DEL KNOB. .............................................................................. 22
FIGURA 29. USO DE EXPR. .................................................................................................... 23
FIGURA 30. EXPR CON VARIAS EXPRESIONES. ................................................................. 23
FIGURA 31. EXPR Y EXPRESIONES LGICAS. .................................................................... 24
FIGURA 32. FIDUCIAL 7......................................................................................................... 24
FIGURA 33. DESCARGA DE TUIO SIMULATOR Y TUIO CLIENT....................................... 25
FIGURA 34. TUIO SIMULATOR.............................................................................................. 26
FIGURA 35. PATCH QUE CALCULA LA DISTANCIA ENTRE FIDUCIALES 1 Y 4 ............. 26
FIGURA 36. CONSOLA MOSTRANDO FIDUCIAL 6. ............................................................ 27
FIGURA 37. CALCULO DE LA DISTANCIA. .......................................................................... 27
FIGURA 38. SUBPATCHING ................................................................................................... 28
FIGURA 39. REASON............................................................................................................... 30
FIGURA 40. CABLEADO TRASERO........................................................................................ 30
FIGURA 41. PARCHE PRINCIPAL.......................................................................................... 31
FIGURA 42. SUBPARCHE (BPM) ........................................................................................... 31
FIGURA 43. DOCUMENTACN CONTROL MIDI DE REASON ......................................... 32
FIGURA 44. TABLA Y SU SUBPARCHE ARRAY..................................................................... 33
FIGURA 45. TABWRITE. .......................................................................................................... 33
FIGURA 46. ESCRITURA EN TABLA CON MENSAJE. .......................................................... 34
FIGURA 47. TABREAD. ........................................................................................................... 34
FIGURA 48. USO DE TABREAD COMO SECUENCIADOR. ................................................. 34
67

I N T R O D U C C I N

P U R E

D A T A

FIGURA 49. RESIZE................................................................................................................. 35


FIGURA 50. BOUNDS. ............................................................................................................. 35
FIGURA 51. XTICKS / YTICKS. ............................................................................................... 35
FIGURA 52. XLABEL / YLABEL............................................................................................... 36
FIGURA 53. SECUENCIADOR LEYENDO UNA TABLA CON EXPR. ................................... 36
FIGURA 54. PACK Y UNPACK................................................................................................ 37
FIGURA 55. USO DE $............................................................................................................. 38
FIGURA 56. ZL SLICE Y ZL ECILS. ........................................................................................ 38
FIGURA 57. GROUP. ............................................................................................................... 38
FIGURA 58. JOIN. .................................................................................................................... 39
FIGURA 59. UNION. ................................................................................................................ 39
FIGURA 60. SECT. ................................................................................................................... 39
FIGURA 61. BONDO. ............................................................................................................... 39
FIGURA 62. BONDO Y EXPR. ................................................................................................. 39
FIGURA 63. BPM A MILISEGUNDOS. ................................................................................... 40
FIGURA 64. USANDO LA NUEVA ABSTRACCIN................................................................ 40
FIGURA 65. ACTIVAR DSP...................................................................................................... 41
FIGURA 66. REPRODUCCIN BSICA. ................................................................................ 41
FIGURA 67. OSCILADOR. ....................................................................................................... 42
FIGURA 68. MODULADOR DE AMPLITUD. ......................................................................... 43
FIGURA 69. MODULADOR DE FRECUENCIA. .................................................................... 44
FIGURA 70. REPRODUCTOR CON TABREAD Y SOUNDFILER.......................................... 46
FIGURA 71. CONFIGURACIN DE TOUCHOSC. ................................................................ 47
FIGURA 72. RECIBIR DATOS OSC......................................................................................... 48
FIGURA 73. ENVIAR DATOS OSC. ......................................................................................... 48
FIGURA 74. VISTA DEL FADER 1 DEL BEATMACHINE...................................................... 48
FIGURA 75. USO DE GEM. ..................................................................................................... 49
FIGURA 76. PANTALLA GEM. PIX_MIX 0.5. ......................................................................... 50
FIGURA 77. TRANSLATEXYZ Y ROTATEXYZ ........................................................................ 50
FIGURA 78. PIX_GAIN Y PIX_TRESHOLD ............................................................................ 51
FIGURA 79. PROPIEDADES DEL LIENZO ............................................................................ 52
FIGURA 80. DOBLE VU........................................................................................................... 52
FIGURA 81. USO DEL VU DOBLE EN UN PARCHE............................................................. 53
FIGURA 82. USO DE WRITESF~ Y TABWRITE~ ................................................................... 54
FIGURA 83. FILTRO HIP~ ...................................................................................................... 56
FIGURA 84. FILTRO LOP~...................................................................................................... 57
FIGURA 85. FILTRO BP~ ........................................................................................................ 58
FIGURA 86. FILTRO VCF~...................................................................................................... 58
FIGURA 87. EFECTO REVERB ............................................................................................... 59
FIGURA 88. EFECTO DELAY.................................................................................................. 60
FIGURA 89. SECUENCIADOR SIMPLE ................................................................................. 61
FIGURA 90. REPRODUCTOR WAV ........................................................................................ 62
FIGURA 91. LECTOR REACTIVISION.................................................................................... 63
FIGURA 92. REACTIVISIN TUIOSIMULATOR.................................................................... 63
FIGURA 93. CONSOLA DE PURE DATA................................................................................ 65
FIGURA 94. PRUEBA DE SONIDO......................................................................................... 66
FIGURA 95. PREFERENCIAS DE AUDIO. ............................................................................. 66

68

I N T R O D U C C I N

P U R E

D A T A

REFERENCIAS

Referencias
Andrew James Farnell, Designing Sound, Pure Data Intro. 2006, 2008
(http://aspress.co.uk/ds/about_book.php).

Web
Portal oficial Pure Data: http://puredata.info/
Native Instruments:
http://www.nativeinstruments.com/es/products/komplete/synths/fm8/
Propellerhead: http://www.propellerheads.se/
loopMidi: http://www.tobias-erichsen.de/software/loopmidi.html
reacTIVision: http://cargocollective.com/max-pd-tutorial/pd-reacTIVision
Tuio: http://www.tuio.org/
TouchOSC: http://hexler.net/software/touchosc-android
GEM: http://gem.iem.at/
Floss Manuals: http://en.flossmanuals.net/pure-data/
Pure Data with Dr. Rafael Hernandez (youtube):
https://www.youtube.com/playlist?list=PL12DC9A161D8DC5DC
Johannes Kreidler: Programming Electronic Music in Pd:
http://www.pd-tutorial.com/

69

S-ar putea să vă placă și