NUMERO RAE PROGRAMA AUTOR TITULO Diseño y desarrollo de...

38
Fecha Mayo 29 de 2010 NUMERO RAE PROGRAMA Tecnología en Sistemas AUTOR Ismael Enrique Ortega Galván TITULO Diseño y desarrollo de prototipo funcional de analizador espectral de señales de audio utilizando Netbeans 6.8 PALABRAS CLAVE FFT, Java, Netbeans, señales, DSP, Ondas, espectro DESCRIPCIÓN Este documento presenta el proceso de diseño e implementación de un Prototipo de analizador espectral implementado en Netbeans 6.8. Aquí son expuestos principios básicos de procesamiento de señales y una introducción al Java Sound API FUENTES BIBLIOGRÁFICAS BARRERO FEDERICO; TORAL SERGIO;RUIZ MARIANO. Procesadores Digitales de Señales de altas prestaciones de Texas Instruments KUO SEN; LEE BOB. Real time digital signal processing implementations applications and experiments with the TMS32C55X LAPLANTE, PHILLIP A. Real time system design and analysis LYON, DOUGLAS & RAO, HAYAGRIVA. Java Digital Signal Processing SMITH, STEVEN. The Scientist and Engineers Guide to Digital Signal Processing WREN JAMES & DAVIES DON, What are dB, Noise Floor & Dynamic Range? SCMULLER, JOSEPH. Aprendiendo UML en 24 horas GILBERT, DAVID. The JFreeChart Class Library developer guide GARCÍA, JAVIER; RODRIGUEZ JOSE; MINGO IÑIGA; IMAZ AITOR; BRAZÁLEZ ALFONSO; LARZABAL, ALBERTO; CALLEJA, JESUS; GARCÍA, JON. Aprenda Java como si estuviera en primero SUN MICROSYSTEMS. Java Sound Developer Guide SIMON, JONATHAN. Integrating audio with Java applications LARMAN, CRAIG. Applying UML and Patterns and Introduction to Object Oriented Analysis and Design and Iterative development. Referencias web www.mentores.com es.wikipedia.org CONTENIDOS Este documento inicia con el planteamiento del problema, descripción y formulación del problema, objetivos a desarrollar, alcances y limitaciones. Luego, es presentado el marco teórico - conceptual el cual reúne toda la información de los temas concernientes al proyecto

Transcript of NUMERO RAE PROGRAMA AUTOR TITULO Diseño y desarrollo de...

Fecha Mayo 29 de 2010

NUMERO RAE

PROGRAMA Tecnología en Sistemas

AUTOR Ismael Enrique Ortega Galván

TITULO Diseño y desarrollo de prototipo funcional de analizador espectral de señales de audio utilizando Netbeans 6.8

PALABRAS CLAVE

FFT, Java, Netbeans, señales, DSP, Ondas, espectro

DESCRIPCIÓN

Este documento presenta el proceso de diseño e implementación de un Prototipo de analizador

espectral implementado en Netbeans 6.8. Aquí son expuestos principios básicos de procesamiento de señales y una introducción al Java Sound API

FUENTES BIBLIOGRÁFICAS

BARRERO FEDERICO; TORAL SERGIO;RUIZ MARIANO. Procesadores Digitales de Señales de altas prestaciones de Texas Instruments KUO SEN; LEE BOB. Real time digital signal processing implementations applications and experiments with the TMS32C55X LAPLANTE, PHILLIP A. Real time system design and analysis LYON, DOUGLAS & RAO, HAYAGRIVA. Java Digital Signal Processing SMITH, STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing WREN JAMES & DAVIES DON, What are dB, Noise Floor & Dynamic Range? SCMULLER, JOSEPH. Aprendiendo UML en 24 horas GILBERT, DAVID. The JFreeChart Class Library developer guide GARCÍA, JAVIER; RODRIGUEZ JOSE; MINGO IÑIGA; IMAZ AITOR; BRAZÁLEZ ALFONSO; LARZABAL, ALBERTO; CALLEJA, JESUS; GARCÍA, JON. Aprenda Java como si estuviera en primero SUN MICROSYSTEMS. Java Sound Developer Guide SIMON, JONATHAN. Integrating audio with Java applications LARMAN, CRAIG. Applying UML and Patterns and Introduction to Object Oriented Analysis and Design and Iterative development. Referencias web www.mentores.com es.wikipedia.org

CONTENIDOS Este documento inicia con el planteamiento del problema,

descripción y formulación del problema, objetivos a desarrollar,

alcances y limitaciones. Luego, es presentado el marco teórico - conceptual

el cual reúne toda la información de los temas concernientes al proyecto

(conceptos DSP, UML, Java Sound API)

En la tercera parte se presenta el enfoque de la metodología y la

línea de investigación. Ya por último se muestra el desarrollo

ingenieril el cual describen los procedimientos, documentos y diagramas

realizados durante la investigación

METODOLOGÍA

Puede afirmarse que la presente investigación es de un enfoque empírico-analítico, ya que tiene un interés altamente técnico buscando contrastar permanentemente los conceptos matemáticos y de diseño de software expuestos en el marco teórico con los resultados concretos observados en el desarrollo de una aplicación.

CONCLUSIONES Java es una herramienta que puede proporcionar grandes ventajas a los desarrolladores de aplicaciones de procesamiento de señal gracias a su portabilidad y carácter libre. Sin embargo hay todavía mucho esfuerzo por hacer para que procedimientos propios de esta área de la ingeniería sean desarrollados con gran facilidad como en entornos como Matlab, Scilab o Labview.

JfreeChart es una librería que proporciona grandes facilidades y mejoras estéticas para las aplicaciones gráficas. Esta es una herramienta indispensable para todo desarrollador de aplicaciones de análisis y procesamiento de señales en Java.

El Java Sound API es una herramienta muy poderosa y flexible para el manejo de audio digital ya que permite un fácil control de parámetros como ganancia mezcla, entre otros.

A pesar de la flexibilidad mencionada del Java Sound API un gran problema es el hecho de que los datos de las señales de audio que este le provee al desarrollador son dados en bytes, estando el desarrollador en la necesidad de implementar algoritmos que permitan representarlos como datos float para la fácil realización de los diferentes proceso a la señal

1

Diseño y desarrollo de prototipo funcional de analizador espectral de señales de audio utilizando Netbeans 6.8

Presentado: Ismael Enrique Ortega Galván

PROYECTO DE GRADO PROGRAMA TECNOLOGÍA EN SISTEMAS

UNIVERSIDAD DE SAN BUENAVENTURA –sede Bogotá 15 de Mayo de 2010

2

CONTENIDO

