Title | Aplicaciones DE Matlab EN Acústica Y Sonido |
---|---|
Author | Zeff C |
Course | Procesamiento Digital de Señales |
Institution | Universidad de las Américas Ecuador |
Pages | 11 |
File Size | 768.4 KB |
File Type | |
Total Downloads | 41 |
Total Views | 174 |
Download Aplicaciones DE Matlab EN Acústica Y Sonido PDF
AP
CONTENIDO 1)
Introducción...........................................................................................................................................2
2)
Objetivos................................................................................................................................................2
3)
Desarrollo...............................................................................................................................................2 3.1) Descripción del código........................................................................................................................2 3.1.1) Marco teórico..............................................................................................................................2 3.2) Estructura del código..........................................................................................................................4 3.2.1) Filtro pasa bajos...........................................................................................................................4 3.2.2) FIltro pasa altos............................................................................................................................5 3.2.3) Filtro pasa banda.........................................................................................................................5 3.2.4) Ecualización.................................................................................................................................5 3.2.5) DIstorsión.....................................................................................................................................6 3.3) Generando la función final.................................................................................................................6
4)
Comentarios...........................................................................................................................................8
5)
Conclusiones..........................................................................................................................................8
6)
Referencias.............................................................................................................................................8
Anexos............................................................................................................................................................9
1) INTRODUCCIÓN
Como parte de la evaluación final de la materia Procesamiento Digital de Señales, se plantea un programa diseñado en Matlab que permita una aplicación para el área de acústica y/o sonido. En este caso, se plantea la realización de diferentes tipos de filtros y distorsión en un solo programa que puedan procesar una señal de audio cargada por el usuario. Se presenta a continuación el procedimiento y resultados para llegar a diseñar el programa.
2) OBJETIVOS
Diseñar un programa en Matlab con aplicación en acústica y/o sonido
Redactar un informe con el análisis de la estructura y funcionamiento del programa
Adquirir un criterio objetivo y subjetivo sobre el uso de aplicaciones en el campo de acústica y sonido diseñadas en Matlab
3) DESARROLLO 3.1) D ESCRIPCIÓN D EL CÓDIGO
Como se mencionó anteriormente, se va a realizar un programa en Matlab en el cual contenga diferentes tipos de filtros y distorsión para que puedan procesar una señal de audio cargada por el usuario. Para ello, se debe identificar qué funciones se puede usar que minimicen el código y comprobar su funcionamiento. 3.1.1) MARCO TEÓRICO
Un filtro digital es un tipo de filtro que se aplican en señales discretas y cuantizadas mediante software o un circuito digital. Con los distintos tipos de filtros digitales se puede atenuar o amplificar cierto rango de frecuencias.
Existen filtros del tipo pasa bajos, pasa altos y pasa banda. Cada uno como su nombre indica, permite enfatizar frecuencias bajas, altas y ciertas bandas respectivamente. Para el diseño de filtros de manera eficiente se va a utilizar la función fir1, la cual permite diseñarlos de manera rápida Las ventajas de utilizar filtros de duración finita son:
Pueden tener exactamente fase lineal
Siempre son estables
El método de diseño es lineal
Pueden ser implementados eficientemente en hardware
Las transientes del filtro tienen duración finita
La sintaxis de uso en Matlab de fir1 es la siguiente:
Como no se tienen muchos argumentos, diseñar filtros con esta función será relativamente fácil. Para el caso de la distorsión, simplemente se puede llevar la señal de audio por una función trigonométrica arco tangente y multiplicarla por una constante mayor a 1. De esta manera se puede llegar a saturar la señal. Se puede usar también la función tangente hiperbólica.
3.2) E STRU CTURA DE L CÓDIGO
La finalidad del código será procesar una señal de audio cargada por el usuario y luego pasará por un filtro pasa bajo, pasa alto y pasa banda. En cada filtro se puede especificar el rango de audición y la frecuencia de corte. Al final se puede realizar un tipo de ecualización básica, multiplicando por una constante
distintos
filtros
pasa
banda
y
sumándolos,
posteriormente
reproducirlo. Para el caso de la distorsión se cargará la señal de audio y se debe seleccionar la razón con la cual se va a saturar la señal, como se mencionó anteriormente, una constante mayor a 1. El primer paso es cargar el audio en Matlab con su respectiva frecuencia de muestreo con el código y luego reproducir para escuchar la señal original: >> [y,Fs]=audioread('unintended.wav'); soundsc(y,Fs);
A continuación se presenta el código y su funcionamiento para cada filtro y distorsión: 3.2.1) FILTRO PASA BAJOS
>> pbajo=fir1(500,500/22000); >> pasabajo=filter(pbajo,1,y); >> soundsc(pasabajo,Fs);
Lo que se hace con este código es generar un filtro pasabajo con frecuencia de corte 500Hz. Se selecciona un rango audible y se procede a filtrarlo con la función filter a la señal de audio. Por último se la reproduce.
3.2.2) FILTRO PASA ALTOS >> palto=fir1(500,5000/22000,'DC-0'); >> pasaalto=filter(palto,1,y); >> soundsc(pasaalto,Fs);
Lo que se hace con este código es generar un filtro pasa alto con frecuencia de corte 5000Hz. Se selecciona un rango audible y se procede a filtrarlo con la función filter a la señal de audio. Es necesario poner el comando ‘DC-0’ para que la función fir1 sepa qué tipo de filtro queremos implementar. Por último se la reproduce.
3.2.3) FILTRO PASA BAN DA >> pbanda=fir1(500,[500/22000 1000/22000],'DC-0'); >> pasabanda=filter(pbanda,1,y); >> soundsc(pasabanda,Fs);
Lo que se hace con este código es generar un filtro pasa banda con frecuencia de corte 500Hz y 1000Hz. Se selecciona un rango audible y se procede a filtrarlo con la función filter a la señal de audio. Es necesario poner el comando ‘DC-0’ para que la función fir1 sepa qué tipo de filtro queremos implementar. Por último se la reproduce.
3.2.4) ECUAL IZACIÓN >> ecualizacion = pasabajo+400*pasabanda+500*pasaalto; >> soundsc(ecualizacion,Fs);
Lo que se hace con este código es generar una suma de todos los filtros anteriores y simular un ecualizador de 3 bandas con amplificación en frecuencias medias y altas.
3.2.5) DISTORSIÓN >> distorsion=atan(25*y); >> soundsc(distorsion,Fs);
Lo que se hace en este código es tomar la señal y saturarla con una forma de una función arco tangente. En este caso se la satura con un coeficiente 25. Por último se lo reproduce.
3.3) GENE RAN DO LA FUN CIÓN FINAL
Como nuestro objetivo es un realizar un programa que realice todos los filtros y distorsiones mencionados anteriormente, vamos a unir todo el código en un archivo de extensión “m” para que solo se aplique el comando en la consola y empiecen a reproducirse los distintos filtros y distorsiones realizadas. El código final queda de la siguiente manera:
function x=filtrosydist() [y,Fs]=audioread('unintended.wav'); soundsc(y,Fs); pause; %Primero se carga y despues sonara el audio original %Se debe aplastar una tecla para continuar %Implementando filtro pasa bajo pbajo=fir1(500,500/22000); pasabajo=filter(pbajo,1,y); soundsc(pasabajo,Fs); pause; %Empieza a sonar el audio con filtro pasa bajo %Se debe aplastar una tecla para continuar %Implementando filtro pasa alto palto=fir1(500,5000/22000,'DC-0'); pasaalto=filter(palto,1,y); soundsc(pasaalto,Fs); pause; %Empieza a sonar el audio con filtro pasa alto %Se debe aplastar una tecla para continuar %Implementando filtro pasa banda
4) COMENTARIOS
Para que la función empiece a ejecutarse, solo hay que escribir “filtrosydist” en el comando de Matlab y se cargará el audio de manera automáticamente (siempre y cuando se haya copiado el archivo de audio en la carpeta de Matlab anteriormente) y después empezará a sonar cada filtro y distorsión en el orden que se presentó anteriormente. Hay que tomar en cuenta que después de que se escucha el audio original hay que aplastar una tecla para reproducir el siguiente efecto.
5) CONCLUSIONES
Matlab posee varias funciones que facilitan el proceso matemático en cuanto a procesamiento de audio
Matlab es una herramienta bastante potente y rápida para realizar filtros FIR
El código se generó exitosamente y puede ser modificado para que posteriormente se puedan realizar filtros con otras frecuencias de corte o distorsiones.
6) REFERENCIAS
Pfister, Henry. (2005). From EQ to Reverb & Distortion: DSP Audio Effects in Matlab. Estados Unidos: Durham. Duke University. Recuperado el 20 de enero de 2016 de http://pfister.ee.duke.edu/courses/ece485/dsp.pdf Mathworks. (2015). FIR, Recuperado el 20 de enero de 2016 de http://www.mathworks.com/help/signal/ref/fir1.html
ANEXOS
Ilustración 1 Captura de pantalla del programa
Ilustración 2 Descripción de la funcion fir1
Ilustración 3 Descripción de argumentos de la funcion fir...