UNIVERSIDAD AUTÓNOMA DE SAN LUIS POTOSÍ
Proyecto final “Pedal de Efectos en Pure Data + Arduino”
Por: Carlos Guillermo García Téllez Clave: 0!0""#
Procesamiento de Audio Profesor: Alfonso Al$a Cadena
Objetivo El objetivo del proyecto fue el diseño 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 diseño de estos aparatos, como se procesa el sonido que proviene de un instrumento al entrar en el dispositivo y toda la matematica de hay detrás de ello.
Materiale! A continuación se enlistaran los materiales que fueron utilizados para el proyecto tanto virtuales como fisicos!" • • • • • • • • • • • • • •
#na placa arduino #$% &rotoboard 'ables de cone(ión jumper ) potenciometros de *+ * led -/ 0 resistencia de *1 2nterfaz para guitarra 3/ehringer #'4*+05 * 'able de cone(ión para guitarra6bajo #n /ajo 7amaha -/8 99: para probar el programa y el circuito! ;oft
ibrer?a &duino para la sincronización arduino@&d! >ibrer?a arduino 3irmata5 &rograma de prueba 3irmataBtest.e(e5
Proce"i#iento El procedimiento se dividió en 0 partes, la primera fue la programación dentro de la interfaz de pure data, el parche resultante es el que se encarga de realizar y mandar toda la información en arduino, mientras que la segunda parte se trata sobre el armado del circuito, basado en la entradas de pure data.
Parte $ %Pro&ra#aci'n en P"( >o primero que se hizo antes de comenzar la programación, fue especificar los tipos de efectos que se querian lograrC debido a la gran cantidad de efectos que e(isten fue algo complicado elegir, y debido a que se pensó en utilizar potenciometros como entradas analogicas para activar estos efectos, se decidió colocar ) por el momento, es decir, realizar la programación para ) efectos musicales, los cuales son" delay, distorsión, scoop que le da cierto brillo o efecto metalico al sonido! y reverb. Distorsión:
El proceso para la distorsión fue quizá el más simple de todos. ;e colocó un objeto “adc~” para la conversión analogica que entra por la interfaz, despues de esto, se colocó un objeto multiplicador de señal “*~” para amplificarla y saturarla de esta maneraC para modula la amplitud, se le agregó un objeto slider conectado en el otro e(tremo de la caja multiplicadora, y se le dio un valor ma(imo de D+, despues de esto, se agregó otro objeto llamado “clip~” el cual se encarga de cortar la señal en valor predeterminados por el usuario, en este caso, se le dieron limites desde @* hasta *, esto deja la señal cuadrada y saturada, generando el efecto de distorsión deseado. &or ultimo, bastó con colocar un objeto “dac~” para restaurar la señal de digital a analógica y asi escuchar el resultado. En la figura *.* se puede apreciar el resultado.
igura *.* =istorsión
Delay y Scoop:
&ara el =elay y el scoop, se utilizó una función objeto! llama “delwrite~” que se encarga escribir la linea de retraso de la señal que entra, los parametros de este objeto se ajustaron a :++ ms, es decir, la señal de entrada de retrasará esta cantidad de tiempo. =espues de aplicó la misma multiplicación que en el efecto de distorsión, pero esta vez con un parametro de +.D al retraso que sale del objeto del
igura *.0 =elay6;coop
Reverb:
&ara la parte del reverb se necesitó descargar la versión e(tendida de pure data, ya que trae consigo funciones que facilitan la reverberación, 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 3roomsize5 y 3damping5 predeterminados del freeverb! en la entrada, para simular un entorno de cuarto vacio, a estos 0 se les agregó un slider para aumentar o
diminuir el efecto del entorno. =espus, se colocaron otros 0 mensajes que ya vienen predeterminados en el objeto, los mensajes 3
igura *.F -everb
Parche completo e interacción Pd-rd!ino:
En la siguiente imagen se puede apreciar todos los parches unidos y las funciones de interacción entre pure data y arduino que será e(plicado mas adelante!.
'omo se puede apreciar en el parche final, se utilizaron objetos tabsend para enviar la señal adquirida hacia arreglos especiales para poder visualizar la onda en cada efecto. Gambin 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 serán colocados en las plantillas de los pies para llevar el tiempo de lo que se está tocando de forma más divertida y dinámica. >os objetos 3tabplayH5 se utilizan para reproducir el archivo cargado, y como que puede apreciar, tambin se colocaron objetos bang para reproducir el sonido. =e igual forma, se dejó espacio en el parche a proposito porque se planea seguir creando más efectos y asi ampliar la gama y variedad en el pedal. #na vez terminado este parche, se procedió a descargar la librer?a &duino, 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 sección que contiene estos objetos. &ara mayor visualización ver figura *.)
igura *.)
El objeto que permite la interacción se llama “ard!ino” y el parametro que lo acompaña es el puerto serial al que esta conectada nuestra tarjeta programable, en este caso la 0. 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 0 funciones, una ruta para la sección analogica del arduino, y la otra para la digitalC En la parte analogica se conectó un objeto spigot junto con un toggle, esto activa o desactiva las entradas analogicas, dependiendo de la activación o desactivación del toggle.consecutivamente se declara la ruta analogica y la cantidad de salidas que tendrá al estar usando el arduino #$%, se limita a colocar 4 entradas, desde A+ hasta A:!, una vez hecho esto se declara una función especial de la librer?a &duino en la sección de ayuda llama “pd display val!es witho!t pe""in" the #P$” esta mapea y secciona las rutas analogicas para ser utilizadas individualmenteC posteriormente se agregaron objetos de multiplicación de señal con los valores que corresponden a cada efecto, es decir, D+ para la distorsión amplitud!, *:+ para el delay retraso!, +.D para el scoop retroalimetación!, el reverb al tener un valor entre + y * no se necesitó multiplicar, ya que el mapeo de la función especial es suficiente. Iecho esto, se procedió a conectar las salidas de estos mensajes numricos con los sliders correspondientes a cada uno. &ara lograr una vista más esttica del circuito, se pensó en colocar un led -/ 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 "enerate di"ital o!t messa"es” colocado de igual forma en la librer?a &duino, este objeto ya viene predeterminado con las *F entradas digitales de la placa y es e(clusivo para convertir mensajes digitales de pure data a arduinoC la salida se envió a un mensaje llamado “di"ital” que genera el nJmero de pin y la caracteristica de este si es entrada, salida, etc.!, y de ah? a la entrada del objeto “ard!ino” en la parte superior. &or ultimo, se colocaron F toggles a las entradas 0,F y ) del objeto especial para simular el encendido y apagado del led en sus F 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 ) %ar"*ino y ar#a"o "el circ*ito( %irmata:
#na vez terminada la programación del parche en pure data, el siguiente paso consistió en cargar el irma librer?a firmata ya está programada para interactuar directamente con pure data por medio de la comunicación serial. En las figuras *.: y *.4 se aprecia el proceso de carga del programa.
igura *.:
igura *.4
#na vez cargado el programa, se realizó una prueba rapida en el ejecutable firmata&test'e(e que se descargó de internet. Este ejecutable permite checar la cone(ión con el puerto serie entre el arduino y la computadora. igura *.9
igura *.9
Al asegurarse que la cone(ión es valida, se procedió a hacer el armado del circuito, conectar los potenciometros, y las entradas del led a cada pin. En la figura *.D se observa el armado del circuito.
igura *.D
#na vez armado, y teniendo tanto la programación de un soft
igura *.K
igura *.*+
-eferencias" http"66cargocollective.com6ma(@pd@tutorial6pd@arduino .