Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PURE DATA
Realizado por
DANIEL BECERRA VELA
48884306Z
Dirigido por
VCTOR J. DAZ MADRIGAL
Departamento
LENGUAJES Y SISTEMAS INFORMTICOS
UNIVERSIDAD DE SEVILLA
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
Secuenciador simple.......................................................................................18
Sel.............................................................................................................................. 18
Counter .................................................................................................................... 19
Nmeros aleatorios........................................................................................20
Random.................................................................................................................... 20
TripleRand............................................................................................................... 20
Drunk ....................................................................................................................... 21
Subpatching ....................................................................................................28
A Beat Machine ..............................................................................................29
Grficos con tablas y arrays ..........................................................................33
Tabwrite................................................................................................................... 33
Tabread .................................................................................................................... 34
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
I N T R O D U C C I N
P U R E
D A T A
INTRODUCCIN
Introduccin y conclusiones
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:
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): 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).
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 14- Leyendo audio con readsf~: til para usar sonidos y samples ya
creados en nuestros parches musicales.
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 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 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.
I N T R O D U C C I N
P U R E
D A T A
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.
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.
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.
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.
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
11
I N T R O D U C C I N
P U R E
D A T A
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.
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
13
I N T R O D U C C I N
P U R E
D A T A
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
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.
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.
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.
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
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
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
Nota
TripleRand
I N T R O D U C C I N
P U R E
D A T A
Drunk
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:
-
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)
Knob
FIGURA 27. USO DE SEND Y RECEIVE.
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
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.
23
I N T R O D U C C I N
P U R E
D A T A
24
I N T R O D U C C I N
P U R E
D A T A
Client
se
pueden
descargar
desde
25
I N T R O D U C C I N
P U R E
D A T A
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
27
I N T R O D U C C I N
P U R E
D A T A
LECCIN
9
Subpatching
Nota
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
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
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.
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.
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
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.
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.
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.
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.
34
I N T R O D U C C I N
P U R E
D A T A
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.
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.
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.
El objeto expr resulta muy til para leer tablas. En la figura 53 se aprecia un ejemplo de
su uso.
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
Pack / Unpack
Con el objeto pack se empaquetan datos de distinto tipo en una lista y con unpack se
desempaquetan.
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.
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.
38
I N T R O D U C C I N
P U R E
D A T A
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.
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.
40
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~
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.
41
I N T R O D U C C I N
P U R E
D A T A
LECCIN
15
Osciladores osc~
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
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
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~
45
I N T R O D U C C I N
P U R E
D A T A
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.
47
I N T R O D U C C I N
P U R E
D A T A
48
I N T R O D U C C I N
P U R E
D A T A
LECCIN
18
GEM
49
I N T R O D U C C I N
P U R E
D A T A
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.
51
I N T R O D U C C I N
P U R E
D A T A
LECCIN
19
Abstracciones visuales
52
I N T R O D U C C I N
P U R E
D A T A
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.
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.
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.
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.
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.
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
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.
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
I N T R O D U C C I N
P U R E
D A T A
CASOS PRCTICOS
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
I N T R O D U C C I N
P U R E
D A T A
CASOS PRCTICOS
63
I N T R O D U C C I N
P U R E
D A T A
CASOS PRCTICOS
I N T R O D U C C I N
P U R E
D A T A
ANEXO
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.
65
I N T R O D U C C I N
P U R E
D A T A
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
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