Download Diseño e implementación de un pedal de efectos para flauta
Document related concepts
no text concepts found
Transcript
XVII SIMPOSIO DE TRATAMIENTO DE SEÑALES, IMÁGENES Y VISIÓN ARTIFICIAL - STSIVA 2012 1 Diseño e implementación de un pedal de efectos para flauta traversa sobre FPGA Ivette Juliana Vélez Tobón, Luis Miguel Capacho Valbuena, Hernán Felipe Garcı́a Arias Proyecto Categorı́a 1. Resumen— Existen muchas técnicas para la modificación de sonidos, cuyos parámetros son frecuencia, amplitud e intensidad. Las modificaciones sonoras tienen un gran costo computacional y deben de tener una respuesta rápida, lo que crea la necesidad de utilizar sistemas capaces de procesar esta información en tiempo real. Este tipo de sistemas se pueden desarrollar sobre plataformas embebidas como los FPGAs. En este artı́culo se describe el proceso de diseño e implementación de un pedal de efectos para flauta traversa, implementado sobre Tarjeta de desarrollo DE2-7O basada en FPGA Cyclone II EP2C70F896C6 de Altera, utilizando el códec de audio y el procesador Nios II. Los efectos diseñados son coro, reverberación, flanger y delay, los cuales fueron diseñados con el software Matlab. Palabras Claves— Efectos de sonido, FPGA, Pedal de efectos, Tratamiento digital de señales. I. I NTRODUCCI ÓN En la actualidad diversas corrientes musicales y artı́sticas han surgido; algunas producto de avances tecnológicos y fundamentadas en metodologı́as de procesamiento digital de señales, estos sonidos pueden ser creados, reproducidos o modificados por computadoras o mediante el uso de pedales de efectos (stomp box), los cuales permiten adicionar una cantidad determinada de efectos sonoros; siendo estos ampliamente utilizados en la industria musical, en el cine y en aplicaciones multimedia. Sin embargo, este tipo de modificaciones suele limitarse a los instrumentos de cuerdas o cordófonos, dejando de lado otro tipo de instrumentos como los de viento o aerófonos. Diversos trabajos en el área de procesamiento de señales y generación de efectos de audio utilizando FPGAs han sido implementados. Se han desarrollado proyectos para la creación efectos de audio como: retraso (delay), coro (chorus), flanger y wah, para señales de todo tipo [1]; y proyectos mas especı́ficos como la creación de efectos de distorsión, vibrato y coros en tiempo real para guitarra, emulando una pedalera que suele funcionar de manera análoga [2]. Otro tipo de proyectos desarrollados sobre FPGAs incluyen la utilización de la plataforma DE2 de Altera para implementar un motor interactivo de sı́ntesis digital [3], y el diseño e implementación de un códec digital de audio con FPGA, en formato PCM [4], Universidad del Quindı́o. Carrera 15 Calle 12 Norte Armenia, Quindı́o, Colombia. Contacto: ijvelezt@uqvirtual.edu.co Universidad del Quindı́o. Carrera 15 Calle 12 Norte Armenia, Quindı́o, Colombia. Contacto: lmcapacho@uniquindio.edu.co Universidad del Quindı́o. Carrera 15 Calle 12 Norte Armenia, Quindı́o, Colombia. Contacto: hfgarciaa@uqvirtual.edu.co el cual describe el proceso para la creación de un dispositivo de procesamiento digital con codificación y decodificación. Es este trabajo se desarrolló una herramienta de procesamiento de efectos de sonido para la flauta traversa la cual pertenece a la categorı́a viento-madera. I-A. Definiciones Audio Códec o Códec de audio El audio códec es un dispositivo especializado en el muestreo (conversión analógico-digital) y generación de señales (conversión digital-analógico) dentro del rango de frecuencias audibles. Elementos de un códec: Número de canales: número de señales que el códec es capaz de muestrear/generar, ası́ con un canal se tendrá un códec mono y con dos canales un códec estéreo. Resolución: número de bits usados para codificar el valor de la muestra (amplitud de onda). Periodo de muestreo: intervalo mı́nimo entre dos muestras para la captura de una señal análoga. Pedal de efectos Un pedal de efectos o stomp box, es un complemento creado para tocar guitarra eléctrica, este consiste en un circuito electrónico que produce distintos efectos musicales y es albergado generalmente en una pequeña caja metálica, es usado por músicos, usualmente guitarristas, aunque a veces también por músicos de otros instrumentos de cuerdas. Los pedales de efectos alteran la calidad del sonido o timbre de la señal de entrada, añadiendo distintos efectos al sonido original [5]. Efectos de sonido Algunos de los efectos de sonido mas comunes son: Coro o Chorus: efecto que resulta de mezclar la señal de entrada con un vibrato y la señal de entrada sin procesar. El resultado es similar al de un par de instrumentos que tocan al unı́sono, de modo tal que uno de ellos se desafine ligeramente. Reverberación: es un fenómeno producido por la reflexión que consiste en una ligera permanencia del sonido una vez que la fuente original ha dejado de emitirlo. Flanger: es un efecto que produce un sonido metalizado oscilante, sobre todo en frecuencias medias y altas. Delay: es un efecto de sonido que consiste en la multiplicación y retraso modulado de una señal sonora. Una vez XVII SIMPOSIO DE TRATAMIENTO DE SEÑALES, IMÁGENES Y VISIÓN ARTIFICIAL - STSIVA 2012 procesada la señal se mezcla con la original. El resultado es el clásico efecto de eco sonoro. II. Códec de audio Wolfson WM8731 Procesador Nios II de Altera Entorno de desarrollo integrado Quartus II y Nios II de Altera Entorno de desarrollo integrado Matlab Proyecto GNUSIMDSP. Software escrito en lenguaje C que permite el procesamiento en tiempo real de señales sonoras, accediendo a la tarjeta de audio de un PC [9] D ISE ÑO E I MPLEMENTACI ÓN Para el diseño e implementación de este proyecto, se desarrollaron dos etapas básicas las cuales son: Módulo para la comunicación con el códec: este módulo escrito en VHDL se componen de 4 submódulos de igual manera escritos en VHDL los cuales son: • Data path • Módulo para comunicación I2C • Módulo con la configuración a realizar por I2C • Control path Módulo para la creación de efectos sonoros: esta sección está implementada utilizando el procesador NIOS II desarrollado por la empresa ALTERA [6]. Los efectos de sonido están escritos en lenguaje C y su funcionamiento consiste en procesar la señal proveniente de la lı́nea de entrada del códec de audio y enviar la señal modificada a la lı́nea de salida del códec de audio. II-A. Módulo para la comunicación con el códec de audio La tarjeta DE2-70 tiene un códec de audio referencia Wolfson WM8731, este tiene muchas de sus lı́neas conectadas dentro de la tarjeta por lo cual es necesario estudiar previamente el manual de usuario [7] y corroborar con que lı́neas se cuenta para la interacción con los datos de audio. Primero se diseñó el módulo que envı́a las señales al códec de audio, estas señales son: ADCLRCK: señal permite elegir que canal del códec se está leyendo, si el derecho o el izquierdo. ADCDAT: señal que permite adquirir los datos de forma serial. DACLRCK: señal que permite elegir que canal del códec se está escribiendo, si el derecho o el izquierdo. DACDAT: señal por la cual se envı́an los datos de forma serial. XCK: señal de reloj para el correcto funcionamiento del códec de audio. BCLK: señal periódica que indica con que frecuencia se envı́an los datos y está directamente relacionada con la frecuencia de muestreo. I2C-SCLK: señal de reloj para la configuración por I2C. I2C-SDAT: señal de datos para la configuración por I2C. El sistema creado es modular, cada módulo que se diseña interacturá con el siguiente en un orden lógico. En la Figura 1 se observa el diagrama de flujo empleado para la implementación del pedal de efectos. El códec de audio permite transferencias de entrada y de salida de manera simultánea y puede funcionar a 12.288MHz o de 18.432MHz, por defecto su configuración es de 12.288MHz, como la tarjeta de desarrollo basada en FPGA DE2-70 no tiene un reloj interno que pueda generar este valor de frecuencia, es necesario crear un reloj utilizando 1 de los 4 PLLs que posee la tarjeta y el MegaWizard Plug-In Manager que posee la herramienta Quartus II. Para escribir y leer sobre el códec, se deben sicronizar los datos y las señales de control con la frecuencia de funcionamiento del códec. La frecuencia de muestreo de datos a utilizar por defecto es 48KHz, la frecuencia del envı́o de los datos para esta frecuencia de muestreo es 1.536MHz (esta señal es conocida BCLK); en cada periodo de muestreo se debe enviar la señal deseada 2 veces (una para el canal derecho y una para el izquierdo), esta señal está controlada por ADCLRCK y DACLRCK para lectura y escritura respectivamente, enviando y recibiendo el bit mas significativo primero. Figura 1. Diagrama de flujo del para diseño e implementación de un pedal de efectos para flauta traversa Para llevar a cabo el proyecto propuesto, se utilizaron los siguientes elementos. Tarjeta de desarrollo DE2-70 basada en FPGA Cyclone II EP2C70F896C6 de Altera Tras el diseño de la sección que conecta el códec, se procedió a diseñar el datapath, el cual tiene la configuración de las señales y relojes para el códec de audio. 2 XVII SIMPOSIO DE TRATAMIENTO DE SEÑALES, IMÁGENES Y VISIÓN ARTIFICIAL - STSIVA 2012 La configuración del códec se realiza utilizando el protocolo I2C, este es un protocolo de transferencia lenta y funciona a 100KHz. La comunicación I2C utiliza 2 lı́neas, una es la señal de reloj y la otra es datos, esta requiere transferencias bidireccional por lo que es de tipo INOUT. Para la configuración del códec, se crea un módulo que envı́a los datos que se necesitan para configurarlo, en este caso se envı́an 10 datos de 24 bits. El efecto delay toma la señal original y deriva 4 señales secundarias, con una amplitud diferente y que va disminuyendo de una a otra, además de que se van desplazando temporalmente, creando un efecto similar al de un eco al ser sumadas con la señal original. El efecto de coros toma la señal original la desplaza levemente y varı́a su amplitud de una forma pseudo aleatoria, posteriormente la suma con la señal original, generando un efecto donde pareciera que dos flautas tocan al unı́sono, una ligeramente desafinada con respecto a la otra. El efecto de reverberación toma la señal original actual y la señal original anterior a la actual, se desplazan y se varı́a su amplitud, generando un sonido se extiende un poco en el tiempo. El efecto de flanger se realiza procesando la señal de entrada varias veces utilizando la señal que se va modificando a través de los ciclos y modulandola con una señal coseno, generando un sonido metalizado oscilante en la frecuencias medias y altas. Posteriormente se diseñó el control path, allı́ se encuentran todas las señales de control de los módulos, las cuales son activadas de acuerdo con una lógica de estados, primero se activa el módulo de configuración del protocolo I2C, tras este proceso se activan los módulos de lectura y escritura que continuarán funcionando hasta que se desenergice el sistema, en la Figura 2 se muestra el sistema completo. Los efectos diseñados tienen entre ellos una estructura similar: se toma la información original, se modifica mediante la realización de desplazamientos y multiplicaciones por coeficientes, o por números aleatorios como es el caso del efecto de coro y se suma con la informacióin original, creando ası́ un sonido modificado. El cambio de MATLAB a C sugiere la creación de punteros y ciclos for que permitan el procesamiento de toda la información. Los efectos son probados utilizando el proyecto GNUSIMDSP. Para la implementación del sistema se utilizó el procesador NIOS II, el cual es un procesador de arquitectura RISC de 32 bits diseñado especı́ficamente para los dispositivos lógicos programables de Altera, una de sus mayores facilidades es que proporciona el acceso a múltiples periféricos dentro del propio chip e interfaces para memorias y periféricos externos, ya que la tarjeta posee periféricos de audio, visualización, interfaz humana y me memorias SD el NIOS II es el procesador mas versátil y acorde para este proyecto; posee todas las funciones de un procesador común y su plataforma de programación es en lenguaje C. Cuando se trabaja en lenguaje C utilizando el NIOS II, el procesamiento se hace orientado a muestras, para lo cual se realiza la captura de un bloque de datos, el procesamiento del bloque capturado y su posterior ejecución, como los efectos ya habı́an sido diseñados, solo fue necesario realizar mı́nimos cambios, para la captura de datos se utiliza un micrófono común, y para la salida se utilizan parlantes o amplificadores. Figura 2. Módulo para la comunicación de la tarjeta de desarrollo DE2-7O con el códec Wolfson WM8731 II-B. Creación de efectos sonoros Los efectos sonoros desarrollados son coro, reverberación, flanger y delay, estos fueron diseñados utilizando el software MATLAB, posteriormente fueron implementados en lenguaje C, el cambio de lenguaje y del entorno de programación supone modificaciones del código de MATLAB al de C. MATLAB, es una plataforma muy robusta que permite el procesamiento de grandes cantidades de información, y ya que es orientada a procesamiento matricial, las operaciones para la creación de efectos son mas sencillas que en otro tipo de entornos. Primero se creó un filtro pasabanda con frecuencias de corte 200Hz y 3200Hz, rango en el cual se encuentran las notas de la flauta traversa y sus armónicos. Para la implementación del filtro se utilizan las funciones cheb1ord y cheby1 El filtro implementado en lenguaje C es un filtro FIR con estructura tipo II, el cual tiene la misma respuesta que el filtro implementado en MATLAB y fue probado utilizando el GNUSIMDSP. III. S IMULACI ÓN Se realizan simulaciones de los módulos de manera individual y global, la simulación en matlab consta de tomar una señal de flauta y aplicarle cada uno de los efectos, de igual manera en el GNUSIMDSP se captura una señal y en tiempo real se aplican los efectos con el código escrito en C (este Diseño de los efectos: 3 XVII SIMPOSIO DE TRATAMIENTO DE SEÑALES, IMÁGENES Y VISIÓN ARTIFICIAL - STSIVA 2012 código es el mismo que utilizará el NIOS II), dado que con ambos software se puede acceder a la tarjeta de sonido del PC, la salida final es una señal de audio. Se visualiza la simualción del Filtro pasabanda diseñado tando en matlab (ver Figura 3) como utilizando el GNUSIMDSP (ver Figuras 4 a 6) Figura 6. Simulación del filtro pasabanda utilizando el GNUSIMDSP con frecuencia de 3400Hz Se puede visualizar la simulación con el GNUSIMDSP de los efectos propuestos en las Figuras 7 a 10 Figura 3. Simulación del Filtro pasabanda en Matlab Figura 7. Simulación del efecto Delay Figura 4. Simulación del filtro pasabanda utilizando el GNUSIMDSP con frecuencia de 160Hz Figura 8. Simulación del efecto Reverberación En las Figuras 7 a 10 se visualizan los cuatro efectos propuestos, en cada una de las secciones, la señal de entrada se encuentra en la parte superior y la señal de salida tras el efecto en la parte inferior,se puede ver el cambio de una otra y las nuevas componentes que se generan. Figura 5. Simulación del filtro pasabanda utilizando el GNUSIMDSP con frecuencia de 520Hz La simulación del filtro pasabanda en Matlab permite fácilmente corroborar si el filtro está funcionando de manera correcta o incorrecta, en la Figura 3 se observa que los lı́mites de frecuencia van de 200Hz a 3200Hz, en la simulación con el GNUSIMDSP la forma de probar el filtro es ingresar una señal senoidal de una frecuencia deseada y observar su respuesta en tiempo o en frecuencia, por facilidad de visualización en la Figuras 4 a 6 se observa la respuesta temporal con 3 frecuencias diferentes IV. C ONCLUSIONES Las plataformas embebidas como es el caso de las tarjetas de desarrollo basadas en FPGAs, permiten el diseño de sistemas robustos que requieran de mucho hardware y de procesamiento de manera rápida El diseño de un pedal de efectos para flauta traversa sobre una plataforma basada en FPGA, muestra la posibilidad 4 XVII SIMPOSIO DE TRATAMIENTO DE SEÑALES, IMÁGENES Y VISIÓN ARTIFICIAL - STSIVA 2012 R EFERENCIAS [1] Hernández, Jose Daniel. Blanco V., Constantino. Duque L., Eduardo. Procesado de efectos de audio bajo FPGAs. Facultad de Informática. 2002. Enlace: http : //www.dacya.ucm.es/mendias/143/proyectos/audio.pdf [2] Jagatpal, Navarun. Rassam, Fred. Young, Jin Yoon. Chung, Elton. RealTime Guitar Effects Sampler. Mayo 8, 2007. [3] Ravkine, Mikhail. Chyzinski, Rafal. Notes and Octaves Interactive Digital Synthesis Engine. McMaster University. 2006. [4] Bravo G., Victor Alfonso. Navarro B., Jesús Jair. Jacinto G., Edwar. Diseño e implementación de un códec digital de audio con FPGA, en formato PCM, de 2 canales con interfaz para usuario. Universidad Distrital Francisco José de Caldas. 2010. [5] Pedal de efectos. Enlace http : //es.wikipedia.org/wiki/P edal de ef ectos [6] Altera. Nios II Processor: The World’s Most Versatile Embedded Processor. Enlace http : //www.altera.com/devices/processor/nios2/ni2 − index.html [7] Terasic Technologies. Altera DE2-70 Development and Education Board. User Manual. 2007. [8] Capacho V. Luis Miguel. Metodologı́a de transferencia entre registros. Notas de clase Diseño Digital Avanzado. 2012-1. Universidad del Quindı́o [9] López Parrado. Alexander. Marı́n Hurtado. Jorge Iván. GNUSIMDSP. Facultad de Ingenierı́a. Universidad del Quindı́o. Figura 9. Simulación del efecto Flanger Ivette Juliana Vélez Tobón Bachiller con énfasis en mantenimiento de Hardware y electrónica del colegio CASD. Técnico en mantenimiento de Hardware del SENA. Estudiante de noveno semestre de Ingenierı́a Electrónica. Auxiliar de investigación en el instituto interdisciplinario de las ciencias de la Universidad del Quindı́o desde el primer semestre de 2010 hasta el segundo semestre de 2011. Perteneciente a la lı́nea de Sistemas digitales y al semillero del GDSPROC. Figura 10. Simulación del efecto Coro de hacer un elemento portable con las mismas capacidades que podrı́a tener un PC convencional, si bien el PC podrı́a realizar esta tarea, serı́a un recurso subutilizado y requerirı́a de mucho espacio, el diseñar un sistema que permita su miniaturización es práctico y cómodo para usuarios que deseen interactura con la herramienta El uso de una plataforma embebida permitió la captura y el procesamiento en tiempo real de una señal de audio, los PCs comunes presentan un bajo rendimiento en el procesamiento de este tipo de señales en tiempo real, se suele requerir de una captura y almacenamiento de gran cantidad de datos para su posterior procesamiento Poseer un sistema embebido dedicado al procesamiento de señales sonoras mejora la respuesta temporal y auditiva para el usuario, el procesar este tipo de información puede requerir un gran costo computacional y en un PC común que no está dedicado enteramente al procesamiento se requiere de un muestreo mas lento para lograr procesar toda la información El soft-core embebido Nios II permite efectuar cálculos que contengan números flotantes, logrando el correcto funcionamiento de efectos de audio utilizando tarjetas basadas en FPGAs Los diversos módulos con los que se pueden interactuar sobre tarjetas de desarrollo basadas en FPGAs como es el caso de la DE2-70 requieren de sincronizaciones e interconexiones como las del bus avalon para el desarrollo de sistemas robustos Se desarrolló de manera correcta un pedal de efectos para flauta traversa sobre el FPGA CYCLONE II DE2-70 Luis Miguel Capacho Valbuena Recibió el grado de Ingeniero Electrónico en la Universidad del Quindı́o en el año 2007.. Actualmente se desempeña como docente-investigador en la Universidad del Quindı́o y forma parte del grupo de investigación GDSPROC de la misma institución. Área de trabajo: Sistemas embebidos, procesamiento de señales y programación. Hernán Felipe Garcı́a Arias Nacido en Armenia, Colombia en 1985. Recibió el grado de Ingenierı́a en Ingenierı́a Electrónica de la Universidad del Quindı́o en el año 2009. Es estudiante de Maestrı́a en Ingenierı́a Eléctrica de la Universidad Tecnológica de Pereira. Actualmente es Docente del Programa de Ingenierı́a Electrónica de la Universidad del Quindı́o en el área de Sistemas Digitales. 5