pág. Introducción 1. Planteamiento del problema 1.1 Antecedentes 1.2 Descripción y formulación del problema 1.3 Justificación 1.4 Objetivos de la Investigación 1.4.1 Objetivo general 1.4.2 Objetivos específicos. 1.5 ALCANCES Y LIMITACIONES DEL PROYECTO 1.5.1 ALCANCES 1.5.2 LIMITACIONES 2. MARCO DE REFERENCIA 2.1 MARCO TEÓRICO – CONCEPTUAL 2.1.1 Introducción al procesamiento digital de señales 2.1.2 El procesamiento digital de señales (DSP) 2.1.3 Desarrollo de proyectos de Software 2.1.4 Java Sound API 3. METODOLOGÍA* 3.1 ENFOQUE DE LA INVESTIGACIÓN 3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD /

CAMPO TEMÁTICO DEL PROGRAMA 3.3 TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN 3.4 HIPÓTESIS 4. Desarrollo Ingenieril 4.1 INTRODUCCION GENERAL DEL PROCESO DE INVESTIGACION – CICLO DE VIDA DEL PROYECTO 4.2 Requerimientos 4.2.1 Descripción del Sistema deseado 4.2.2 Diagrama de Casos de Uso 4.2.4 Componentes generales del Sistema 4.4 Diseño 4.4.1 Definición de clases 4.4.2 Diagramas de flujo 4.5 Implementación 4.5.1 Jfreechart 4.5.2 Librería científica y numérica de Michael Thomas Flanagan 4.6 Pruebas 4.6 Imágenes del sistema 5. Conclusiones

3

6. BIBLIOGRAFÍA 7. GLOSARIO

INTRODUCCIÓN El creciente aumento en la potencia de cálculo de los procesadores de los computadores personales, Palm’s y teléfonos celulares, junto a la mejora y mayor integración de diversos periféricos a dichos dispositivos (como micrófonos, parlantes, cámaras, entre otros) ha hecho que las aplicaciones para procesamiento, análisis y extracción de información de señales tomadas del mundo real (como sonido, luz, ondas electromagnéticas, etc) se estén convirtiendo en herramientas cada vez más útiles e incluso indispensables en diversos campos de la ingeniería, la investigación científica, la industria y otras áreas de producción. Por otro lado, las diversas posibilidades que ofrecen los entornos libres de programación como Java a los desarrolladores de sistemas de procesamiento digital de señales (en adelante DSP) para leer y escribir datos desde y hacia diversos periféricos, de la mano con librerías para la manipulación y análisis de las mismas, hacen cada vez másviable el desarrollo de herramientas de este tipo en Colombia y América Latina. La presente investigación tiene como propósito explorar las funcionalidades de Java para el tratamiento de audio por medio del desarrollo de una aplicación que puede servir como base para herramientas útiles y versátiles en campos como el sonido en vivo, la acústica, la producción musical y demás áreas de la ingeniería de sonido. Dicha aplicación ha de ser capaz de ilustrar gráficamente el espectro de potencia de una señal que ha sido creada, leída de un dispositivo de almacenamiento o adquirida por la misma aplicación. Así, el usuario puede crear y reproducir señales elementales (seno, diente de sierra, triangular, cuadrada) a diferentes frecuencias y amplitudes, grabar señales de audio a través del ADC del PC, leer archivos de audio y observar gráficamente su espectro de potencia. Por último, se espera que el presente documento sirva como guía para el diseño, desarrollo y documentación de aplicaciones DSP para todo aquel que se interese en esta área.

4

1. PLANTEAMIENTO DEL PROBLEMA 1.1 ANTECEDENTES En general pueden encontrarse analizadores de espectro tanto en hardware como en software, siendo estos últimos más económicos y flexibles que los primeros. En cuanto a aplicaciones software, es posible encontrar plug-ings incluidos en muchos software de edición de audio propietarios, como Adobe Audition, Nuendo, Pro-tools entre otros. Por otro lado, pueden encontrarse algunas aplicaciones de análisis espectral entre las que puede destacarse, dentro de los de carácter propietario a WinAudioMLS - www.dr-jordan-design.de/Winaudiomls.htm-, que es una aplicación Windows para análisis de sistemas y señales en tiempo real. Esta herramienta puede ser utilizada para mediciones de altoparlantes, reparación y diseño de equipos de audio. WinAudioMLS se encuentra en cuatro versiones básicas: Light, PRO, PRO EX y LAB, con precios (a la fecha del documento) que van desde € 95 hasta € 479. Entre las aplicaciones libres debe resaltarse SONOGRAM, desarrollado por Centro de Investigación Alemán de Investigación en Inteligencia Artificial, una aplicación Java para el análisis de archivos de audio, ofreciendo diversas formas de visualización en dominio del tiempo y la frecuencia útiles para el análisis de voz. 1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA Diversas actividades de la ingeniería traen consigo la aplicación de señales conocidas (seno, cuadrada, ruido blanco, etc) a sistemas electrónicos o electro-acústicos, así como la grabación y análisis del contenido espectral de las señales generadas por dichos sistemas. Así por ejemplo, un ingeniero de sonido aplica ruido blanco o rosa a una cadena de equipos de audio y ajusta la ecualización en función de la repuesta en frecuencia del sistema; procesos similares son realizados por ingenieros electrónicos, de comunicaciones, entre otros. Por otro lado, el costo de desarrollo de herramientas de este tipo utilizando entornos de desarrollo propietarios ha hecho limitada su producción en América Latina. Teniendo en cuenta la problemática planteada, ¿Cómo se puede desarrollar una herramienta en software libre que permita analizar el espectro de potencia de señales de audio leídas, creadas o adquiridas por la misma aplicación?

5

1.3 JUSTIFICACIÓN Las herramientas de análisis de señales son de gran utilidad para los ingenieros dentro del diseño y construcción de sistemas eléctricos, electrónicos, de telecomunicaciones, de audio, entre otros. Más específicamente, las herramientas de análisis espectral son indispensables para la creación de filtros, ecualización y calibración de sistemas electro – acústicos y en general, cualquier sistema que modifique el contenido espectral de una señal. A pesar de lo anterior, el hecho de que los entornos de desarrollo DSP más populares (como Matlab, LabView, entre otros) sean de carácter propietario hace que la construcción de soluciones de este tipo requieran altas inversiones por concepto de pago de licencias, dificultando y en muchos casos imposibilitando la ejecución de herramientas de este tipo. Es esta la principal motivación del proyecto, teniendo como importante factor de innovación (a nivel institucional) la utilización de Java para aplicaciones DSP, aprovechando las ventajas de portabilidad y tipo licencia ofrecidas por este lenguaje de programación. Finalmente, la factibilidad del proyecto está sustentada en la disponibilidad de librerías para el manejo de señales de audio en Java y la experiencia del autor de este proyecto en el desarrollo de aplicaciones DSP en Matlab.

