Filtro Mágico

ELO 329: Diseño y Programación Orientada a Objetos

 

Proyecto: Ecualizador Filtro Mágico


Integrantes: 
                         
                         

Descripción del Problema
 

"Filtro mágico" nace frente a la necesidad de mejorar la calidad de reproducción de audios digital para lograr una calidad sonora amena para los usuarios. Para ello es necesario procesar señales de audio para suplir las deficiencias de la parte física de los equipos reproductores de audio (principalmente parlantes).
Para mejorar estos problemas se recurre a la ecualización, es decir, el ajuste de la ganancia de ciertas bandas de frecuencia en el espectro audible.

Análisis

    En nuestros dias el frujo de información digital es cada día más grande y al mismo tiempo el intercambio de musica, pero si bien todos pueden tener la misma información digital en sus computadoras no todos tienen la misma calidad en sus equipos de reproducción fisicos (parlantes, equipos de musica, audifonos, etc) por lo que se hace necesario recurrir a la modificacion de las bandas de frecuenia de la música para suplir estas falencias. Para ellos se piensa en el desarrollo de una interfas gráfica que permita interactuar en primera medida con algunas configuraciones básicas de manejo de audio y asi dejar planteado el desafío de desarrollar algoritmos que permitar mejorar la calidad auditiva de las personas a través de correcciones via software de los espectros musicales.
"Filtro mágico" logra cargar un archivo de audio, reproducirlo y además controlar el eculizador, modificando las ganancia de las bandas de frecuencia para realizar las correcciones necesarias. Si se carga más de un archivo de audio, estos se ponen en una lista que luego podrá ser reproducida bajo los requerimientos del usuario.
Características:
    Soporta archivos .mp3, ogg, wav.
    Se utiliza de la clase Basicplayer:
    La ecualización se hace a partir de filtros pasabanda.
    Cada banda de frecuencia es modificada en un rango de [-6,6][dB]


   
Casos de Uso

    Antes de definir los casos de uso se plantean los requerimientos funcionales que la aplicación debe tener:

Caso de Uso 1:
Nombre: Cargar playlist.
Propósito: Cargar más de un archivo mp3.
Actor: Usuario.
Pre-Condición: Haber cargado un archivo previamente.
Evento: El Usuario desde el botón abrir archivo carga una archivo.mp3 luego de haber cargado otro previamente.
Post-Condición: Las canciones cargadas aparecen una lista en la pantalla.
Tipo: Manual.

Curso Normal de Eventos
Actor Sistema
El usuario presiona la opcion inicio/cargar para un archivo
El sistema despliega una ventana emergente para la búsqueda de el archivo
El usuario selecciona el archivo de interes
El sistema carga la ruta del archivo al programa.

Despliega en la playlist el nombre del archivo
Nuevamente presiona la opción inicio/cargar para un archivo
El sistema despliega una ventana emergente para la busqueda de el archivo
Selecciona el archivo de interes.
Carga la ruta del archivo al programa

Despliega en la playlist el nombre del archivo

Curso Alternativo de Eventos
Actor
Sistema
Cancelar la ventana emergente para cargar el archivo
Cierra la ventana y de la playlist inalterada


Caso de Uso 2:
Nombre: Ecualizar archivos.
Propósito: Modificar ganancia de bandas de frecuencias en el archivo reproduciéndose actualmente. Actor: Usuario.
Pre-Condición: No existe.
Evento: Un archivo .mp3 se está reproduciendo.
Post-Condición: La ganancia de las diferentes bandas disminuye su intensidad si el slider se sube del punto medio y aumenta su intensidad si el slider se baja. La Ganancia fluctúa entre [-6,6] [dB]..
Tipo: Manual.

Curso Normal de Eventos
Actor
Sistema
El usuario presiona play para reproducir archivo previamente cargado.
El sistema la reproduce.

Elección de uno de los Slide con una frecuencia puntual y modificación su valor desplazando el Slide.o

Curso Alternativo de eventos
Actor
Sistema
Presiona el botón de "set default" Reinicia los valores de los slide a 0, quedando con la configuración inicial


Caso de Uso 3:
Nombre: Balance.
Propósito: Disminuir el volumen de un parlante con respecto al otro, para balancear la salida de audio hacia uno.
Actor: Usuario.
Pre-Condición: Un archivo .mp3 se está reproduciendo.
Evento: El usuario mueve un slider horizontal hacia izquierda o derecha indicando para cual lado quiere que se balancee el audio en reproducción.
Post-Condición: Si el slider se ubica hacia la derecha del punto central, se oye más fuerte ese parlante y viceversa.
Tipo: Manual.

Curso Normal de Eventos
Actor
Sistema
El usuario arrastra con el mouse el slider de balance en alguna dirección. El Sistema toma el nuevo valor y cambia las ganancias de los canales.

El Sistema envía señal de audio con nuevo balance de ganancia por canal en la salida.




Pruebas de Caso de Usos


 Prueba Caso de Uso 1:
A continuación se muestra la aplicación con una playlist cargada mostrándose en pantalla.



Prueba Caso de Uso 2:
Se reproduce un archivo de prueba con tonos puros dentro de las diferentes bandas y se va modificando a través de la interfaz los diferentes valores de ganancia de los filtros al mover la barra deslizadora. De esta manera se comprueba de mejor manera si cada uno de los filtros están funcionando.




Diagrama UML de clases:
    Diagrama de Clases

Dificultades Encontradas:
    Una de las principales dificultades fue comprobar que la biblioteca utilizada funcionaba como debía en relación a los filtros pasabanda que utiliza y conocer las frecuencias que modificaba con estos filtros, lo que dio lugar a una extensa prueba del caso de uso 2. Otra dificultad fue intentar reproducir la lista de canciones constantemente, es decir, en un loop continuo que solo se detuviera cuand el usuario lo indicara como los reproductores de hoy en dia funcionan.

Bugs Conocidos:
    Bugs de esta versión: Es posible cargar una lista de archivos de audio y reproducirla, pero no automáticamente. Se debe presionar Play cada vez que se quiera escuchar una canción de la playlist.



Implementación:
    A continuación se muestra una imagen de la aplicación funcionando

                          
 


Código Fuente:   
 
Filtromagico