Vous êtes sur la page 1sur 10

UNIVERSIDAD AUTNOMA

DE SAN LUIS POTOS

Proyecto final
Pedal de Efectos en Pure Data + Arduino

Por:
Carlos Guillermo Garca Tllez
Clave: 0180339
Procesamiento de Audio
Profesor: Alfonso Alba Cadena

Objetivo:
El objetivo del proyecto fue el diseo de un circuito que simulara un pedal de efectos de
guitarra simple pero practico, esto con la finalidad de familiarizarse con la interfaz de
pure data, asi como entender el diseo de estos aparatos, como se procesa el sonido
que proviene de un instrumento al entrar en el dispositivo y toda la matematica de hay
detrs de ello.

Materiales:
A continuacin se enlistaran los materiales que fueron utilizados para el proyecto (tanto
virtuales como fisicos):

Una placa arduino UNO


Protoboard
Cables de conexin jumper
4 potenciometros de 10k
1 led RGB
2 resistencia de 1M
Interfaz para guitarra Behringer UC6102
1 Cable de conexin para guitarra/bajo
Un Bajo Yamaha RBX 775 (para probar el programa y el circuito)
Software de programacin Grfica Pure Data Extended
Software de programacin Arduino
Librera Pduino (para la sincronizacin arduino-Pd)
Librera arduino Firmata
Programa de prueba Firmata_test.exe

Procedimiento:
El procedimiento se dividi en 2 partes, la primera fue la programacin dentro de la
interfaz de pure data, el parche resultante es el que se encarga de realizar y mandar
toda la informacin en arduino, mientras que la segunda parte se trata sobre el armado
del circuito, basado en la entradas de pure data.

Parte 1 (Programacin en Pd):


Lo primero que se hizo antes de comenzar la programacin, fue especificar los tipos de
efectos que se querian lograr; debido a la gran cantidad de efectos que existen fue algo
complicado elegir, y debido a que se pens en utilizar potenciometros como entradas
analogicas para activar estos efectos, se decidi colocar 4 por el momento, es decir,
realizar la programacin para 4 efectos musicales, los cuales son: delay, distorsin,
scoop (que le da cierto brillo o efecto metalico al sonido) y reverb.
Distorsin:
El proceso para la distorsin fue quiz el ms simple de todos. Se coloc un objeto
adc~ para la conversin analogica que entra por la interfaz, despues de esto, se
coloc un objeto multiplicador de seal *~ para amplificarla y saturarla de esta
manera; para modula la amplitud, se le agreg un objeto slider conectado en el otro
extremo de la caja multiplicadora, y se le dio un valor maximo de 80, despues de esto,
se agreg otro objeto llamado clip~ el cual se encarga de cortar la seal en valor
predeterminados por el usuario, en este caso, se le dieron limites desde -1 hasta 1,
esto deja la seal cuadrada y saturada, generando el efecto de distorsin deseado. Por
ultimo, bast con colocar un objeto dac~ para restaurar la seal de digital a
analgica y asi escuchar el resultado. En la figura 1.1 se puede apreciar el resultado.

Figura 1.1 Distorsin

Delay y Scoop:
Para el Delay y el scoop, se utiliz una funcin (objeto) llama delwrite~ que se
encarga escribir la linea de retraso de la seal que entra, los parametros de este objeto
se ajustaron a 500 ms, es decir, la seal de entrada de retrasar esta cantidad de
tiempo. Despues de aplic la misma multiplicacin que en el efecto de distorsin, pero
esta vez con un parametro de 0.8 al retraso que sale del objeto delwrite, esto genera
una retroalimentacin momentanea, que estimula a la seal, cabe destacar que el valor
maximo que se le puede aplicar a este parametro, es por debajo de 1, ya que en este
punto, se retroalimenta infinitamente generando ruido en la salida. Por ultimo se coloc
un objeto delread~ para leer el retraso de la retoralimentacin en un periodo de 150
ms, antes de enviarlo a la salida. Se colocaron 2 Sliders, uno en la entrada del
multiplicador de la seal, y el otro en la entrada de la lectura del retraso; al estar
activado el primero pero con el segundo apagado, la retroalimentacin momentanea
genera un efecto metalico oscilatorio en la seal, mientras que al activar el segundo, se
genera el efecto de retraso o delay. En la figura 1.2 se puede aprecar el resultado.

Figura 1.2 Delay/Scoop

Reverb:
Para la parte del reverb se necesit descargar la versin extendida de pure data, ya
que trae consigo funciones que facilitan la reverberacin, como lo es el objeto
freeverb~ dentro de el se encuentran mensajes predeterminados que se pueden
usar para generar el efecto deseado. As, con las funciones definidas del objeto, se
coloc un toggle con un mensaje bypass a la entrada del objeto principal, esto para
bloquear o activar en cualquier momento el efecto,de igual forma, se colocaron
mensajes roomsize y damping (predeterminados del freeverb) en la entrada, para
simular un entorno de cuarto vacio, a estos 2 se les agreg un slider para aumentar o

diminuir el efecto del entorno. Despus, se colocaron otros 2 mensajes que ya vienen
predeterminados en el objeto, los mensajes wet y dry se agregaron a la entrada de
la seal de igual forma, junto con un mensaje numrico (0 o 1) ya que son los valores
que aceptan, el primero se encarga de aumenta o disminuir el nivel de la reverberacin,
mientras que el segundo aumenta el nivel de la seal no procesada. En la figura 1.3 se
aprecia el resultado final.

Figura 1.3 Reverb

Parche completo e interaccin Pd-Arduino:


En la siguiente imagen se puede apreciar todos los parches unidos y las funciones de
interaccin entre pure data y arduino (que ser explicado mas adelante).