6

1.4 OBJETIVOS DE LA INVESTIGACIÓN 1.4.1 Objetivo General Desarrollar una aplicación Java que permita analizar el espectro de potencia de señales audio. 1.4.2 Objetivos Específicos

Diseñar los módulos de: generación de señales, reproducción y captura controlada de audio.

Desarrollar interfaz gráfica de usuario (GUI) que permita la utilización y control de los módulos restantes.

Implementar módulo de cálculo y graficación de FFT para señales de audio leídas del disco duro del computador.

Implementar módulo que permita la captura y reproducción controlada de audio utilizando los ADC y DAC del computador, así como la lectura y escritura de archivos de audio almacenados en el disco duro del mismo.

Desarrollar módulo de generación de señales elementales como son: seno, triangular, cuadrada, diente de sierra, ruido blanco y ruido rosa.

1.6 ALCANCES Y LIMITACIONES DEL PROYECTO 1.5.1 ALCANCES Teniendo en cuenta los objetivos planteados se puede deducir que la aplicación a construir le permite a un usuario generar diversas señales de prueba (seno,etc), reproducir y capturar audio controladamente, así como realizar la FFT a aun archivo de audio previamente grabado. Sin embargo, quien desarrolla el proyecto orientará sus esfuerzos hacia lograr, en el tiempo estipulado, convertir la aplicación en una herramienta para análisis en tiempo real, es decir, que con la herramienta sea posible aplicar señales de prueba a un sistema al mismo tiempo que se graba la salida que este genera y se grafica su FFT. 1.5.2 LIMITACIONES Deben tenerse presentes las limitaciones que Java posee con respecto a otros entornos de desarrollo DSP en lo que se refiere al análisis de señales, más específicamente en el uso de la FFT. Es por esto que uno de las principales líneas de trabajo es el desarrollo de dicho algoritmo o la adaptación de este desde algún otro lenguaje de programación, siendo siempre consciente de que el resultado de

7

este trabajo puede afectar considerablemente el tiempo de respuesta de la aplicación al calcular la FFT, pudiendo llegar al limite de hacer imposible la implementación en tiempo real de dicho proceso.

8

2. MARCO DE REFERENCIA 2.1 MARCO TEÓRICO - CONCEPTUAL 2.1.1 Introducción al procesamiento digital de señales Señales y sistemas Una señal es una descripción de cómo un parámetro varía en función de otro. Por ejemplo, la variación de voltaje sobre un punto de un circuito, el nivel de ruido generado por una máquina durante un tiempo determinado, etc. Un sistema es cualquier proceso que produzca una señal de salida en función de una señal de entrada. Los sistemas pueden ser continuos si sus señales de entrada y salida son continuas en tiempo y amplitud, como los circuitos electrónicos análogos1, pueden ser discretos, si sus señales de entrada y salida son discretas, como una secuencia de números definidos sólo para unos instantes de tiempo determinados y con un rango continuo de valores, o digitales si sus señales de entrada y salida son digitales, es decir, discretas en tiempo y amplitud, como los datos de un archivo de audio2.

Figura 1. Sistemas análogos y digitales3

Formas de onda elementales Como fue mencionado antes en este documento, es una práctica común de la ingeniería utilizar señales con formas de onda conocidas como señales de prueba al momento de estudiar el comportamiento de sistemas de diversos tipos. A continuación son brevemente explicadas cuatro formas de onda utilizadas comúnmente.

1 SMITH, STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pag 87

2 KUO SEN; LEE BOB. Real time digital signal processing implementations, applications and experiments

with the TMS32C55X, pág 1. 3 SMITH, STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pag 87

9

Onda senoidal Es una señal cuyo valor de amplitud está definida por la función:

X[n] = A * seno (2*pi*f+ ph)

Donde: A es la amplitud pico de la señal F es la frecuencia de oscilación Ph es la fase de la señal

Figura 2. Onda senoidal

Onda Triangular La onda triangular es un tipo de señal periódica que presenta unas velocidades de subida y bajada (Slew Rate) constantes. Lo más habitual es que sea simétrica, es decir que, los tiempos de subida y bajada son iguales.

Figura 3. Onda triangular

10

Onda Diente de Sierra

La forma de onda diente de sierra es un tipo de onda periódica no senoidal. Es llamada de este modo debido a su parecido a los dientes una hoja de sierra. La convención es que la onda sube en una rampa hasta el punto máximo y baja inmediatamente al valor mínimo.

Figura 4. Onda diente de sierra.

Onda cuadrada

Se conoce por onda cuadrada a la onda que alterna su valor entre dos valores extremos sin pasar por los valores intermedios (al contrario de lo que sucede con la onda senoidal y la onda triangular, etc.). Se usa principalmente para la generación pulsos eléctricos que son usados como señales (1 y 0) que permiten ser manipuladas fácilmente. Un circuito electrónico que genera ondas cuadradas se conoce como generador de pulsos, este tipo de circuitos es la base de la electrónica digital.

11

Figura 5. Onda cuadrada

2.1.2 El procesamiento digital de señales (DSP) El DSP se diferencia de las demás ciencias computacionales porque los datos que en éste se procesan y analizan son señales. En muchas ocasiones estas señales son originadas por fenómenos físicos del mundo real como vibraciones de estructuras, ondas sonoras, electromagnéticas, de luz, etc4, y en otras por fenómenos no físicos como datos financieros, datos estadísticos, de tráfico de una red, entre otros. En resumen el procesamiento digital de señales puede ser desarrollado sobre cualquier evento que se pueda grabar5. Así, el DSP se refiere a la matemática, los algoritmos y las técnicas utilizadas para representar, manipular y extraer información de dichas señales después de que éstas han sido digitalizadas.6 Elementos básicos de un sistema DSP Existen dos tipos de aplicaciones DSP: de no tiempo real y de tiempo real. Las aplicaciones de no tiempo real involucran la manipulación de señales que han sido digitalizadas y almacenadas con anterioridad7. Este tipo de aplicaciones no tienen un tiempo determinado para generar los resultados. En las aplicaciones de tiempo real se manipulan señales mientras éstas están siendo digitalizadas. En este tipo

4 SMITH, STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pág 1

5 LYON, DOUGLAS & RAO, HAYAGRIVA. Java Digital Signal Processing, pág 66

6 SMITH STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pág 1

7 KUO SEN; LEE BOB. Real time digital signal processing implementations, applications and experiments

with the TMS32C55X

12

de aplicaciones existen un tiempo determinado para realizar todas las tareas y generar los resultados8. La figura 2 ilustra los bloques funcionales básicos de un sistema DSP.

