Source: http://docplayer.es/2045362-Ampliacion-de-un-software-de-edicion-de-audio-digital-para-su-uso-en-investigacion-en-acustica-aplicada-musica-y-otras-disciplinas.html
Timestamp: 2017-08-22 02:15:33+00:00

Document:
Ampliación de un software de edición de audio digital para su uso en investigación en acústica aplicada, música y otras disciplinas. - PDF
Ampliación de un software de edición de audio digital para su uso en investigación en acústica aplicada, música y otras disciplinas.
Download "Ampliación de un software de edición de audio digital para su uso en investigación en acústica aplicada, música y otras disciplinas."
Tomás Torres Godoy
1 Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura Escuela de Ingeniería Electrónica Proyecto de Ingeniería Ampliación de un software de edición de audio digital para su uso en investigación en acústica aplicada, música y otras disciplinas. Autor: Luciano Guillermo Boggino Director: Ing. Federico Miyara Noviembre 2014
2 Resumen Este documento presenta un proyecto de grado para la obtención del título de Ingeniero Electrónico otorgado por la Facultad de Ciencias Exactas, Ingeniería y Agrimensura. El proyecto aborda la adaptación y ampliación de un software libre de edición de audio digital para su uso en la investigación en acústica aplicada, música y otras disciplinas.
3 Capítulo 1 Agradecimientos Agradezco al Laboratorio de Acústica y Electroacústica (LAE) dependiente de la Facultad de Ciencias Exactas, Ingeniería y Agrimensura (FCEIA) por prestar sus instalaciones para la realización del proyecto y, en particular, al Ing. Federico Miyara, director del laboratorio, por dirigir el proyecto y al Ing. Ernesto Accolti por su ayuda y orientación; a la Facultad de Ciencias Exactas, Ingenería y Agrimensura (FCEIA) de la Universidad Nacional de Rosario (UNR) por ser el marco académico para el desarrollo del proyecto y a sus docentes; al Ing. Gonzalo Sad y a Simone Campanini por sus aportes en conocimientos y su ayuda; a todas las personas que me apoyaron a lo largo de éste trabajo y la carrera. Proyecto de Ingeniería Escuela de Ingeniería Electrónica II
4 Índice general Resumen I 1 Agradecimientos II Agradecimientos II Índice general 1 2 Objetivos 2 2 Marco teórico Introducción Audio digital Muestreo Digitalización Formatos de audio digital El formato WAVE Descomposición en frecuencias de una señal Transformada de Fourier Transformada discreta de Fourier (DFT) Transformada rápida de Fourier (FFT) Filtros digitales basados en FFT Representacion de señales de audio digital Mediciones Acústicas Nivel de presión sonora Nivel de presión sonora equivalente Nivel de presión sonora ponderado Niveles estadísticos Software libre Audacity Desarrollo 21 4 Modificaciones del código fuente Visor de espectrograma Analizador de espectro Visor de nivel Importador y exportador de metadatos Proyecto de Ingeniería Escuela de Ingeniería Electrónica III
5 5 Desarrollo de Plug-ins Creación de archivos base Spectral Edit Filter Time Variable Filter Statistical Level Calc Conclusiones 64 Bibliografía 65 A Extractos de códigos 68 A.1 Analizador de espectro A.2 Visor de nivel A.3 Importador y exportador de metadatos A.4 Spectral Edit Filter A.5 Time Variable Filter A.6 Statistical Level Calculator B Guía para crear un Plug-in 86 B.1 Compilación del código fuente de Audacity B.2 Creación de un proyecto para incorporar un Plug-in C Listado de archivos desarrollados y modificados 89 C.1 Visor de espectrograma C.2 Analizador de espectro C.3 Visor de nivel C.4 Importador y exportador de metadatos C.5 Spectral Edit Filter C.6 Time Variable Filter C.7 Statistical Level Calc D Detalle del contenido del CDs adjuntados 95 Proyecto de Ingeniería Escuela de Ingeniería Electrónica 1
6 Objetivos Capítulo 2 El proyecto tiene por objetivo general la obtención y modificación de las prestaciones de un software de edición, síntesis y análisis de señales de audio digitales para su uso en tareas de investigación, en las que estén involucradas señales acústicas en diversas áreas, entre otras: acústica física, ruido urbano, psicoacústica, audio, música, emisiones acústicas, vibraciones mecánicas. Los objetivos específicos se detallan a continuación 1. Decodificación del código fuente de Audacity para conocer su composición y posterior documentación. 2. Modificaciónes del código fuente y de herramientas propias del software: a) Creación de diversas escalas de colores para la gráfica de espectrogramas. b) Integración de la opción para analizar el espectro de la señal en un punto específico de la misma. c) Adición de la posibilidad de observar el nivel de presión sonora ponderada en tiempo y frecuencia. d) Incorporación de la facultad de importar y exportar los metadatos pertenecientes a un archivo con formato.wav. 3. Desarrollo de herramientas e incorporación al software de las mismas: a) Filtrado espectral mediante el dibujo sobre el espectrograma de la señal. b) Filtrado utilizando curvas ingresadas por medio de una tabla y posterior interpolación entre ellas c) Calculador de niveles estadísticos. 4. Redacción de una guía que ayude a compilar Audacity y crear un Plug-in que pueda ser incorporado al mismo. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 2
7 Marco teórico Capítulo 2 En este capítulo se presenta una breve introducción de lo que este proyecto buscaba y los conocimientos generales que son necesarios para la comprensión adecuada del mismo. Esencialmente se explica qué es el audio digital, el funcionamiento de los reproductores digitales, la composición de un archivo de audio digital (en especial el formato WAVE), las distintas formas de representación de señales de audio, la descomposición en frecuencias de una señal y el funcionamiento de los filtros digitales, los cuales son la base del proyecto. 2.1 Introducción La investigación en acústica y otras disciplinas que involucran manejo de señales digitales requiere a menudo la síntesis de señales con características dadas, el análisis y medición de señales adquiridas o generadas, su procesamiento y edición mediante métodos diversos, o su modelado y simulación [17]. La síntesis se utiliza frecuentemente con la finalidad de disponer de señales de prueba con propiedades conocidas para la excitación y ensayo de diversos sistemas, que incluyen materiales y estructuras (por ejemplo determinación de propiedades físicas tales como absorción o aislación sonora, elasticidad, etc.), recintos (como ser, ensayo de reverberación y otras cualidades acústicas), hardware (tales como, transductores, procesadores de señal, dispositivos físicos) ([20]; [18]), software (el caso de algoritmos de procesamiento) o incluso el propio oído humano (entre otros en estudios psicoacústicos o de respuesta subjetiva, efectos del ruido, etc.) ([18]). También es de importancia en la creación de música electroacústica, simulación de paisajes sonoros ([21]) y efectos sonoros en diversas artes audiovisuales. El análisis de señales permite estudiar el comportamiento de los sistemas que las producen, así como los efectos que dichas señales pueden producir o, a la inversa, predecir el efecto que producirá un sistema previamente conocido sobre la señal (a modo de ejemplo, los efectos de propagación del ruido urbano a través de barreras) ([19]; [22]). La edición y procesamiento tiene por finalidad la depuración (remoción de ruido, por ejemplo) o adaptación de la señal para una determinada aplicación (diversos tipos de filtrado). Es, incluso, parte de los procesos avanzados de síntesis y de análisis previamente mencionados. Por último, el modelado de señales tiene aplicaciones en compresión de audio, en codificación y decodificación ([23], [24]), en técnicas de resíntesis, en simulación aural ([25], [26], [27], [28], [29]) y en realidad acústica virtual ([30]), incluyendo efectos sonoros. Existen numerosas aplicaciones de software que permiten la realización de varios de los procesamientos aquí descriptos. Ellas se pueden dividir en tres grandes grupos: 1) Programas de edición de audio digital (tales como Cool Edit, Cool Edit Pro, Adobe Audition, Sound Forge, GoldWave, Cubase, Nuendo, Spear, Audacity), 2) Programas matemáticos que permiten implementar toda clase de algoritmos de aplicación al análisis y procesamiento de señales digitales (se puede citar Matlab, Scilab, Octave) y 3) programas de aplicación específica asociados con instrumentos Proyecto de Ingeniería Escuela de Ingeniería Electrónica 3
8 de medición acústica o adquisidores de señal (tal como LabView), con el estudio de determinados tipos de señales, como la voz (algunos son Anagraf, VoxMetria, Speechstation, CSRE), o con manipulación y síntesis algorítmica o por bloques de sonidos musicales (C-Sound, MAX-SP, Processing), así como instrumentos musicales virtuales (VSTi, Reaktor). Es necesario entonces, un software que reúna las ventajas de los editores de sonido y de los programas matemáticos. Dicho software no existe al día de hoy. 2.2 Audio digital Figura 2.1: Diagrama que sintetiza el objetivo del presente proyecto. Una señal es la representación de una magnitud física, como ser la presión sonora o la tensión eléctrica, se puede catalogar en dos grandes grupos, continuas o discretas. Mientras la primera puede adoptar una cantidad infinita de valores en infinitos instantes de tiempo, la segunda sólo puede tomar una cantidad finita de valores en un número finito de instantes. Para obtener una señal digital necesitamos muestrear la señal, es decir, obtener el valor de la misma en algunos instantes de tiempo. La señal digital es, entonces, una señal discretizada en tiempo y magnitud. Las señales digitales presentan, frente a las analógicas, varias ventajas que las hacen atractivas en muchas aplicaciones, especialmente en las metrológicas: Almacenada en un medio apropiado son prácticamente inalterables. Es posible generar tantas copias como se deseen. Pueden ser transmitidas tanto por cable como inalambricamente, sin sufrir alteraciones debido a la existencia de ruido. En caso de canales ruidosos o medios delicados es posible implementar algoritmos de corrección de errores basados en redundancia. Es posible implementar una gran cantidad de procesos digitales tales como filtros, reducción de ruido, análisis espectral, etc. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 4
9 Por otro lado presentan como contrapartida que: El hardware requerido es generalmente costoso. La discretización en tiempo impone asimismo, una severa limitación del espectro en frecuencias elevadas. Se puede observar a simple vista que las ventajas superan a las desventajas Muestreo El proceso de muestreo consiste en retener el valor de la señal en el instante en que se deséa muestrear hasta que se tome la próxima muestra, como se ve en la Figura 2.2. Esto se puede lograr mediante circutos de muestreo y retención o sample & hold. Figura 2.2: Ejemplo de muestreo y renteción. En gris la señal original, en rojo la señal muestreada y en línea de puntos los instantes de muestreo [16]. Es muy importante definir cuántas muestras por unidad de tiempo se tomarán de la señal original, es decir, la tasa o frecuencia de muestreo conocida como F s, que a su vez es la inversa Proyecto de Ingeniería Escuela de Ingeniería Electrónica 5
10 del periodo de muestreo llamado comúnmente T s siendo éste el valor en segundos del tiempo que transcurre entre dos muestras consecutivas. F s = 1 T s (2.1) Por un lado es conveniente que la frecuencia de muestreo sea alta para no perder información o detalles de la señal, pero por otro, existen limitaciones desde el punto de vista de la memoria y velocidad de cómputo necesarios para lograrlo. Es posible demostrar que si la tasa de muestreo es mayor o igual al doble de la máxima frecuencia que contenga la señal, es decir F s 2f max (2.2) se puede reconstruir a la perfección la señal original a partir de las muestras. Este resultado se conoce como teorema de muestreo y la desigualdad como condición de Nyquist. Si no se satisface esta desigualdad aparece un fenómeno denominado aliasing, se muestra un ejemplo en al Figura 2.3, que consiste en la aparición de frecuencias inexistentes a la hora de reconstruir la señal original. Estas frecuencias equivalen a reflexiones centradas en F s /2 de todas las frecuencias que excedan este valor. Figura 2.3: Ejemplo de aliasing. Arriba la señal correctamente muestreada y reconstruida, abajo la señal muestreada incorrectamente y su reconstrucción [15] Digitalización Una vez muestreada la señal discreta se debe digitalizar. Para ello se utiliza un conversor analógico/digital, el cual asigna a cada valor discreto un número proporcional a si mismo. Si bien se podría utilizar cualquier base de numeración, se utiliza la binaria o base 2, ya que permite usar el concepto de llave abierta o cerrada en circuitos de lógica binaria con dos niveles de tension, 0 y V cc. El uso de esta base permite la mayor inmunidad frente al ruido, ya que sería necesario un ruido superior a V cc para producir un error. 2 Para llevar a cabo la digitalización primero se debe definir un valor referencia V ref, y luego se lo subdivide en 2 n escalones iguales, donde n es la resolución del dato digital. Para señales Proyecto de Ingeniería Escuela de Ingeniería Electrónica 6
11 positivas se le asigna el valor 0 digital al 0 analógico y el valor máximo 2 n 1 a V ref (1 1 ) 2 n y para señales bidireccionales el 0 digital corresponde a V ref y el valor 2 n 1 es asignado a 2 V ref ( 1 1 ). La falta de simetría se hace irrelevante al aumentar la resolución. 2 2 n Figura 2.4: Ejemplo de digitalización con 1, 2, 3 y 4 bits [1]. 2.3 Formatos de audio digital Sin importar el medio en que se almacene la información, es necesario que se haga bajo ciertas normas, estas normas compiladas es lo que se llama formato, el cual debe ser comprensible por el usuario y el software que lo utilice. En audio existen diversos formatos, pero se pueden clasificar a grandes rasgos en dos tipos según tengan o no compresión. Los formatos sin compresión muestran la sucesión de datos PCM 1 tal cual se generaron en la conversión analógica-digital y se suele agregar en algunos casos un encabezamiento que proporciona datos como la resolución, el número de canales, cantidad de datos de audio, etc. Si bien un archivo comprimido tiene un tamaño menor a uno que no lo es, es necesario un decodificador capaz de interpretar dicha compresión. Todo método de compresión de audio se apoya en la característica de que en cualquier señal de este tipo existe un grado considerable de redundancia. 1 Modulación de código de pulsos Proyecto de Ingeniería Escuela de Ingeniería Electrónica 7
12 Es posible a su vez subdividir los formatos comprimidos en lossy (con pérdida) y lossless (sin pérdida), los primeros utilizan criterios psicoacústicos para eliminar o descartar información que para la mayoría de las personas resulta inaudible y los segundos se basan en consideraciones estadísticas y de teoría de la información. Para fines metrológicos es necesario tener la mayor cantidad de información sobre los eventos grabados, por eso es recomendable utilizar formatos sin compresión como el WAV o con compresión como el FLAC (Free Losslesss Audio Codec) para el almacenamiento de las mediciones realizadas El formato WAVE El formato WAV está dividido, como se observa en la figura 2.5, en fragmentos (en inglés chunks). Cada uno de estos fragmentos contiene cierto tipo de información, como el formato, los datos de audio y las marcas (cues). Cada uno está compuesto varias cadenas de caracteres y distintas series de datos numéricos alternados. El archivo comienza con un encabezamiento que contiene la cadena de caracteres RIFF (formato de archivo para intercambio de recursos), seguido por 1 byte (equivalente a 8 bits) que define el tamaño del archivo. Seguido aparece el fragmento correspondiente al formato, que comienza por la cadena de caracteres fmt y la cantidad de bytes que le siguen dentro del mismo. Luego le siguen los campos que se muestran a continuación: Información Bytes Formato 2 Canales 2 Tasa de muestreo 4 Bytes por segundos 2 Bytes por muestra 2 Bits por muestra 2 Luego aparece el fragmento data (datos), seguido por la longitud total de bytes que ocupan y los datos de audio ordenados por canal. Con estos fragmentos ya es posible generar un archivo de audio digital. Sin embargo, en la metrología y otras aplicaciones, resulta útil poder almacenar datos e información adicional que no necesariamente corresponden al audio. Esta información adicional es conocida en el formato WAV cómo marcas (cues), labels (etiquetas) y notes (anotaciones) relativas a eventos acústicos de interés, tales como identificación de fuentes, fecha y hora de la grabación, ubicación, etc. Se suele llamar metadatos (metadata), es decir datos que se refieren a datos, al conjunto total. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 8
13 Figura 2.5: Composición de un archivo de formato WAVE [11]. 2.4 Descomposición en frecuencias de una señal Las señales que varían en el tiempo se pueden calificar en periódicas o aperiódicas, figuras 2.6 y 2.7 respectivamente. Una señal es periódica si x(t) = x(t + T ) (2.3) donde t es el instante de tiempo y T es el periodo. Si no se cumple esta igualdad estamos frente a una señal no periodica. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 9
14 Figura 2.6: Señal periodica [12]. Figura 2.7: Señal no periodica [12]. En el caso de señales discretas se debe cumplir que x(n) = x(n + N) (2.4) donde n es el número de muestra y N es equivale a T T s (T período de la señal y T s período de muestreo). Las señales periódicas se pueden descomponer en una suma de señales senoidales, ecuación 2.6, como la que se observa en la Figura 2.8, definidas en tiempo como x(t) = Asen(ωx + ϕ) (2.5) donde A es la amplitud, ω es la frecuencia angular equivalente a 2πf (frecuencia de la señal) y ϕ es el desfasaje. Figura 2.8: Señal senoidal. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 10
15 Esto es consecuencia del Teorema de Fourier: Cualquier función periódica de frecuencia f puede considerarse como la superposición de una serie de ondas senoidales de frecuencias f, 2f, 3f, 4f, etc. x(t) = X n sin(2πnft + ϕ n ) (2.6) n=1 de donde se obtienen los X n que son llamados coeficientes de Fourier y se calculan de la siguiente manera donde X n = 2 A 2 n + B 2 n (2.7) y A n = 2 T T 0 x(t) cos(nωt)dt (2.8) T B n = 2 x(t) sin(nωt)dt (2.9) T 0 A partir de los X n se puede dibujar el espectro de la señal, Figura 2.12, que es una gráfica donde el eje X son las frecuencias ( ω ) y el Y las amplitudes de los armónicos (los X 2π n). Debido a que la mayoría de las señales no son periódicas, sino que varían de forma aleatoria, es necesario expandir el concepto de serie de Fourier. Para ello seleccionamos, o como se nombra en la mayor parte de la bibliografía correspondiente a este tema, enventanamos una porción de duración T de la señal a analizar y la repetimos en forma periódica cada T segundos. Ahora que tenemos una señal periódica podemos analizar su espectro, el problema es que sólo representa el espectro de esa porción, si tomamos un tiempo T mayor el espectro se vuelve más detallado y se reducen las amplitudes. Si quiesiéramos hacer tender T a, en el espectro veríamos que tanto la frecuencia fundamental como los coeficientes de Fourier tienden a 0. Se tiende entonces a un espectro continuo. Cabe aclarar que también se suele utilizar la versión compleja de la seria de Fourier donde x(t) = C n e jnωt (2.10) n= C n = 1 T T /2 T /2 x(t)e jnωt dt (2.11) Transformada de Fourier Se define la transformada de Fourier, utilizable en señales continuas, como la siguiente igualdad Proyecto de Ingeniería Escuela de Ingeniería Electrónica 11
16 F (x(t)) = X(ω) = x(t)e jωt dt (2.12) a partir de X (ω) es posible obtener x(t) utilizando la transformada inversa de Fourier F 1 (X(ω)) = x(t) = 1 X(ω)e jωt dw (2.13) 2π Transformada discreta de Fourier (DFT) Dada la señal discreta x(k) se define la transformada discreta de Fourier cómo F (x(k)) = X(m) = N 1 k=0 mk j2π x(k)e N (2.14) a partir de X (m) es posible obtener x(k) utilizando la transformada inversa discreta de Fourier F 1 (X(m)) = x(k) = 1 N N 1 m=0 mk j2π X(m)e N (2.15) Transformada rápida de Fourier (FFT) La transformada discreta de Fourier resulta una herramienta muy útil para el análisis espectral y para muchas otras aplicaciones. El problema es que al agrandar N es necesario realizar una gran cantidad de operaciones, a saber cada componente de la DFT requiere N multiplicaciones y N sumas, llegando por lo tanto a N 2 sumas y multiplicaciones. El algoritmo denominado Transformada rápida de Fourier, desarrollado en 1965 por Cooley y Tuckey, logra reducir la cantidad de operaciones necesarias a 3N log 2 2 N de punto flotante. El uso de FFT presenta algunas limitaciones, primero suponer que se trata de una señal periódica de período N, o sea, que no se trata de la señal real, y segundo pueden aparecer descontinuidades que produzcan altas frecuencias de alias. El segundo problema se puede solucionar utilizando ventanas que disminuyan la interferencia entre cuadros. 2.5 Filtros digitales basados en FFT Es un filtrado en el dominio frecuencial, es decir, se multiplica la transformada de Fourier de la señal (X (k)) por la ventana filtrante. Y (k) = X(k)W (k) (2.16) donde Y(k) es la transformada de Fourier de la señal filtrada, X (k) de la señal original y W(k) del filtro deseado. Luego se obtiene la señal filtrada a través de la transformada inversa de Fourier. Tal como se plantea, este filtro está limitado a una ventana de análisis de longitud N. Si bien es posible aumentar N, el procedimiento pierde eficiencia y aumenta innecesariamente la resolución del espectro. Para poder aplicar el método a señales largas se subdivide la señal en cuadros o Proyecto de Ingeniería Escuela de Ingeniería Electrónica 12
17 ventanas de longitud N con un solapamiento de N/2. Luego se obtiene la FFT de cada cuadro, se multiplica por la ventana filtrante y se le aplica la transformada inversa de Fourier. En la Figura 2.9 se observa el diagrama en bloques de cómo se aplica un filtro FFT a una señal de audio. Figura 2.9: Diagrama en bloque de un filtro FFT. 2.6 Representacion de señales de audio digital Existen diversas formas de representar una señal digital de audio, las más utilizadas y las que nos interesan entre ellas son: Forma de onda. Muestra la amplitud de la señal en cada instante de tiempo. Figura 2.10: Representación de la forma de onda de una señal de audio. Espectrograma 2D. Se observa la descomposición frecuencial de la señal para fracciones contiguas de la señal, es decir, se calcula la descomposición para una cantidad determinada de muestras y se reprensenta en el eje X el tiempo, en el Y la frecuencia y en una escala de colores la amplitud de cada armónico. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 13
18 Figura 2.11: Representación del espectrograma de una señal de audio. Espectro. Permite obtener el promedio del análisis frecuencial a lo largo de toda la señal o de la selección. Figura 2.12: Representación del espectro de una señal de audio. 2.7 Mediciones Acústicas La variable acústica que presenta mayor facilidad de medición es la presión sonora p. Se define cómo p(t) a su valor instantáneo, y cabe aclarar que pocas veces es representativo debido a que dos sonidos similares tanto auditivamente como en sus efectos pueden tener valores instantáneos muy diferentes. Por lo tanto, y debido a que influye en el efecto de los sonidos, es más útil utilizar el promedio energético o valor eficaz calculado en un intervalo temporal T, definido como 1 T P ef,t = p T 2 (t)dt (2.17) 0 Se suele utilizar también el promedio energético móvil, que varía a lo largo del tiempo 1 t+t P ef,t (t) = p T 2 (t)dt (2.18) t Al graficar el promedio energético móvil se obtiene la envolvente energética de la señal. Para lograr la mejor representación, se debe seleccionar un periodo T acorde a la rapidez de variación Proyecto de Ingeniería Escuela de Ingeniería Electrónica 14
19 de la señal, si la señal varía rápido corresponderá un valor de T chico y viceversa. Es posible obtener la envolvente utilizando un filtro pasa bajos como se muestra en la ecuación siguiente P τ (t) = 1 τ t 0 p 2 (θ)e t θ τ dt (2.19) Este promedio contiene una ponderación exponencial, de manera que los valores de θ t son priorizados. La variable τ recibe el nombre de ponderación temporal y se le suelen asignar uno de los tres valores normalizados τ= 1 s (lenta/slow), τ= s (rápida/fast) y τ= s (impulsiva/impulsive) Nivel de presión sonora Debido a que el rango dinámico de la presión sonora de los sonidos audibles es muy grande, se utiliza el nivel de presión sonora, L p,t, definido como: L p,t = 20 log P τ P ref (2.20) donde P ref = 20 µpa es un valor de referencia que corresponde aproximadamente al umbral auditivo a 1000 Hz. El nivel de presión sonora se expresa en decibeles (db) y queda definido entonces entre 0 db y 120 db Nivel de presión sonora equivalente Se define el nivel de presión equivalente, L eq,t, también llamado nivel de presión sonora continuo equivalente, a un nivel de presión sonora que se supone constante durante un periodo T que tiene el mismo valor de energía total que la presión sonora variable del sonido a medir durante ese tiempo. Se obtiene utilizando la ecuación: L eq,t = 20 log Nivel de presión sonora ponderado 1 T T 0 p2 (t)dt (2.21) P ref Debido a que muchas de las aplicaciones en acústica se vinculan con la percepción y los efectos del ruido sobre el ser humano, se utilizan ponderaciones o compensaciones frecuenciales. El propósito de esto es tener en cuenta que la sensibilidad auditiva varía con la frecuencia. Se utilizan para eso distintas curvas, las primeras de ellas fueron las denominadas A, B y C, que fueron destinadas a niveles cercanos a 40 db, 70 db y 100 db respectivamente, y de las cuales hoy en día sólo se utilizan la A y C para cualquier rango de nivel. Luego se agregaron las ponderaciones D, para ruido de aviación, y la G, para ruidos de muy baja frecuencia, actualmente se encuentra en reglamentación la ponderación K desarrollada por la Unión Europea de Radiodifusión que busca normalizar, utilizando los descriptores Loudness Proyecto de Ingeniería Escuela de Ingeniería Electrónica 15
20 Range y Maximun True Peak Level, la sonoridad y el nivel máximo permitido en señales de audio utilizadas en la producción, distribución y transmisión de programas de radiodifusión. Vemos en las Figuras 2.13, 2.14 y 2.15 las curvas de las distintas ponderaciones frecuenciales. Figura 2.13: Curvas de ponderación frecuencial A, B, C y D [13]. Figura 2.14: Curva perteneciente a la ponderación frecuencial G [13]. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 16
21 2.7.4 Niveles estadísticos Figura 2.15: Curva de la ponderación K [14]. Dada una ponderación temporal con un τ definido y una ponderación frecuencial X (donde X puede ser A, B, C, D, Z o cualquier otra) se define al nivel estadístico L XN como aquel valor que superado en un N % del tiempo. Estos niveles son muy útiles para ser aplicados en ciertos criterios, como la determinación del ruido de fondo y su nivel o clasificación según su procedencia, por ejemplo el nivel estadístico L X90 puede asignarse como nivel de ruido y el L X95 designarse como nivel proveniente de fuentes lejanas. 2.8 Software libre Se llama de esta manera a un software que le da al usuario la libertad de copiarlo, distribuirlo, editarlo y mejorarlo. Ofrece la posibilidad de adaptar el software a gusto y poder saber qué es lo que está haciendo en cada instante. Existen cuatro libertades escenciales que indican si un software es libre o no: Libertad 0: la libertad de ejecutar el programa con cualquier propósito. Libertad 1: la libertad de estudiar cómo funciona el programa, y cambiarlo para que haga lo que el usuario quiera. Libertad 2: la libertad de redistribuir copias para ayudar al prójimo. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 17
22 Libertad 3: la libertad de distribuir copias de las versiones modificadas a terceros, de modo que la comunidad se beneficie. Cabe aclarar que el decir que un software sea libre no siempre quiere decir que sea gratuito. Uno puede no sólo haber pagado o no por él sino también, distribuirlo de manera gratuita o paga según desee. En el último de los casos se suele agregar otros servicios, por ejemplo mantenimiento, actualización, ayuda técnica, manuales impresos, distribución en un medio físico, etc., pero no se prohíbe, persigue ni castiga su distribución gratuita por parte de quien lo reciba. 2.9 Audacity Audacity es un editor de grabación y edición de audio libre, de código abierto y multiplataforma 2. En la Figura 2.16 se observa la pantalla principal del programa. Figura 2.16: Pantalla principal de Audacity. Dentro de la pantalla podemos encontrar las distintas zonas numeradas, que se conocen de la siguiente forma 1. Barra de menú. 2. Botonera. 3. Regla temporal. 4. Pista de audio mono. 5. Pista de etiquetas. 2 Significa que se puede utilizar en distintos sistemas operativos como Windows, Linux y MacOS. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 18
23 6. Pista de audio estéreo. 7. Frecuencia de muestreo del proyecto. 8. Descripción temporal (tiempo de inicio y final de una selección, posición del cursor de reproducción, etc.) Todos los tipos de pista se ubican en lo que se define como Track Panel y se encuentran compuestas por un recuadro con información de la pista, una regla de amplitud y una representación de la señal (permite seleccionar entre oscilograma, espectrograma o nivel de presión sonora, la última de estas fue agregada como parte de este proyecto y no está disponible en la versión original del programa). En el caso de las pistas estéreo existen dos gráficas de la señal (una para cada canal) como se ve en la Figura Figura 2.17: Pista estéreo. Dentro de la barra de herramientas encontramos diferentes menús y cada uno de ellos se encarga de subdividirlas según su funcionalidad File: Manejo de archivos. Edit: Edición tanto de señales como de preferencias. View: Se encarga de la parte visual como ser el zoom de la señal. Transport: Herramientas de reproducción tales como reproducir, parar, pausar, etc.. Tracks: Permite crear, alinear, eliminar, copiar y manipular las pistas. Generate: Creación de pistas de ruido 3, tonos 4, chirp 5, etc. 3 Señal que contiene componentes frecuenciales en todo el espectro audible. 4 Señal compuesta por una onda senoidal de una determinada frecuencia y amplitud. 5 Señal senoidal que varía su frecuencia y amplitud de manera constante a lo largo del tiempo. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 19
24 Effect: Aplicación de efectos a las señales. Analyze: Análisis de las señales. Help: Ayuda, manuales, log, etc. De estos menús hay algunos sobre los cuales vale la pena hacer una explicación más profunda,debido a las modificaciones realizadas y herramientas creadas que se encuentran en ellos, estos son: File, Effect y Analyze. El primero presenta la opción de importar archivos del tipo WAV al proyecto, lo cual nos permite agregar la importación de los metadatos y crear nuevas pistas de etiquetas con ellos. Por otra parte los Plug-ins creados se pueden dividir en efectos o herramientas de análisis, la diferencia entre ellos es que el primero modifica la señal original y el segundo obtiene información sin realizar modificaciones. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 20
25 Desarrollo Capítulo 3 Para lograr cada uno de los objetivos fue necesario estudiar los distintos lenguajes de programación utilizados, como C y C++, no sólo para poder entender los archivos pertenecientes al código fuente sino también para poder escribir o desarrollar nuevos programas y ponerlos a prueba a la hora de realizar la depuración de ambos (cabe destacar que se deben seguir pautas definidas por los creadores del software que se encuentran en la página oficial destinada a nuevos desarrolladores de Audacity [6]). Si bien esto se llevó a cabo durante los primeros meses, se puede decir que es una tarea que no termina, ya que uno nunca deja de adquirir conocimientos a la hora de decodificar y redactar códigos funcionales. El desarrollo de interfaces gráficas se realizó utilizando la librería desarrollada bajo el lenguaje C++ llamada wxwidgets, la cual posee su propio código, que también fue estudiado y puesto en práctica a lo largo de todos los trabajos realizados debido a que Audacity lo utiliza para su interfaz gráfica. Para el desarrollo de códigos se utilizó el programa Microsoft Visual C Express Edition, sugerido por los mismos desarrolladores de Audacity (actualmente se está realizando un transpaso a la versión de Microsoft Visual C ). Una vez instalado, se prosiguió a agregar y compilar las librerías necesarias, FFTW (permite realizar transformadas de Fourier) y wxwidgets. La tarea de decodificación del código fuente y su documentación es algo que se llevó a cabo a lo largo de todo el proyecto, ya que cualquier avance requería un entendimiento del funcionamiento interno del programa y de la necesidad o no de modificarlo para adaptarlo al trabajo realizado. A continuación se desarrollan los trabajos realizados a lo largo del proyecto y las aplicaciones de cada uno de ellos. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 21
26 Capítulo 4 Modificaciones del código fuente Lo que se buscó dentro de esta tarea fue adaptar herramientas existentes del programa al funcionamiento deseado a la hora de utilizarlas en tareas de investigación. Para ello se necesitó encontrar dentro del código fuente (ver sección B.1) los archivos que intervienen en las aplicaciónes a modificar a la hora de ser ejecutadas. Dado que el código es extenso se debió recurrir a distintas formas de búsqueda. La principal provino de la creación, mediante el uso del programa Doxygen[8], de un archivo con el formato de una página web que permite encontrar las relaciones entre todos los archivos del código fuente utilizando una red conceptual. En la Figura 4.1 se muestra un ejemplo utilizando el archivo Envelope.h como referencia. Además se utilizó la herramienta de búsqueda perteneciente al programa Visual Studio C++ Express, que permite ubicar una palabra o frases sin importar en que parte del código fuente se encuentre. Figura 4.1: Red obtenida para el archivo Envelope.h utilizando Doxygen 4.1 Visor de espectrograma El visor de pistas (tracks) de Audacity permite elegir entre cinco distintas visualizaciones WaveTrack, WaveTrack (db), Espectrograma, Espectrograma (db) y Pitch. En esta parte del trabajo nos centraremos en el espectrograma que, como se explicó anteriormente, muestra de qué forma varía el espectro de la señal a lo largo del tiempo. Se puede ver en las Figuras 4.2, 4.3 y 4.4 el menú de configuración, el espectrograma de una señal obtenido con la escala de colores originales y el que se obtiene utilizando la escala de grises. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 22
27 Figura 4.2: Menú original de preferencias de espectrogramas de Audacity. Figura 4.3: Espectrograma de una señal utilizando la escala de colores original de Audacity. Figura 4.4: Espectrograma de una señal utilizando la escala de grises. Dentro de las preferencias del espectrograma se puede seleccionar el tamaño y el tipo de ventana. El tamaño define la cantidad de muestras que se toman para calcular el espectro de una banda temporal, además, este valor delimita la resolución temporal y la frecuencial según las siguientes fórmulas Proyecto de Ingeniería Escuela de Ingeniería Electrónica 23
28 δt = W s F s (4.1) δf = F s W s (4.2) donde W s es el tamaño de la ventana en muestras y F s es la frecuencia de muestreo (por ejemplo si F s = Hz y W s = 4096 se tendrá una resolución temporal de 0,093 s y una resolución frecuencial de 10,72 Hz ). El tipo de ventana, por otro lado, elimina o disminuye el ruido de alta frecuencia que aparece por las discontinuidades entre cuadros consecutivos de la señal. Lo que se deseaba modificar era la escala de colores con la que se grafica el espectrograma. Para ello se debió analizar el código fuente de Audacity con el fin de encontrar cuáles archivos intervienen en el dibujo y luego obtener mediante ingeniería inversa, las distintas escalas utilizadas por otros softwares de edición de audio a la hora de dibujar espectrogramas. El utilizar escalas de colores similares a las utilizadas en otros programas permite: 1. Interoperabilidad con otros softwares, permitiendo una adaptación e incluso migración al Audacity sin perder lo ya acostumbrado de otros softwares. 2. Compartir espectrogramas con usuarios de otros programas. 3. Adaptar la escala de colores al gusto personal de cada uno. Luego de analizar el código fuente se encontró que el programa parte de cinco colores definidos a los que les asigna un valor que va de 0 a 1 con saltos de 0,25 y luego genera la escala a través de un gradiente de 256 puntos entre dos colores definidos consecutivos. Una vez encontrado esto se procedió a generar un archivo que contuviera componentes en frecuencia de distintas amplitudes (las 5 necesarias para generar el gradiente), obtener los valores RGB (red, green y blue) que los programas les asignan y modificar el código fuente para que existiera la opción de elegir entre los distintos mapas, obteniendo así el menú de preferencias que se puede observar en la Figura 4.5 y los distintos espectrogramas representados en las Figuras 4.6, 4.7, 4.8 y 4.9. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 24
29 Figura 4.5: Menú de preferencias modificado y vista de la lista desplegable. Figura 4.6: Escala de colores 1. Figura 4.7: Escala de colores 2. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 25
30 Figura 4.8: Escala de colores 3. Figura 4.9: Escala de colores Analizador de espectro Audacity posee una herramienta llamada Analizador de Espectro que calcula y muestra el valor promedio de las componentes frecuenciales a lo largo de toda la pista de audio o de una porción de ella. El problema de esta herramienta es que tiene un límite superior y uno inferior en cuanto a la cantidad de muestras que se pueden seleccionar para realizar el cálculo. El límite superior viene dado por una cantidad de muestras determinada por los desarrolladores del programa para evitar la carga computacional (cosa que hoy en día con las computadoras actuales no es necesario hacer) y el inferior se debe a que se necesita al menos una selección del tamaño de una ventana de análisis para calcular el espectro. Para solucionar el primer inconveniente se buscó en qué punto el programa tomaba la decisión de acotar la cantidad de muestras y se removió esa limitación. Para quitar el tope inferior se debió estudiar cual sería el comportamiento óptimo y se llegó a la conclusión de que existian distintas situaciones a las cuales el programa debía responder de una forma determinada. Además se vio como algo útil dar la opción de que la ventana se actualizara automáticamente cada 0,5 segundos, de esta manera el usuario puede ir modificando su selección y ver de qué forma varía el espectro de la señal. A continuación se muestran las diferentes situaciones que se pueden dar y de qué manera responde el programa: Proyecto de Ingeniería Escuela de Ingeniería Electrónica 26
31 Si la cantidad de datos seleccionada es mayor que el tamaño de la ventana (Figura 4.10a), mientras la selección varía se actualiza la gráfica (Figura 4.10b). (a) (b) Proyecto de Ingeniería Escuela de Ingeniería Electrónica 27
32 Si la cantidad seleccionada es menor que el tamaño de la ventana (Figura 4.11a), se calcula el punto medio y se centra en él, la ventana de selección (Figura 4.11b). (a) (b) Proyecto de Ingeniería Escuela de Ingeniería Electrónica 28
33 Si se selecciona sólo 1 dato dato de la señal (Figura 4.12a), la ventana se centra en ese punto (Figura 4.12b). (a) (b) Proyecto de Ingeniería Escuela de Ingeniería Electrónica 29
34 En las figuras 4.13a y 4.13b, se observan el menú orignal y el modificado, respectivamente. En el segundo se puede ver en la parte media inferior el botón que habilita o inhabilita el AutoUpdate. (a) (b) Proyecto de Ingeniería Escuela de Ingeniería Electrónica 30
35 La modificación realizada ayuda a darle al programa 1. Compatibilidad con otros softwares. 2. Mayor precisión en la determinación del lugar donde se desea obtener el espectro. En la sección A.1 se puede ver la función añadida al código fuente permite actualizar el espectro según la selección y en la Figura 4.14 se observa el diagrama en bloques del funcionamiento del analizador de espectro modificado. Figura 4.14: Diagrama en bloques del funcionamiento interno del analizador de espectro. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 31
36 4.3 Visor de nivel La posibilidad de observar el nivel sonoro de una señal es fundamental a la hora de analizar la misma, ya que permite 1. Mediciones acústicas sin necesidad de hacer cálculos externos. 2. Visualizar la evolución del nivel a lo largo del tiempo, lo que permite detectar eventos específicos. 3. Compararación de diversas ponderaciones frecuenciales y temporales. Para obtener dicha curva es necesario aplicar diversos algoritmos a la señal, se muestra a continuación un diagrama en bloques donde se ve paso a paso las modificaciones que sufre la onda. Figura 4.15: Diagrama en bloques del cálculo de nivel de presión sonora equivalente de una señal. Cómo se explicó anteriormente se aplican dos tipos de ponderaciones a la hora de realizar el cálculo (pasos 2 y 4 del digrama en bloques), una frecuencial y una temporal. La primera busca tener en cuenta que la sensibilidad auditiva varía según la frecuencia y la segunda define el tiempo de integración utilizado para obtener el promedio energético. Para poder definir ambos valores se agregó al menú de preferencias el apartado Level, como se puede observar en la Figura 4.16 Proyecto de Ingeniería Escuela de Ingeniería Electrónica 32
37 Figura 4.16: Menú de preferencias del visor de nivel. Además se añadió al TrackMenue (menú de la pista), ver Figura 4.18, la opción para seleccionar la visualización del nivel (de la misma manera que se puede elegir entre ver las distintas representaciones de la señal), y la posibilidad de definir el valor de fondo de escala o asignar un valor conocido de nivel a una porción de la pista (por ejemplo, en el caso de tener tono de calibración) utilizando el menú que se ve en la Figura 4.17 y de esta manera realizar un corrimiento en el eje de amplitud. Las Figuras 4.19, 4.20 y 4.21 muestran cómo se ve la señal orignal, su nivel y de que manera se aplica el corrimiento luego de seleccionar el tono de calibración y asignarle el valor de 94 db. Figura 4.17: Menú de definición del tono de calibración o el fondo de escala. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 33
38 Figura 4.18: Track Menue modificado. Figura 4.19: Señal original. Figura 4.20: Vista del nivel de la señal de la figura Proyecto de Ingeniería Escuela de Ingeniería Electrónica 34
39 Figura 4.21: Vista del nivel luego de asignarle el valor del tono de calibración seleccionado en la Figura Se puede observa en las Figuras 4.22, 4.23, 4.24 y 4.25 las distintas ponderaciones frecuenciales aplicadas a una señal del tipo chirp entre 20 Hz y 22 KHz con τ = 1 segundo y en las Figuras 4.26 y 4.27 el nivel de una pista con ponderación frecuencial Z con τ = 1 segundo y τ = 0,125 segundos respectivamente. Figura 4.22: Vista del nivel de una chirp de 20 Hz a 22 KHz con ponderación Z. Figura 4.23: Vista del nivel de una chirp de 20 Hz a 22 KHz con ponderación A. Figura 4.24: Vista del nivel de una chirp de 20 Hz a 22 KHz con ponderación C. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 35
40 Figura 4.25: Vista del nivel de una chirp de 20 Hz a 22 KHz con ponderación K. Figura 4.26: Vista del nivel de una señal con ponderación Z y τ = 1 s. Figura 4.27: Vista del nivel de una señal con ponderación Z y τ = 0,125 s. En la sección A.2 se observa ver el código que permite calcular el nivel de la señal y en la Figura 4.28 el diagrama de bloques perteneciente al visor de nivel. Figura 4.28: Diagrama de bloques del visor de nivel. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 36
41 4.4 Importador y exportador de metadatos Esta modificación se encarga de importar o exportar, a partir de un archivo con formato WA- VE, las marcas (cues), etiquetas (labels) y anotaciones (notes) guardadas en el mismo. Las mismas son utilizadas por investigadores, músicos, productores musicales o cualquier persona que lo necesite para señalizar y realizar notas sobre un evento acústico, como por ejemplo identificación de fuentes, datos sobre horario y lugar de medición, tonos de calibración, señales de sincronismo entre varias mediciones, etc. Este tipo información es conocido genéricamente como metadatos (datos que se refieren a otros datos, describiéndolos, clasificándolos o calificándolos). Los metadatos son agregados de manera interactiva posteriormente a la grabación del archivo original, quedando grabados al final del archivo de audio. Dentro del programa Audacity ésto se puede realizar utilizando pistas especiales denominadas LabelTracks. Audacity permite crear, exportar e importar marcas en formato de texto (.txt) compuestos por tres columnas separadas por tabulaciones que contienen la siguiente información: Inicio Marca 1 Fin Marca 1 Etiqueta 1 Inicio Marca 2 Fin Marca 2 Etiqueta 2 Inicio Marca 3 Fin Marca 3 Etiqueta 3 Al exportarse e importarse de esta manera no se obtiene el funcionamiento inter-programa deseado, es decir, no se permite que un archivo con marcas creado y grabado en un determinado software se pueda abrir en otro. Por este motivo es que surge la necesidad de agregarle a Audacity la posibilidad de importar y exportar las marcas, etiquetas y notas desde y hacia los archivos. Luego de analizar y estudiar cómo está compuesto un archivo con formato WAVE (ver Figura 4.29 y el funcionamiento de las LabelTracks (ver Figura 4.30) se llegó a la conclusión de que se debía modificar lo que Audacity define como Label y su composición. Una Label, según el software, posee tres variables que son el inicio, el final y la etiqueta, se puede ver en la función Addlabel perteneciente a las LabelTracks y que para la importación y exportación propia del programa utiliza estos campos. Para lograr el funcionamiento deseado hace falta agregar un campo más a la Label, donde guardar la nota que se puede asociar o no a ella. Por eso se agregó la variable note al objeto Label quedando compuesta entonces por cuatro valores: inicio, fin, etiqueta y nota. De esta manera ahora la función para agregar una etiqueta es la que se ve a continuación. Una vez logrado esto, y basándose en la composición un archivo WAVE, se desarrollaron los distintos códigos para poder realizar la lectura y escritura de archivos. La primera implementación fue el lector de etiquetas en forma de plug-in dentro del menú de análisis, pero al comentar dentro de la lista de correo electrónico de desarrolladores de Audacity propusieron que no fuera una herramienta externa sino parte del código fuente, por lo cual se realizaron las modificaciones necesarias para añadirlo al mismo. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 37
42 Figura 4.29: Composición de un archivo de formato WAVE [11]. Figura 4.30: LabelTrack con distintos tipos de marcas. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 38
43 El funcionamiento entonces, pasó a ser el siguiente: Si el usuario abre o importa un archivo con extensión.wav (A.3) el programa revisa el encabezado del mismo y determina si posee algún tipo de metadato (A.4). En caso de que exista algún metadato, se abre un cuadro de dialogo que pregunta si se desean cargar las etiquetas que el archivo tiene. Si el usuario responde de manera afirmativa el programa comienza con la lectura de las etiquetas, marcas y notas, debido al formato se realiza de la siguiente manera: 1. Lee la muestra de comienzo de cada marca y se obtiene la cantidad de marcas en total que existen. 2. Guarda la cantidad de muestras de duración y la longitud de la cadena de caracteres de cada marca. 3. Crea un espacio en memoria del tamaño de la suma de los caracteres de todas las marcas juntas. 4. Copia en memoria cada etiqueta una seguida de la otra. 5. Repite el proceso de lectura de etiquetas para obtener las notas y a su correspondiente posición (ya que no todas las etiquetas tiene una nota asociada). Crea una LabelTrack y carga las etiquetas asignándole inicio, fin y nota (A.5). A causa del agregado del campo note se debió modificar también el editor de etiquetas que posee el software, que muestra en una tabla el nombre de la pista, la etiqueta, el inicio y el final de esta última. La modificación consistió en agregar una columna denominada Note y cambiar el código fuente para que cargue y muestre la misma en ella. A continuación, en las Figuras 4.31 y 4.32, se muestra el editor original y el modificado respectivamente. Por su parte el exportador de etiquetas funciona de manera inversa cuando se desea guardar un archivo con formato.wav o exportar etiquetas y existen LabelTracks. A diferencia del importador se necesita no sólo modificar la parte final del archivo para agregar la información sino además cambiar el encabezado para informar que existen otros datos además de los de la señal de audio. En las Figuras 4.33, 4.34, 4.35 y 4.36 se puede ver el funcionamiento por pasos de cómo importar los metadatos. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 39
44 Figura 4.31: Menú de edición de labels original. Figura 4.32: Menú de edición de labels modificado. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 40
45 Figura 4.33: Se selecciona Importar->Audio. Figura 4.34: Se elige el o los archivos que se desean importar. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 41
46 Figura 4.35: Si el archivo tiene marcas, etiquetas o notas aparece un mensaje que nos pregunta si deseamos importarlas. Figura 4.36: Si seleccionamos la opción Si se crea la LabelTrack con las etiquetas. A la hora de exportar las marcas el programa revisa si el formato seleccionado es.wav, en ese caso y si existe LabelTracks, aparece el mensaje que se ve en la Figura 4.37 Proyecto de Ingeniería Escuela de Ingeniería Electrónica 42
47 Figura 4.37: Mensaje para decidir si exportar o no las marcas. Además se implementó, como se ve en la Figura 4.38, la posibilidad de ver si una etiqueta tiene asignada una nota al hacerle click sobre ella en la LabelTrack. Figura 4.38: Visor de nota al hacer click sobre una marca. El código de la sección A.6 permite exportar las marcas, etiquetas y notas al archivo.wav Proyecto de Ingeniería Escuela de Ingeniería Electrónica 43
48 seleccionado. En las Figuras 4.39 y 4.40 se muestran los diagramas de bloque que describen el funcionamiento del importador y del exportador de marcas, etiquetas y notas. Figura 4.39: Diagrama en bloques del importador de CUEs. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 44
49 Figura 4.40: Diagrama en bloques del exportador de CUEs. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 45
50 Capítulo 5 Desarrollo de Plug-ins 5.1 Creación de archivos base Para llevar a cabo este apartado me puse en contacto con programadores de otras partes del mundo, los cuales ya habían desarrollado herramientas para Audacity anteriormente. A partir de la información recopilada y algunos archivos que intercambié con ellos, creé una guía de cómo obtener e insertar un Plug-in de Audacity, partiendo desde cero (ver la sección B.2). Los archivos fundamentales para el desarrollo de herramientas nuevas son module.h y module.cpp, creados por el Ingeniero Italiano Simone Campanini de la Università degli Studi di Parma - Facoltà di Ingegneria. Ambos archivos poseen sólo algunas líneas de código capaces de integrar a Audacity el Plug-in desarrollado, luego es trabajo del programador el modificarlos y darle la funcionalidad deseada. 5.2 Spectral Edit Filter Este Plug-in es una herramienta que permite al usuario dibujar sobre el espectrograma de la señal un filtro que varíe a lo largo del tiempo. Posee diversas utilidades entre ellas: 1. Provee una manera muy intuitiva e interactiva de filtrar en el dominio espectral. 2. Aisla o elimina eventos caracterizados por algún rasgo espectral característico. 3. Posibilita determinar la audibilidad o no de determinada porción del espectro. 4. Es muy útil para composición de música electroacústica. 5. Depura de manera interactiva el espectro, útil para la eliminación de ruidos no estacionarios y que por lo tanto no se prestan al uso de la herramienta Noise Removal. 6. Útil como herramienta educativa, ya que permite un rápido entrenamiento y autoentrenamiento en la detección de patrones espectrales característicos (ejemplo, pájaros, perros, voces humanas, vehículos, etc.). La interfaz gráfica es una ventana semitransparente que se posiciona sobre el espectrograma abierto y permite definir a través de la selección entre distintos tipos de figuras (cuadriláteros, polígonos y curvas arbitratias cerradas) el filtro deseado. Como se explicó anteriormente, debido a que las interfaces gráficas se encuentran escritas bajo la librería wxwidgets se lo utilizó para el desarrollo de ésta GUI (Graphical User Interface o Interfaz Gráfica de Usuario). El desarrollo se realizó en varias etapas: 1. Diseño de la ventana semitransparente. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 46
51 2. Desarrollo de la posibilidad de dibujar sobre la ventana. 3. Búsqueda de la forma más conveniente de mostrar el menú e identificación de funciones a mostrarse. 4. Integración de la ventana como Plug-In a Audacity. 5. Adquisición, edición y muestra de datos en pantalla. El funcionamiento interno, una vez diseñado el filtro, consiste en: 1. Transformar mediante un cálculo las abscisas y ordenadas de los puntos dibujados en valores de tiempo y frecuencia respectivamente. 2. Calcular el comienzo y el final del filtro y reemplazar los valores de la señal anteriores y posteriores a estos valores por ceros (equivalente a aplicar un filtro de ganancia nula constante) 3. Crear una matriz donde cada columna contenga los valores correspondientes a la respuesta del filtro a aplicar en cada ventana. Este filtro está compuesto por unos y ceros que se asignan siguiendo un conjunto de reglas: Ganancia nula hasta encontrar el primer valor en orden creciente de frecuencia correspondiente a ese tiempo (discretizado cada medio cuadro). Ganancia uno hasta encontrar el segundo valor de frecuencia correspondiente a ese tiempo, siempre y cuando exista una diferencia de al menos un δf = F s /W s con el valor anterior (ver Figura 5.1). Esto evita que una línea vertical se transforme en una tira de ceros y unos alternados. Figura 5.1: Ejemplo de obtención de filtro a partir del dibujo (última columa vs filtro). Proyecto de Ingeniería Escuela de Ingeniería Electrónica 47
52 El filtro generado por múltiples dibujos es la unión menos la intersección de ellos. La matriz se utiliza para multiplicar el espectro de cada ventana de audio y así obtener la señal filtrada. Cada cuadro de audio tiene un ancho de 4096 muestras (lo que resulta en una resolución frecuencial de 10,72 Hz, próxima a la resolución del oído humano común) y es multiplicado por una ventana de Hanning 1 antes de la edición, luego se obtiene el espectro del mismo y se lo multiplica por el filtro guardado en la matriz. Para evitar añadir ruido al reconstruir la señal luego de ser modificada se toman cuadros con un solapamiento del 50 %. En resumen el funcionamiento paso a paso es el siguiente: 1. Se genera, a partir del dibujo, la matriz que contiene el filtro para cada cuadro. 2. Se reemplazan las muestras fuera del filtro por ceros. 3. Se separa la señal en cuadros de 4096 muestras solapados al 50 %. 4. Se le calcula el espectro utilizando el método FFT. 5. Se multiplica la FFT por el vector de la matriz de filtro correspondiente. 6. Se vuelve el cuadro al dominio temporal mediante la IFFT. 7. Se multiplica el cuadro por la ventana de hanning. 8. Se repite desde el paso 4 hasta el 7 hasta recorrer todos los cuadros. 9. Se reconstruye la señal sumando los cuadros, nuevamente con el solapamiento del 50 %. Los puntos 3 a 7 los realiza la función fftfilter, desarrollada por el Ing. Gonzalo Sad (basada en un script de MATLAB creado por Federico Miyara originado en una idea de David Giardini), modificada por mí para darle la funcionalidad deseada y cuyo código se muestra en la sección A.4. A continuación se muestra cómo se utiliza la herramienta, lo primero es seleccionarla (Figura 5.2, luego se aparecen dos cuadros de dialogo, como se ven en las Figuras 5.3 y 5.4 que permiten decidir si se desea por un lado extraer o substraer parte del audio y por otro si se quiere hacerlo en ambos canales por igual, de distinta manera o sólo hacerlo en uno de ellos. Una vez elegida las opciones sólo resta dibujar el filtro sobre la señal, elegir la opción Aplicar Filtro (se muestra en la Figura 5.5 el menú contextual que aparece al hacer click derecho sobre la ventana) e insertar la frecuencia máxima que aparece en el espectrograma (valor necesario para poder realizar la transformación abscisas/ordenadas en tiempo/frecuencia). 1 Permite reducir el ruido de alta frecuencia que aparece por saltos bruscos entre cuadro y cuadro Proyecto de Ingeniería Escuela de Ingeniería Electrónica 48
53 Figura 5.2: Selección del Plug-in. Figura 5.3: Ventana de selección de extracción o substracción. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 49
54 Figura 5.4: Ventana de selección de tipo de filtrado. Figura 5.5: Menú contextual que permite seleccionar las distintas herramientas de dibujo. En las Figuras 5.6, 5.7, 5.8 y 5.9 se muestran los casos de extracción y de substracción. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 50
55 Figura 5.6: Filtro dibujado sobre el espectrograma original, se puede ver el menú de ingreso de la máxima frecuencia visible en el espectrograma. Figura 5.7: Espectrograma luego de extraer de la señal orignal las frecuencias deseadas. Vemos que, comparando la señal original y la filtrada, sólo se ven en la pista inferior las porciones de espectrograma seleccionados en la Figura 5.6. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 51
56 Figura 5.8: Dibujo sobre el espectrograma de las frecuencias a substraer. Figura 5.9: Espectrograma luego de aplicar el filtro dibujado. En este caso, a diferencia del primero, se observó que se obtuvo el espectrograma de la señal original menos la selección que se ve en la Figura 5.8. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 52
57 En el siguiente diagrama de bloques se muestra el funcionamiento del Plug-in Figura 5.10: Diagrama en bloques del funcionamiento del filtro variable en el tiempo. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 53
58 5.3 Time Variable Filter Esta herramienta le permite al usuario definir un filtro que varía en tiempo, frecuencia y amplitud, dando así un mayor control que el Spectral Edit Filter a cambio de ser un poco más complicado de operar. Unas de las principales aplicaciones de este plug-in son los experimentos psicoacústicos, al poder aplicar sucesivos filtros a una misma señal, por ejemplo un ruido blanco, de una sola vez. A diferencia del Plug-in anterior, que utilizaba un filtro pasa banda (Figura 5.11(a)), el usuario puede definir distintos puntos de paso para el filtro y diseñar el que mejor se adapte al uso que desea darle (Figura 5.11(b)). Figura 5.11: Comparación de los tipos de filtros y la tabla que los genera (a) Filtro pasabanda (b) Filtro creado al definir puntos de paso. El funcionamiento interno del plug-in es similar al Spectral Edit Filter, excepto la forma en la que se genera la matriz filtro. Primero el usuario define puntos de paso del filtro y el tiempo en que desea que se aplique. A partir de los puntos de paso se interpola, con una curva Hermite Spline 2, el filtro buscado y se lo asigna a la columna de la matriz correspondiente. Luego, mediante una interpolación lineal entre sucesivas curvas definidas, se genera el resto de la matriz. Esto implica que se deben definir al menos dos curvas y que a diferencia del Spectral Edit Filter la ganancia de los filtros puede tomar valores entre 0 y 1. La interfaz visual, como se ve en la Figura 5.12, está compuesta por dos tablas, un conjunto de botones y una gráfica. Las tablas le permiten al usuario definir el tiempo en que comienza cada filtro y los puntos de paso de la curva. Los botones permiten agregar o remover filtros y puntos de paso, graficar cualquiera de los filtros definidos ( Plot Filter ), seleccionar el tipo de interpolación 2 Curva diferenciable definida en porciones mediante polinomios. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 54
59 deseado, y aplicar el filtro a la señal. Por último, la gráfica permite al usuario observar si el filtro diseñado es lo que desea o no. Figura 5.12: Interfaz gráfica. La gráfica fue diseñada con una librería desarrollada en wxwidgets llamada wxmathplot que está compuesta por dos archivos, a saber, mathplot.h y mathplot.cpp, que se pueden descargar desde la página oficial de la librería [10] y posteriormente se deben agregar a cada proyecto que las necesite. Una vez que el usuario define los puntos de paso y selecciona el botón Plot Filter, se realiza una interpolación del tipo Spline Cúbica de Hermite definida según la siguiente fórmula: p(x) = (2t 3 3t 2 +1)p k +(t 3 2t 2 +t)(x k+1 x k )m k +( 2t 3 +3t 2 )p k+1 +(t 3 t 2 )(x k+1 x k )m k+1 (5.1) donde p k, x k y m k definen ganancia, frecuencia y derivada del filtro en un punto k y t se define de la siguiente forma t = (x x k) (x k+q x k ) Luego de realizar distintas pruebas se decidió darle al usuario la posibilidad de elegir entre diferentes formas de cálculo de derivadas (5.2) Derivadas nulas (disminuye el cálculo matemático y evita sobrepicos indeseados alrededor de los puntos definidos). Cálculo automático del valor de la derivada (a partir de los valores del punto de paso anterior y del posterior). Proyecto de Ingeniería Escuela de Ingeniería Electrónica 55
60 En la Figura 5.13 se puede observar una comparación entre los distintos criterios de cálculo de la primer derivada. Figura 5.13: Comparación de los criterios de cálculo de derivadas. A continuación en las Figuras 5.14 a 5.17 vemos el paso a paso como funciona el plug-in aplicándolo a ruido blanco y definiendo 4 filtros y en la sección A.5 se encuentra la porción de código que permite obtener, a partir de los puntos de paso la curva del filtro utilizando la interpolación Hermite Spline. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 56
61 Figura 5.14: Ruido blanco. Figura 5.15: Selección del Plug-in. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 57
62 Figura 5.16: Interfaz gráfica del plug-in, definición de los puntos de paso y gráfica del segundo filtro. Figura 5.17: Se observa arriba el audio original y debajo el audio filtrado (utilizando un mapa de colores donde 0 es negro y 1 es amarillo). En la Figura 5.18 se muestra el diagrama en bloques que corresponde al funcionamiento de Proyecto de Ingeniería Escuela de Ingeniería Electrónica 58
63 la herramienta antes explicada. Finalmente en la sección A.5 vemos una porción de código que permite obtener, partiendo de los puntos ingresados la interpolación Hermite Spline. Figura 5.18: Diagrama en bloques del funcionamiento del filtro variable en tiempo y frecuencia. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 59
64 5.4 Statistical Level Calc Esta herramienta permite obtener, a partir de la señal o una porción de ella, las gráficas de densidad de probabilidad o de niveles estadísticos calculado además los valores de L 5, L 10, L 50, L 90 y L 95, permitiendo seleccionar una ponderación temporal, una frecuencial, un rango de tiempo y, en el caso de que se trate de una señal estéreo, el canal a visualizar (izquierdo, derecho o ambos). Los valores devueltos por el plug-in tienen diversas aplicaciones entre ellas: 1. Muy utilizados en varios criterios psicoacústicos que miden la variabilidad del ruido. 2. El L 90 se toma generalmente como ruido de fondo debido a las fuentes cercanas y lejanas y el L 95 como el ruido de fondo debido a fuentes lejanas. 3. El L 10 o el L 5 se toman en reemplazo del máximo por ser valores mucho más repetibles que el máximo. 4. El L 10 - L 90 se denomina çlima del ruido 2 es una medida de la variabilidad del ruido 5. Determinados ruidos, por ejemplo el del tránsito, tienen curvas de niveles estadísticos que siguen patrones específicos, podrían usarse para investigar sobre la determinación automática de la presencia de eventos extraños o anómalos. Internamente el plug-in funciona de la siguiente manera Calcula el nivel de presión sonora a lo largo de toda la pista utilizando ambas ponderaciones, la temporal y la frecuencial, elegidas. Se ordenan los valores obtenidos de menor a mayor. Según el valor se le asigna una posición dentro de 100 rangos posibles de nivel, calculados entre el mayor nivel y el menor. Obtiene los puntos de las curvas y los valores L 5, L 10, L 50, L 90 y L 95 (ver código ubicado en la sección A.6). Grafica la/s curva/s dependiendo de las configuraciones seleccionadas y muestra los valores obtenidos. Para ello calcula la media aritmética x = 1 = 1 N x i (5.3) N i y el desvío estadar i = 1 σ = N (x i x) 2 N 1 y grafica los valores desde x 4 σ hasta x + 4 σ. (5.4) Proyecto de Ingeniería Escuela de Ingeniería Electrónica 60
65 En las Figuras 5.19 y 5.20 se observa cómo varía la interfaz gráfica según se trate de una señal estéreo o mono y en la primera de ellas se muestran las opciones de cada menú, y en la Figura 5.21 se muestra un ejemplo de aplicación seleccionando una porción de audio (se observa que start time y end time del la interfaz de usuario son iguales al tiempo seleccionado en segundos). Figura 5.19: Interfaz gráfica correspondiente a una señal del tipo estéreo. Figura 5.20: Interfaz gráfica para una señal del tipo mono. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 61
66 Figura 5.21: Ejemplo de funcionamiento utilizando una porción de audio. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 62
67 En la Figura 5.22 vemos el diagrama en bloques del funcionamiento de la herramienta. Figura 5.22: Diagrama en bloques de la herramienta Statistical Level Calculator. Proyecto de Ingeniería Escuela de Ingeniería Electrónica 63
Software para edición de audio. Grabación
Software para edición de audio. Grabación 1. Grabación de audio Una vez conectado el micrófono a la tarjeta de sonido, debemos configurar en el sistema el dispositivo de entrada de audio. En Panel de control,
Curso virtual de Audacity. Bienvenidos al curso de Audacity, bajo la modalidad virtual, propuesto por Uruguay Educa.
Curso virtual de Audacity Bienvenidos al curso de Audacity, bajo la modalidad virtual, propuesto por Uruguay Educa. Audacity es un programa para la grabación y edición de sonidos, de libre uso, código
Capítulo 3. dependen de él son, por ejemplo, la voz, una onda de radio, un electrocardiograma, etc. El
Capítulo 3 Procesamiento digital de señales mioeléctricas Las señales se representan matemáticamente como funciones de una o más variables independientes. La variable independiente más común es el tiempo,
ACUSTICA FISICA (primera parte)
ACONDICIONAMIENTO ACUSTICO TEMAS TEORICOS ACUSTICA FISICA (primera parte) 1.1_ Definición Se define la acústica como la rama de la ciencia, parte de la física, que se ocupa de los fenómenos sonoros perceptibles
Laboratorio 7 PDS con la tarjeta de sonidos y Matlab
13 Laboratorio 7 PDS con la tarjeta de sonidos y Matlab El objetivo de esta sesión de laboratorio es mostrar que con algunos recursos de cómputo muy comunes se pueden implantar y probar algunos algoritmos
Práctica 10: Transformaciones en el dominio frecuencial con SMS
Práctica 10: Transformaciones en el dominio frecuencial con SMS Sintesi i Processament del So I Emilia Gómez Gutiérrez ESMUC, 2009-2010 emilia.gomez@esmuc.cat 8 de diciembre de 2009 Índice 1. Introducción
Desarrollo del tutorial: paso 1 de 9 Antes de empezar, veamos los distintos tipos de efectos que soporta Audacity: 1. Efectos internos Son los efectos que lleva el programa incorporados de serie. Aparecen
1. CÓMO PRODUCIR ARCHIVOS DE AUDIO?: AUDACITY
Introducción. Este tutorial tiene por objetivo facilitar el manejo de la herramienta del editor de sonido Audacity, para trabajar sobre la producción de archivos de audio. De modo que, a lo largo de este
GUÍA DE GRABACIÓN Y EDICIÓN EN AUDACITY
GUÍA DE GRABACIÓN Y EDICIÓN EN AUDACITY AUDACITY EN UN VISTAZO Audacity es un programa de edición de audio de código abierto y gratuito. Esta es la pantalla que nos muestra al iniciarlo: Vamos a centrarnos
SCEA. Capítulo V: Pruebas y Análisis de Resultados.
SCEA Capítulo V: Pruebas y Análisis de Resultados. 166 Sistema Caracterizador de Equipos de Audio En este capítulo se mostrarán los resultados de diferentes mediciones y sus respectivas interpretaciones.
Acoustica 3.3 Manual del Usuario
Acoustica 3.3 Manual del Usuario Acon Digital Media GmbH Acoustica 3.3 Manual del Usuario Todos los derechos reservados. Ninguna parte de este trabajo puede ser reproducida de ninguna forma y por ningún
INFORMACIÓN TÉCNICA. Derechos Reservados 2006 ABS INGENIEROS S.A.C. www.absingenieros.com Telefax. (51-1) 567-8230
Derechos Reservados 2006 S.A.C. www.absingenieros.com Telefax. (51-1) 567-8230 INDICE GENERAL 1 INFORMACIÓN GENERAL 2 2 HERRAMIENTAS DEL SOFTWARE 6 2.1 MANEJO DE DATOS TOPOGRÁFICOS 6 2.2 EDICIÓN DE BASES
PRÁCTICA 08. GUIDE. Calculadora. Montor Láscares Pedro Antonio Ortiz Rosas Mario
PRÁCTICA 08. GUIDE Calculadora Montor Láscares Pedro Antonio Ortiz Rosas Mario Contenido Capítulo 1... 2 Introducción... 2 Capítulo 2... 3 Marco Teórico... 3 2.2 Matlab... 3 2.3 Guide... 3 Capítulo 3...
Elaboración de materiales multimedia: sonido y vídeo
UNIDAD 10 Elaboración de materiales multimedia: sonido y vídeo Secuencia de un caballo galopando. Eadweard Muybridge, 1887. (Wikipedia org. Dominio público) E n esta Unidad continuaremos con el estudio
AUDACITY BÁSICO EDICIÓN DE SONIDO
EDICIÓN DE SONIDO Índice del curso 1. INTRODUCCIÓN AL SOFTWARE LIBRE...4 1.1. Que es el software libre...4 1.2. Historia...4 1.3. Libertades del software libre...5 1.4. Ventajas del software libre...6
ESTUDIO DE PITCH EN SEÑALES POLIFÓNICAS
ESCUELA TECNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIONES Titulación: INGENIERO TECNICO DE TELECOMUNICACIONES, ESPECIALIDAD IMAGEN Y SONIDO Titulo del proyecto: ESTUDIO DE PITCH EN SEÑALES
My Ringading Manual de Usuario
My Ringading Manual de Usuario Acon Digital Media GmbH My Ringading Manual de Usuario Todos los derechos reservados. Inhalt I Contenido 2 Parte I Introducción 1 Requerimientos del... Sistema 2 Parte II
CAPITULO I PROCESAMIENTO DIGITAL DE SEÑALES PORTAL DE DESARROLLO
3 4 CAPIITULO II PROCESSAMIIENTO DIIGIITAL DE SSEÑALESS PORTAL DE DESSARROLLO Cotidianamente escuchamos la frase mundo digital, pero hasta donde estamos concientes de esta realidad que vivimos. Hasta hace
Manual para manipular audio Elaborado por:
Manual para manipular audio Elaborado por: Guadalupe González Franco Nadia Álvarez de Lucio Ruth Jiménez López 1 Presentación El presente manual muestra los procedimientos básicos para modificar, rediseñar
GUÍA BÁSICA PARA MANEJO DEL AUDACITY I. QUÉ ES EL AUDACITY Y CUÁLES SON SUS VENTAJAS? II. QUÉ OTROS PROGRAMAS EXISTEN DE GRABACIÓN?
GUÍA BÁSICA PARA MANEJO DEL AUDACITY I. QUÉ ES EL AUDACITY Y CUÁLES SON SUS VENTAJAS? Audacity es una aplicación informática que se utiliza para grabación y edición de audio. Las ventajas de es de aplicación
> Temario Curso Office en Mac <
Procesador de texto Introducción El procesador de texto, forma parte de la suite de Microsoft Office y es uno de los más utilizador en la actualidad. Su gran versatilidad permite realizar desde una carta
Sistemas de control de motores en Tiempo Real mediante Matlab
Sistemas de control de motores en Tiempo Real mediante Matlab Resumen TITULACIÓN: Enginyeria Automàtica i Electrònica Industrial (1998) AUTOR: Augusto Cilento DIRECTOR: Enric Vidal FECHA: Febrero 2007.
CAPÍTULO 6 INSTRUMENTO VIRTUAL
Diseño y implementación de un medidor de frecencia para frecuencias bajas CAPÍTULO 6 INSTRUMENTO VIRTUAL Como se ha ido señalando a lo largo de esta memoria, el objetivo del proyecto no es otro que el
Usando Audacity Tutorial
Usando Audacity Tutorial KBCS FM Traducción Radio Zapote, México En estos tiempos, existen diversos programas de cómputo para realizar ediciones de audio digitalmente, con ellos puedes hacer cosas maravillosas
Recomendaciones para el uso de las netbook por personas con baja visión. Agosto de 2011
Recomendaciones para el uso de las netbook por personas con baja visión Agosto de 2011 1 Recomendaciones para el uso de las netbook por personas con baja visión. Daniel Zappalá Enrique Berdini Indice -

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución