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: [email protected]
Universidad del Quindı́o. Carrera 15 Calle 12 Norte Armenia, Quindı́o,
Colombia. Contacto: [email protected]
Universidad del Quindı́o. Carrera 15 Calle 12 Norte Armenia, Quindı́o,
Colombia. Contacto: [email protected]
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