Figura 6. Bloques funcionales de un sistema DSP. Puede notarse que el esquema está conformado por tres grupos de elementos: canales de entrada, canales de salida y procesador. El grupo denominado canal de estrada está conformado a su vez por las etapas de

Adecuación de la señal, donde ésta es amplificada y filtrada con el fin de maximizar sus voltajes dentro del rango disponible por el ADC9 y al mismo tiempo restringir aquella parte de su espectro que sea superior a la frecuencia de Nyquist.

ADC (Conversión Análogo – Digital por sus siglas en inglés), convierte la señal análoga x(t) en una secuencia digital de datos x[n] que corresponden a los valores de amplitud de x(t) en cada instante de tiempo n. En esta etapa la señal análoga es muestreada periódicamente cada T segundos en un proceso llamado sampling (muestreo), así un sampler ideal puede ser imaginado como un switch que abre y cierra periódicamente “tomando” los valores de voltaje de x(t) cada T segundos, donde10:

T = 1/Fs

8 LAPLANTE;PHILLIP A. Real – time system design and analysis, pág 4.

9WREN JAMES; DAVIES DON, What are dB, Noise Floor & Dynamic Range?

10 KUO SEN; LEE BOB. Real time digital signal processing implementations, applications and experiments

with the TMS32C55X.

Adecuación de

la señal ADC

Otros sistemas

digitales

Procesador

Otros sistemas

digitales

Conversión

Digital - Análogo

Amplificación

de la señal

Canal de Entrada

x(t) x’(t) x[n]

y(t) y’(t) y[n]

Canal de Salida

13

Fs es la frecuencia de muestreo (también llamada frecuencia de Sampleo o rata de muestreo) que, medida en Hertz, representa la cantidad de medidas que son “tomadas” de la señal análoga en 1 segundo. La figura 3 ilustra esta idea. En este punto, x[n] es una secuencia de valores continuos de amplitud correspondientes sólo a unos instantes específicos de tiempo, siendo así una señal discreta en tiempo y continua en amplitud. A partir de este momento, los valores de amplitud correspondientes a cada instante de tiempo son cuantizados (ajustados) dentro de uno de los 2^B valores definidos por el ADC, donde B es el tamaño de palabra con los que el conversor utiliza para representar el valor de amplitud cada muestra. Así por ejemplo, si se conecta una fuente de audio (reproductor, micrófono, etc) a la tarjeta de audio (ADC) de un PC corriente y ésta se configura para que grabe con una frecuencia de muestreo (sampling frecuency) de 44.1 Khz y con una resolución de 16 bits, cada segundo del audio análogo generado por la fuente será representado por 44100 datos, cada uno con un tamaño de palabra de 16 bits.

Otros sistemas digitales, como discos duros, puertos, y en general cualquier dispositivo de comunicación o almacenamiento de información puede ser también el origen de una señal a procesar. Así por ejemplo, podría desearse un sistema DSP que procese señales de audio previamente digitalizadas y almacenas en algún formato digital (.wav,.aiff,.au, .mp3 etc)

Procesador, dispositivo provisto de CPU, se caracteriza por ser capaz de ejecutar programas almacenados en una memoria11. Es este el elemento que ejecuta las instrucciones programadas por el desarrollador para extraer información y manipular la señal adquirida y/o generar señales –digitales - de salida.

DAC: realiza la operación inversa al ADC, generando una señal análoga, a partir de una secuencia digital de datos.

Amplificación, es generalmente necesaria ya que los rangos de voltajes manejaos por los DAC suelen ser muy inferiores a los necesitados en la mayoría de las aplicaciones.

11

BARRERO FEDERICO; TORAL SERGIO;RUIZ MARIANO, Procesadores Digitales de Señales de

altas prestaciones de Texas Instruments

14

Figura 7. Un periodo de una señal senoidal continua x(t) de 10 Hz, en amarillo, es muestreado con Fs de 250 Hz, “tomando” el valor de amplitud de la señal continua cada 4 mseg (1/250 = 0.004). Con los datos adquiridos es creada x[n] – en color gris y línea punteda-, que es una representación discreta de x(t). La Transformada Discreta de Fourier (DFT) 12

El análisis de Fourier es una familia de técnicas matemática basadas en la descomposición de señales en senoidales. La DFT es el miembro de la familia usado con señales digitalizadas. El análisis de Fourier es llamado así en honor a su creador, el matemático y físico francés Jean Baptiste Joseph Fourier. Fourier estaba interesado en la propagación del calor, y presentó un paper en 1807 al Institut de France acerca del uso de senoidales para representar distribuciones de de calor sobre una superficie. El paper contenía una controversial afirmación (conocida actualmente como el teorema de Fourier) que decía que cualquier señal continua periódica puede ser representada como la suma de ondas senoidales escogidas apropiadamente. Como es ya sabido, las señales pueden ser continuas o discretas, y éstas pueden ser periódicas o aperiódicas. La combinación de éstas características genera las siguientes cuatro categorías [1]:

Tipo de Señal Transformada de Fourier

Aperiódica – Continua

Transformada de Fourier

Periódica – Continua Serie de Fourier

Aperiódica - Discreta Transformada de tiempo discreto de Fourier

12

SMITH STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pag 141

0 0.004 0.008 0.012 0.016 0.02 0.024 0.028 0.032 0.036 0.04 0.044 0.048 0.052 0.056 0.06 0.064 0.068 0.072 0.076 0.08 0.084 0.088 0.092 0.096 0.1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Tiempo (segundos)

Am

plitu

d (

Voltio

s)

Muestreo de Señal senoidal de 10 Hz con Fs =250 Hz

1 periodo de x (t). Seno continuo de 10 Hz

1 periodo de x[n]. Seno discreto de 10 Hz

Fs =250 Hz Ts = 1 / 250 = 0.004 seg

Periodo de muestreo: Ts

15

Periódica Discreta Transformada Discreta de Fourier

Tabla 1. Categorías de la transformada de Fourier según el tipo de señal a

analizar

En el sentido práctico la más utilizada es la DFT ya que, como se dijo arriba, ésta puede trabajar sobre señales digitalizadas. Aplicaciones de la DFT13 La DFT es una de las más importantes herramientas en el Procesamiento Digital de Señales, siendo utilizada más comúnmente para calcular el espectro de frecuencia de una señal, que es una examen directo de la información codificada en la frecuencia, fase y amplitud de las componentes senoidales de una señal. El análisis de señales de voz está basado en la realización de este procedimiento sobre grabaciones de habla. Por otro lado la DFT es también utilizada para determinar la respuesta en frecuencia de sistemas – como amplificadores, micrófonos, parlantes, efectos, etc), sin dejar de lado que la DFT es un paso intermedio importante dentro de gran parte de otras técnicas de procesamiento de señal. Transformada rápida de Fourier (FFT) Hay varias formas de calcular la DFT de una señal, como son: resolver ecuaciones lineales simultáneas o por correlación. La FFT es otro método para calcular la DFT, solo que produce los mismos resultados en una forma mucha más eficientemente, disminuyendo los tiempos de cálculo en incluso cientos de veces14. La FFT es uno de los algoritmos más complicados dentro del DSP, por fortuna existen funciones que ejecutan el proceso dentro de diferentes entornos de desarrollo. 2.1.3 Desarrollo de proyectos de Software Modelos de procesos de desarrollo de software

Históricamente, los dos modelos de proceso utilizados más popularmente son el modelo de cascada y el modelo espiral. Estos modelos proporcionan diversas aproximaciones al ciclo de vida de un proyecto. Se presenta a continuación una breve descripción de cada uno.

13

Ibid. 14

SMITH STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pag 225

16

Modelo en Cascada.

Este es el más básico de todos los modelos, y sirve como bloque de construcción para los demás modelos de ciclo de vida. Este modelo utiliza tramos como puntos de transición y de carga. Al usar el modelo de cascada, se necesitaría completar un conjunto de tareas en forma de fase para después continuar con la fase próxima. El modelo en cascada trabaja perfectamente para los proyectos en los cuales los requisitos del proyecto se encuentran definidos claramente y no son obligados a futuras modificaciones15.

Figura 8. Modelo cascada16

Modelo en Espiral

Este modelo se basa en la necesidad continua de refinar los requerimientos para un determinado proyecto. Las actividades de este modelo se conforman en una espiral, cada iteración representa un conjunto de actividades. Las actividades no están fijadas a priori, sino que las siguientes se eligen en función del análisis de riesgo, comenzando por ela la iteración anterior17. El modelo espiral es eficaz cuando se utiliza para el rápido desarrollo de proyectos muy pequeños. Esta logra consigo el acercamiento entre el equipo de desarrollo y el cliente porque el cliente es implicado en todas las etapas proporcionando la regeneración de proyecto y la aprobación del mismo.18

15

http://www.mentores.net/articulos/intro_microsoft_sol_frame.htm 16

Ibíd 17

http://es.wikipedia.org/wiki/Desarrollo_en_espiral 18

http://www.mentores.net/articulos/intro_microsoft_sol_frame.htm

17

Figura 9. Modelo en espiral19

Método de desarrollo escogido para el desarrollo de la aplicación Gracias a que los requisitos del sistema pueden ser definidos con claridad y a que el fin último de este proyecto es desarrollar un prototipo, se siguió un modelo de cascada. Al mismo tiempo, para planificar y controlar el desarrollo de la aplicación fue utilizado el método de desarrollo orientado a objeto propuesto por Craig Larman. Este proceso no fija una metodología estricta, sino que define series de actividades que pueden realizarse en cada fase, las cuales deben adaptarse según las condiciones del proyecto que se esté llevando a cabo. Se ha escogido seguir este proceso porque adopta un enfoque eminente práctico. A continuación son definidas las fases y tareas propuestas en el método de trabajo mencionado 20. Fase de Planificación y especificación de requerimientos Esta fase se corresponde con la Especificación de Requisitos tradicional ampliada con un Borrador de Modelo Conceptual y con una definición de Casos de Uso de alto nivel. En esta fase se decidiría si se aborda la construcción del sistema mediante desarrollo orientado a objetos o no, por lo que, en principio, es independiente del paradigma empleado posteriormente. Las actividades de esta fase son las siguientes:

19

http://upload.wikimedia.org/wikipedia/commons/thumb/3/39/ModeloEspiral.svg/359px-

ModeloEspiral.svg.png 20

Larman, Craig. Applying UML and Patterns an Introduction to Object Oriented Analysis and Design and

terative development

18

• Definir el Plan-Borrador. • Crear el Informe de Investigación Preliminar. • Definir los Requisitos. • Registrar Términos en el Glosario. (continuado en posteriores fases) • Implementar un Prototipo. (opcional) • Definir Casos de Uso (de alto nivel y esenciales). • Definir el Modelo Conceptual-Borrador. (puede retrasarse hasta una fase posterior) • Definir la Arquitectura del Sistema-Borrador. (puede retrasarse hasta una fase posterior) • Refinar el Plan. El orden no es estricto, lo normal es que las distintas actividades se solapen en el tiempo. Esto sucede también en las actividades de las fases de diseño Fase de Diseño En la fase de Diseño de un ciclo de desarrollo se investiga sobre el problema, sobre los conceptos relacionados con el subconjunto de casos de uso que se esté tratando. Se intenta llegar a una buena comprensión del problema por parte del equipo de desarrollo, sin entrar en cómo va a ser la solución en cuanto a detalles de implementación. Posteriormente, se crea una solución a nivel lógico para satisfacer los requisitos, basándose en el conocimiento reunido en la primera parte de la fase. Aquí se realizan los Diagrama de Clases de Diseño y los Diagramas de Interacción, que se realizan en paralelo y que definen los elementos que forman parte del sistema orientado a objetos que se va a construir (clases y objetos) y cómo colaboran entre sí para realizar las funciones que se piden al sistema, según éstas se definieron en los requerimientos del sistema. Las actividades que se realizan en la etapa de son las siguientes: 1. Definir los Casos de Uso Reales. 2. Definir Informes e Interfaz de Usuario. 3. Refinar la Arquitectura del Sistema. 4. Definir los Diagramas de Interacción. 5. Definir el Diagrama de Clases de Diseño. (en paralelo con los Diagramas de Interacción) 6. Definir el Esquema de Base de Datos.(si es necesario)

19

Fases de implementación y pruebas

Una vez se tiene completo el Diagrama de Clases de Diseño, se pasa a la implementación en el lenguaje de programación elegido. El programa obtenido se depura y prueba, y ya se tiene una parte del sistema funcionando que se puede probar con los futuros usuarios. Una vez se tiene una versión estable se pasa al siguiente ciclo de desarrollo para incrementar el sistema con los casos de uso asignados a tal ciclo.

2.1.4 Java Sound API El Java Sound es un API de sonido que le permite a los desarrolladores de Java integrar Audio dentro de sus aplicaciones. Este API de bajo nivel provee el soporte necesario para utilizar audio o MIDI (Music Instrument Digital Interface) dentro de aplicaciones desarrolladas en Java. Además permite mantener un control explicito sobre las características básicas que se utilizan dentro del procesamiento de audio, como control de ganancia, mezcla, etc., convirtiéndose en una herramienta muy poderosa y flexible para el manejo del Audio digital. Algunas de las características que lo convierten en una herramienta tan flexible son:

