Download TITULO Diseño y desarrollo de prototipo funcional de analizador

Document related concepts
no text concepts found
Transcript
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
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
1
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
2
6.
7.
BIBLIOGRAFÍA
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.
3
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 electroacú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?
4
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.
5
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
6
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.
7
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
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
2
8
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
9
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.
10
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
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
5
11
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.
Canal de Entrada
x(t)
x’(t)
x[n]
Adecuación de
la señal
Otros sistemas
digitales
ADC
Procesador
y(t)
Canal de Salida
Amplificación
de la señal
y’(t)
Conversión
Digital - Análogo
y[n]
Otros sistemas
digitales
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.
WREN 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.
9
12
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
13
Muestreo de Señal senoidal de 10 Hz con Fs =250 Hz
1
1 periodo de x (t). Seno continuo de 10 Hz
1 periodo de x[n]. Seno discreto de 10 Hz
0.8
Amplitud (Voltios)
0.6
Fs =250 Hz Ts = 1 / 250 = 0.004 seg
0.4
Periodo de muestreo: Ts
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
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
Tiempo (segundos)
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
Aperiódica –
Continua
Periódica – Continua
Aperiódica - Discreta
12
Transformada de Fourier
Transformada de Fourier
Serie de Fourier
Transformada de tiempo discreto de
Fourier
SMITH STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pag 141
14
0.1
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
14
Ibid.
SMITH STEVEN. The Scientist and Engineer’s Guide to Digital Signal Processing, pag 225
15
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
Ibíd
17
http://es.wikipedia.org/wiki/Desarrollo_en_espiral
18
http://www.mentores.net/articulos/intro_microsoft_sol_frame.htm
16
16
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/359pxModeloEspiral.svg.png
20
Larman, Craig. Applying UML and Patterns an Introduction to Object Oriented Analysis and Design and
terative development
17
• 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)
18
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.
19
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
20
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.
21
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.
22
3.
METODOLOGÍA*
3.1
ENFOQUE DE LA INVESTIGACIÓN
Puede afirmarse que la presente investigación es de un enfoque empíricoanalí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.
23
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”.
24
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
Figura 11. Diagrama de Casos de uso
25
Uso
del
sistema.
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.
FFT
Graficación
Interfaz
de
Control
ReproducciónCaptura
Figura 12. Componentes del sistema
26
Generador
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.
Transport
-Fs
-Nbits
+Play()
+Pause()
+Stop()
PlayOsc
-Nombre
-Formato
+Play ()
+Pause()
+Stop()
+Gain()
-Oscillator
Oscillator
-nWaveformType
-fSignalFrequency
-fAmplitude
-audioFormat
-lLength
+available()
+read()
+setFrec()
+setForma()
+setAmp()
+getFrec()
+getForma()
+getAmp()
Play - Archivo
+Play()
+Stop()
+Pause()
Interfaz de Control
Grabador
-Fs
-Nbits
+Record()
+Stop()
+Pause()
+Cargar()
+Guardar()
+Escoger_graf()
+Play()
+Pause()
+Stop()
+Record()
+Modif_Frec()
+Modif_Amp()
+Modif_Forma()
FFT
-dataset
+Transform()
+Inverse()
+Get_Datos()
Figura 13. Clases del sistema
27
InOut-Archivo
-Formato
+leer_archivo()
+escribir_archivo()
Graficador
-dataset
+Graf_Tiempo()
+Graf_Frec()
+get_dataset()
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.
28
Activar/Desactivar
graficador
Modificar Forma de
Onda
Modificar Frecuencia
Inicio
Inicio
Inicio
Activar/Desactivar
Leer Forma de
Onda
No
Desactivar
controles
Generador
Activar
Instanciar objeto
Oscilador con el la
forma de onda
seleccionada como
argumento
Leer nuevo valor
de frecuencia
Instanciar objeto
Oscilador con el valor
de frecuencia definido
como argumento
Si
No
Obtener los datos
correspondientes a la
señal creada por el
objeto Oscilador
Archivo cargado
previamente
Obtener los datos
correspondientes a la
señal creada por el
objeto Oscilador
Si
Usuario desea
borrar el archivo
No
FIN
Convertir
Byte a Float
Convertir
Byte a Float
Si
Graficar señal
Activar controles
Generador
Graficar señal
Instaciar objeto
Transport con el
objeto oscilador
como argumento
Instanciar objeto
Oscilador con
valores por
defecto
Instaciar objeto
Transport con el
objeto oscilador
como argumento
FIN
Obtener los datos
correspondientes a la
señal creada por el
objeto Oscilador
FIN
Convertir
Byte a Float
Graficar señal
Instaciar objeto
Transport con el
objeto oscilador
como argumento
FIN
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.
29
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
30
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
31
32
33
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.
34
1. BIBLIOGRAFÍA
BARRERO FEDERICO; TORAL SERGIO;RUIZ MARIANO.
Digitales de Señales de altas prestaciones de Texas Instruments
Procesadores
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
35
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.
36