Como se puede apreciar en el parche final, se utilizaron objetos tabsend para enviar la
seal adquirida hacia arreglos especiales para poder visualizar la onda en cada efecto.
Tambin se agregaron mensajes resize y objetos soundfiler, esto porque se tiene en
mente realizar un sistema de bateria sencillo con piezoelctricos utilizando sonidos de
tarola y bombo, que sern colocados en las plantillas de los pies para llevar el tiempo
de lo que se est tocando de forma ms divertida y dinmica. Los objetos tabplay~ se
utilizan para reproducir el archivo cargado, y como que puede apreciar, tambin se
colocaron objetos bang para reproducir el sonido.
De igual forma, se dej espacio en el parche a proposito porque se planea seguir
creando ms efectos y asi ampliar la gama y variedad en el pedal.
Una vez terminado este parche, se procedi a descargar la librera Pduino, ya que es
est la que contiene las funciones especiales para poder sincronizar nuestro arduino
con pure data. En el parche anterior, en la parte superior derecha se aprecia la seccin
que contiene estos objetos. Para mayor visualizacin ver figura 1.4

Figura 1.4

El objeto que permite la interaccin se llama arduino y el parametro que lo


acompaa es el puerto serial al que esta conectada nuestra tarjeta programable, en
este caso la 2. En las entradas estan conectados los mensajes open y close, que sirven
para abrir y cerrar el puerto respectivamente, asi como el objeto hradio y el mensaje
numrico, lo cuales se encargan de seleccionar el puerto serial que se desea.

A la salida del objeto se le asignaron 2 funciones, una ruta para la seccin analogica
del arduino, y la otra para la digital; En la parte analogica se conect un objeto spigot
junto con un toggle, esto activa o desactiva las entradas analogicas, dependiendo de la
activacin o desactivacin del toggle.consecutivamente se declara la ruta analogica y la
cantidad de salidas que tendr (al estar usando el arduino UNO, se limita a colocar 6
entradas, desde A0 hasta A5), una vez hecho esto se declara una funcin especial de
la librera Pduino en la seccin de ayuda llama pd display values without pegging
the CPU esta mapea y secciona las rutas analogicas para ser utilizadas
individualmente; posteriormente se agregaron objetos de multiplicacin de seal con
los valores que corresponden a cada efecto, es decir, 80 para la distorsin (amplitud),
150 para el delay (retraso), 0.8 para el scoop (retroalimetacin), el reverb al tener un
valor entre 0 y 1 no se necesit multiplicar, ya que el mapeo de la funcin especial es
suficiente. Hecho esto, se procedi a conectar las salidas de estos mensajes numricos
con los sliders correspondientes a cada uno.
Para lograr una vista ms esttica del circuito, se pens en colocar un led RGB para
que al activar cierto efecto, el color del led fuera distintivo para cada uno, por lo que se
coloc otro objeto especial llamado pd generate digital out messages (colocado de
igual forma en la librera Pduino, este objeto ya viene predeterminado con las 13
entradas digitales de la placa y es exclusivo para convertir mensajes digitales de pure
data a arduino; la salida se envi a un mensaje llamado digital que genera el nmero
de pin y la caracteristica de este (si es entrada, salida, etc.), y de ah a la entrada del
objeto arduino en la parte superior. Por ultimo, se colocaron 3 toggles a las entradas
2,3 y 4 del objeto especial para simular el encendido y apagado del led en sus 3
variantes, y a las entradas de estos, se conectaron las salidas de las cajas
multiplicadoras en la parte analogica, esto con la finalidad de que al mover el
potenciometro en cualquier efecto, se encienda el led en diferente color.

Parte 2 (arduino y armado del circuito):


Firmata:
Una vez terminada la programacin del parche en pure data, el siguiente paso consisti
en cargar el Firmware Firmata en la placa arduino, este ya se encuentra disponible en
la librera de ejemplos del software, asi que solo bast con entrar al programa y cargar
la librera, conectar el arduino y subir el programa a la placa.
La librera firmata ya est programada para interactuar directamente con pure data por
medio de la comunicacin serial. En las figuras 1.5 y 1.6 se aprecia el proceso de carga
del programa.

Figura 1.5

Figura 1.6

Una vez cargado el programa, se realiz una prueba rapida en el ejecutable


firmata_test.exe que se descarg de internet. Este ejecutable permite checar la
conexin con el puerto serie entre el arduino y la computadora. Figura 1.7

Figura 1.7

Al asegurarse que la conexin es valida, se procedi a hacer el armado del circuito,


conectar los potenciometros, y las entradas del led a cada pin. En la figura 1.8 se
observa el armado del circuito.

Figura 1.8

Una vez armado, y teniendo tanto la programacin de un software como del otro, se
conecta el arduino y se abre el programa pure data, seleccionando el mensaje open
que esta conectado al objeto arduino, y se activa el toggle conectado al spigot,
automaticamente se sincronizan y como se aprecia en la figura 1.9, el led se activa al
mover los potenciometros, y los efectos estan perfectamente sincronizados con ellos de
igual forma.
El ultimo paso solo consisti en conectar la interfaz a la computadora y el bajo a la
interfaz, cambiar la entrada de audio por la del behringer en la configuracin de audio
de pure data y probar el circuito con el instrumento.
Como se puede ver en la figura 1.10 estan conectados los piezoelctricos de los que se
habl anterioremente, esto debido a que el proyecto sigue en desarrollo y se esta
tratando de mejorar y agregar mas cosas.

Figura 1.9

Figura 1.10

Referencias:
http://cargocollective.com/max-pd-tutorial/pd-arduino.