Soporta una gran cantidad de distintos formatos de Audio.

Permite implementar sistemas en tiempo real y en No tiempo real.

Implementa distintos algoritmos de síntesis de sonido. Esta herramienta permite el desarrollo de distintas áreas en donde el sonido juega un papel fundamental como lo puede ser las telecomunicaciones, reproducción de audio, desarrollo web, videojuegos, edición, mezcla de audio, etc. El Java Sound API provee mecanismos para instalar, acceder y manipular diferentes sistemas como Mezcladores de Audio, Sintetizadores MIDI, Conversores de formatos de audio, lectores y escritores de archivos, y otros tipos de dispositivos de manipulación de Audio. A pesar de esto no cuenta con editores de audio sofisticadoa o herramientas de graficación muy especializadas. Generalidades del Sampled Package del Sound API El Java Sound sampled package esta fundamentalmente enfocado al manejo de la reproducción y la captura de Audio, conocido en otras palabras como el Transport.

20

Esto quiere decir que su idea fundamental es controlar el movimiento de bytes de diferentes formatos de audio hacia y desde un sistema en particular. Esto involucra el manejo de las entradas y salidas de los dispositivos de audio (tarjetas de sonido), el manejo de Buffers para el procesamiento de sonido en tiempo real, mezcla de diferentes señales de audio en una sola, y todas las funciones básicas de un Transport como lo es play, pause, stop y rec. Conceptos esenciales del Java Sound API Para poder reproducir o capturar audio utilizando el Java Sound API hay que tener en cuenta 3 distintos conceptos que determinan el funcionamiento de este. Estos conceptos son Format, Mixing, Line. Format Esto se refiere a la capacidad que existe de reconocer distintos tipos de datos y de formatos de una señal que está siendo adquirida o de un archivo de audio almacenado. Este formato nos brinda información indispensable a la hora de procesar audio, como cuántos samples de un archivo de audio han sido leídos, o cuantos samples fueron adquiridos por un micrófono. Otros datos importantes son cuantos Bits contiene un sample o cual es su rata de muestreo, información necesaria para la captura y reproducción de sonido. En el Java Sound API el formato de los datos son representados por un objeto Audioformat, el cual incluye los siguientes atributos:

Técnicas de codificación, usualmente PCM (pulse code modulation)

Número de canales

Rata de sampleo o frecuencia de sampleo

Numero de Bits por sample

Rata de frame

Tamaño del frame en bytes

Tipo de Byte En el Jaca Sound API el formatos de los archivos es representado por un objeto Audiofileformat que contiene:

Tipo de archivo (WAV, AIFF)

Tamaño del archivo

Tamaño en frames del archivo

21

Mixing Muchas API para sonido utilizan el concepto de representar dispositivos de Audio como interfaces software que simulan las entradas y salidas físicas de un dispositivo como una tarjeta de sonido. Estos dispositivos dentro del Java Sound API son representados mediante objetos Mixer. El propósito de estos objetos es manejar uno o más señales de audio y convertirlas en una o más salidas, representado las capacidades reales que tiene un mezclador de audio, en donde se puede controlar y manipular varios canales de audio, procesar cada uno de esos canales para crear una mezcla final que será enviada a las salidas físicas del dispositivo, en este caso a las salidas físicas de la tarjeta de sonido. Además de representar las salidas y entradas del dsipositivo los objetos Mixer también representan todas las características reales de un mezclador, como lo son el control de nivel independiente por canal, el paneo, la ecualización los envíos auxiliares que permiten direccionar la señal de audio hacia dispositivos de procesamiento externos, etc. Esta representación de un sistema de mezcla real le permite al desarrollador de aplicaciones de audio en Java contar con un manejo claro y profundo sobre las señales de audio que están siendo utilizadas dentro del sistema, permitiendo tener un control profundo e intuitivo sobre el audio a procesar. A continuación se muestra una figura que simboliza las diferentes características del objeto Mixer.

22

Gráfica 10. Consola de mezcla física. Grafica tomada de Java Audio Programmer Guide Line El concepto de línea puede entenderse como un elemento del audio digital que permite establecer el camino que tiene una señal de audio dentro de un sistema. Las entradas y salidas de Audio son Líneas que son el análogo de la entrada de un micrófono y la salida hacia un parlante de una consola de mezcla real. Otro tipo de Línea es el camino a través del cual una aplicación puede adquirir una entrada de audio, o enviar una salida hacia un mixer, que serian el análogo de un grabador multitrack conectado a un mixer. Una diferencia entre las Líneas del Java Sound API y un mixer físico es que los datos de audio pasan a través de de la línea, pueden ser mono o estéreo directamente sin la necesidad de tener físicamente dos conexiones de entrada o de salida como lo necesitaría un mixer físico.

23

3. METODOLOGÍA* 3.1 ENFOQUE DE LA INVESTIGACIÓN Puede afirmarse que la presente investigación es de un enfoque empírico-analítico, ya que tiene un interés altamente técnico buscando contrastar permanentemente los conceptos matemáticos y de diseño de software expuestos en el marco teórico con los resultados concretos observados en el desarrollo de una aplicación. 3.2 LÍNEA DE INVESTIGACIÓN DE USB / SUB-LÍNEA DE FACULTAD / CAMPO TEMÁTICO DEL PROGRAMA El campo temático al que corresponde el presente proyecto es Algorítmica ya que la actividades a desarrollar giran en torno al diseño y desarrollo de algoritmos para procesar datos. Al mismo tiempo, el proyecto se ajusta a la sub – línea de procesamiento de señal, debido a que la aplicación a desarrollar realiza procesos que le conciernen a ésta área de la ingeniería. Por último, la línea de investigación institucional a la que mejor se ajusta es Tecnologías actuales y sociedad, porque el producto a desarrollar es de carácter netamente tecnológico. 3.3 TÉCNICAS DE RECOLECCIÓN DE INFORMACIÓN Los principales instrumentos de recolección de información fueron generadores y analizadores de señal en software a través de los cuales se verificó que las señales generadas por la aplicación tuvieran la frecuencia y forma esperada. En la misma manera se verificó que la gráfica de análisis espectral fuese precisa. 3.4 HIPÓTESIS Netbeans 6.8 con Java Sound API, es una herramienta apropiada para el desarrollo de aplicaciones de procesamiento digital de audio bajo plataformas libres.

24

4. Desarrollo Ingenieril 4.1 INTRODUCCION GENERAL DEL PROCESO DE INVESTIGACION – CICLO DE VIDA DEL PROYECTO Esta sección es la descripción del proceso de análisis, diseño, implementación y prueba de un prototipo de Analizador Espectral de señales de Audio, utilizando Netbeans 6.8 como entorno de desarrollo. La aplicación desarrollada finalmente es descrita con más detalle en la sección 4.2.1. La aplicación desarrollada fue llevada a cabo aplicando un ciclo de desarrollo de software básico, compuesto por las etapas de análisis de requisitos e investigación preliminar, diseño, implementación. El lenguaje Universal de Modelado UML fue aplicado antes y durante el trascurso de cada una de las etapas mencionadas. A continuación se amplía en los procedimientos realizados a lo largo del proyecto 4.2 Requerimientos Después de analizar los procedimientos más utilizados durante el análisis y procesamiento de audio, y usando como referencia diferentes analizadores espectrales software y hardware disponibles en el mercado, se delimitan los requerimientos y características del sistema deseado, teniendo como resultado una descripción escrita de este, presentada en la sección 4.2.1. A partir de esta descripción y de los objetivos planteados en el proyecto, es desarrollado el diagrama de Casos de Uso del sistema mostrado en la figura 10 4.2.1 Descripción del Sistema deseado La aplicación tiene como objetivo principal mostrar gráficamente el espectro de potencia de una señal de audio, permitiéndole al usuario analizar señales almacenadas en formato .wav o .au, o señales generadas o grabadas por la misma aplicación. La aplicación presenta una amigable interfaz gráfica que le permite al usuario cargar, generar o grabar una señal. Cuando el usuario escoge “cargar” la aplicación le permite escoger un archivo de audio en formato .wav o .au que se encuentra en el disco del Pc o en algún dispositivo de almacenamiento conectado a este. Si el usuario desea generar una señal, la aplicación le ofrece la posibilidad de crear una senoidal, diente de sierra, cuadrada o triangular, permitiéndole definir también los valores de amplitud y frecuencia. Si por el contrario el usuario desea adquirir una señal conectando un micrófono u otro dispositivo generador de señal la tarjeta de audio del Pc, el sistema ofrece la opción “Grabar”.

25

Después de definir la señal a analizar, la aplicación muestra una gráfica Tiempo vs Amplitud correspondiente a los datos de ésta. Al seleccionar el menú procesos, la aplicación ofrece la opción Amplitud donde se puede amplificar o normalizar la señal, así mismo al escoger la opción Frecuencia del mismo menú, el sistema muestra otra gráfica Frecuencia vs Valor correspondiente al espectro de potencia de la señal. Al finalizar el análisis, una señal grabada puede ser almacenada en formato .wav o .au al escoger la opción “Guardar”. 4.2.2 Diagrama de Casos de Uso Teniendo en cuenta que la aplicación desarrollada podría ser utilizada en ámbitos ingenieriles y de laboratorio, los Casos de Uso planteados buscan hacer que la herramienta se práctica y al mismo tiempo permita realizar procesos complementarios que sean valores agregados de esta para el usuario final. Es así como es añadido el control de frecuencia en el generador y opciones adicionales de graficación. La figura 10 muestra el diagrama de Casos de Uso del sistema.

Figura 11. Diagrama de Casos de uso

26

4.2.4 Componentes generales del Sistema Para finalizar la etapa de Requerimientos, son identificados los cinco componentes o módulos fundamentales del sistema:

Analizador de Fourier: se encarga de realizar todos los cálculos y procedimientos involucrados en el análisis de Fourier, entre ellos, la FFT y la FFT inversa.

Generador de señales de prueba: encargado de crear los datos correspondientes a las señales descritas en la sección 2.1.1

Reproducción - captura controlada de audio (Transport): se encarga de la entrada y salida de señales de audio desde y hacia el sistema. Así, este módulo es el encargado de leer archivos de audio y grabar señales con el ADC del PC. Al mismo tiempo, a través de este módulo se controla cuándo reproducir o parar una señal cargada, grabada o generada por el sistema.

Visualización y análisis de señales: muestra gráficamente las señales manipuladas por el sistema en los dominios de tiempo y de frecuencia.

Interfaz de Control: Interfaz gráfica de usuario que permite la interacción del usuario con los componentes ya explicados

La Figura 10 es una esquematización de los componentes del sistema.

Figura 12. Componentes del sistema

Interfaz de

Control

FFT

Generador

Reproducción-Captura

Graficación

27

4.4 Diseño 4.4.1 DEFINICIÓN DE CLASES Luego del análisis de requerimientos, se cuenta con información suficiente para definir la estructura de datos del sistema. De forma que son definidas las clases a codificar.

+available()

+read()

+setFrec()

+setForma()

+setAmp()

+getFrec()

+getForma()

+getAmp()

-nWaveformType

-fSignalFrequency

-fAmplitude

-audioFormat

-lLength

Oscillator +Play()

+Stop()

+Pause()

-Oscillator

PlayOsc

+Cargar()

+Guardar()

+Escoger_graf()

+Play()

+Pause()

+Stop()

+Record()

+Modif_Frec()

+Modif_Amp()

+Modif_Forma()

Interfaz de Control

+Transform()

+Inverse()

+Get_Datos()

-dataset

FFT

+Graf_Tiempo()

+Graf_Frec()

+get_dataset()

-dataset

Graficador

+Play()

+Pause()

+Stop()

-Fs

-Nbits

Transport

+Play ()

+Pause()

+Stop()

+Gain()

-Nombre

-Formato

Play - Archivo

+Record()

+Stop()

+Pause()

-Fs

-Nbits

-

Grabador

+leer_archivo()

+escribir_archivo()

-Formato

InOut-Archivo

Figura 13. Clases del sistema

28

4.4.2 DIAGRAMAS DE FLUJO. Ampliando la delimitación del sistema, son realizados los diagramas de flujo que determinan el procedimiento a seguir después de cada una de las posibles acciones del usuario con la interfaz de control. Dichos diagramas son mostrados en la figura 13 La principal importancia de los diagramas de flujo radica en que éstos son una guía fundamental dentro del proceso de codificación, ya que definen con claridad los algoritmos a realizar con cada uno de los eventos de la interfaz gráfica. A continuación son mostrados algunos de los diagramas de flujo realizados.

29

Activar/Desactivar

graficador

Inicio

Activar

Desactivar

controles

Generador

Activar controles

Generador

Instanciar objeto

Oscilador con

valores por

defecto

Instaciar objeto

Transport con el

objeto oscilador

como argumento

Obtener los datos

correspondientes a la

señal creada por el

objeto Oscilador

Graficar señal

FIN

FIN

Inicio

Modificar Forma de

Onda

Activar/Desactivar

Convertir

Byte a Float

Leer Forma de

Onda

Instanciar objeto

Oscilador con el la

forma de onda

seleccionada como

argumento

Instaciar objeto

Transport con el

objeto oscilador

como argumento

Obtener los datos

correspondientes a la

señal creada por el

objeto Oscilador

Graficar señal

Convertir

Byte a Float

FIN

Inicio

Modificar Frecuencia

Leer nuevo valor

de frecuencia

Instanciar objeto

Oscilador con el valor

de frecuencia definido

como argumento

Instaciar objeto

Transport con el

objeto oscilador

como argumento

Obtener los datos

correspondientes a la

señal creada por el

objeto Oscilador

Graficar señal

Convertir

Byte a Float

Archivo cargado

previamente

Usuario desea

borrar el archivo

No

Si

No

Si

FINNo

Si

Figura 14. Algunos diagramas de flujo del sistema

4.5 IMPLEMENTACIÓN Tomando como base los diagramas y documentos realizados en las anteriores etapas, se da inicio a la codificación del programa que, como ha sido mencionado con anterioridad, fue desarrollada utilizando el Entorno Integrado de Desarrollo Netbeans versión 6.8.

30

Por otro lado, junto a las librerías ofrecidas por Java (incluyendo el Java Sound API), fue necesaria la utilización de paquetes adicionales con el fin de mejorar el resultado final y optimizar el proceso de desarrollo. A continuación es mostrada una breve descripción de los librerías adicionales utilizados y sus funcionalidades. 4.5.1 Jfreechart JFreeChart es una librería libre para construir gráficos utilizando Java. Está diseñada para usar en aplicaciones, applets, servlets y JSP. JFreeChart es distribuida con el código fuente completo sujeto a los términos de la licencia GNU, que permite que JfreeChart sea usada en aplicaciones de software libre o propietario 21.. JFreeChart puede generar graficas de tora, de barras (con efecto 3D opcional), de líneas, gráficas de series de tiempo, diagramas de Gantt, gráficas de medición (compas, termómetro, etc), entre otras. JFreechart puede ser desacrgada de http://www.jfree.org/jfreechart/ JFreechart es utilizada por la aplicación para generar todas sus gráficas. 4.5.2Librería científica y numérica de Michael Thomas Flanagan Esta es una librería desarrollada por el Dr. Michael Thomas Flanagan como herramienta para sus investigaciones y cursos académicos en la UCL (University College London). Esta es una completa librería que contiene clases para realizar operaciones propias del procesamiento digital de señal entre otros procesos comunes a las diferentes ingenierías. Esta librería puede ser descargada en un archivo .jar con permiso para usar, copiar y modificar el software y su documentación para propósitos no-comerciales. Esta librería fue utilizada en el proceso de desarrollo del módulo de Transformada deFourier.

21

Gilbert David. The JFreeChart Class Library Developer Guide

31

4.6 PRUEBAS Varios tipos de pruebas fueron realizadas al sistema para comprobar su funcionamiento. Se cargaron archivos de audio de diferentes duraciones en formato wav, se grabó, reproduciendo y guardando la señal grabada en formato wav. Con el generador de señales se crearon señales con las formas de onda especificadas, reproduciéndolas y comprobando que generara la frecuencia correcta mediante el uso de una herramienta comercial de análisis de señales (Simulink) instalada en otro computador. Aunque aspectos como el cambio de frecuencia del generador, el cual aún es brusco y se generan clicks, el funcionamiento general de la aplicación es satisfactorio. 4.6 IMAGENES DEL SISTEMA

32

33

34

CONCLUSIONES

Java es una herramienta que puede proporcionar grandes ventajas a los desarrolladores de aplicaciones de procesamiento de señal gracias a su portabilidad y carácter libre. Sin embargo hay todavía mucho esfuerzo por hacer para que procedimientos propios de esta área de la ingeniería sean desarrollados con gran facilidad como en entornos como Matlab, Scilab o Labview.

JfreeChart es una librería que proporciona grandes facilidades y mejoras estéticas para las aplicaciones gráficas. Esta es una herramienta indispensable para todo desarrollador de aplicaciones de análisis y procesamiento de señales en Java.

El Java Sound API es una herramienta muy poderosa y flexible para el manejo de audio digital ya que permite un fácil control de parámetros como ganancia mezcla, entre otros.

A pesar de la flexibilidad mencionada del Java Sound API un gran problema es el hecho de que los datos de las señales de audio que este le provee al desarrollador son dados en bytes, estando el desarrollador en la necesidad de implementar algoritmos que permitan representarlos como datos float para la fácil realización de los diferentes proceso a la señal.

35

1. BIBLIOGRAFÍA BARRERO FEDERICO; TORAL SERGIO;RUIZ MARIANO. Procesadores Digitales de Señales de altas prestaciones de Texas Instruments KUO SEN; LEE BOB. Real time digital signal processing implementations, applications and experiments with the TMS32C55X LAPLANTE;PHILLIP A. Real – time system design and analysis LYON, DOUGLAS & RAO, HAYAGRIVA. Java Digital Signal Processing SMITH, STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing WREN JAMES & DAVIES DON, What are dB, Noise Floor & Dynamic Range? SCMULLER, JOSEPH. Aprendiendo UML en 24 horas GILBERT, DAVID. The JFreeChart Class Library developer guide GARCÍA, JAVIER; RODRIGUEZ JOSE;MINGO IÑIGA;IMAZ AITOR; BRAZÁLEZ ALFONSO; LARZABAL, ALBERTO; CALLEJA, JESUS;GARCÍA,JON. Aprenda Java como si estuviera en primero SUN MICROSYSTEMS. Java Sound Developer Guide SIMON, JONATHAN. Integrating audio with Java applications LARMAN, CRAIG. Applying UML and Patterns an Introduction to Object Oriented Analysis and Design and Iterative development Referencias Web http://www.mentores.net/articulos/intro_microsoft_sol_frame.htm http://es.wikipedia.org

36

GLOSARIO Amplitud: Valor máximo alcanzada por una señal Fase: El “ángulo de fase” o “fase” de una señal se refiere a su desplazamiento hacia la derecha o la izquierda con respecto a una referencia. Forma de onda: La forma de onda es la forma de una señal en el dominio de tiempo como se ve en la pantalla de un osciloscopio. Es una representación visual o gráfica del valor instantáneo de la señal, trazado contra el tiempo. Frecuencia de Nyquist: es la frecuencia máxima a la que se puede tomar muestras de una señal análoga, y es igual a la mitad de la frecuencia de muestreo. Frecuencia: Es la cantidad de ciclos que una señal periódica realiza en 1 segundo. Tamaño de palabra: número de bits con los que se representa un número.