procesamiento digital de señales - emagister.com · el efecto doppler en ondas sonoras se refiere...

24
Eco en tiempo real Procesamiento Digital de Señales El presente documento realiza un análisis de los principales efectos acústicos. Además se presenta un ejemplo de la aplicación de eco en tiempo real a una señal de voz utilizando Matlab 7.0 Electrónica y Redes de Información Carlos G. Encalada B. Escuela Politécnica Nacional 10 de diciembre de 2007

Upload: buiphuc

Post on 11-May-2018

221 views

Category:

Documents


2 download

TRANSCRIPT

Eco en tiempo real Procesamiento Digital de Señales

El presente documento realiza un análisis de los principales efectos

acústicos. Además se presenta un ejemplo de la aplicación de eco en

tiempo real a una señal de voz utilizando Matlab 7.0

Electrónica y Redes de Información

Carlos G. Encalada B. Escuela Politécnica Nacional

10 de diciembre de 2007

Eco en tiempo real

~ 2 ~

Introducción.

Es importante tener en cuenta las perturbaciones que puede

sufrir una señal de audio, dependiendo del ambiente en la

que se encuentre. Con el conocimiento apropiado de estas

perturbaciones se puede diseñar y construir lugares idóneos

para la óptima percepción de las señales audibles.

En este documento se presentarán las principales

características de varias de estas perturbaciones. El análisis

del eco y la reverberación será más extenso, además se

presentará el código implementado para introducir eco en

tiempo real en una señal de voz utilizando Matlab.

Eco en tiempo real

~ 3 ~

Efectos acústicos.

Existen una gran cantidad de efectos acústicos, los cuales pueden afectar tanto la

amplitud, tiempo o frecuencia de la señal. Entre los principales tenemos:

Efecto Doppler.

El efecto Doppler en ondas sonoras se refiere al cambio de frecuencia que sufren las

ondas cuando la fuente emisora de ondas y/o el oyente se encuentran en movimiento

relativo al medio. La frecuencia aumenta cuando la fuente y el receptor se acercan y

disminuye cuando se alejan.

Absorción.

Cuando una onda sonora llega a una pared rígida (ideal) se refleja totalmente ya que la

pared no se mueve y no absorbe energía de la onda. Las paredes reales no son nunca

completamente rígidas, por lo que pueden absorber parte de la energía de las ondas

incidentes.

Difracción.

La difracción consiste en que una onda puede rodear un obstáculo o propagarse a

través de una pequeña abertura. Aunque este fenómeno es general, su magnitud

depende de la relación que existe entre la longitud de onda y el tamaño del obstáculo

o abertura.

Eco en tiempo real

~ 4 ~

Cuando el tamaño de la abertura (obstáculo) es comparable a la longitud de onda, los

efectos de la difracción son grandes y la onda no se propaga simplemente en la

dirección de los rayos rectilíneos, sino que se dispersa como si procediese de una

fuente puntual localizada en la abertura.

Interferencia.

Esto puede explicarse por el principio de superposición. Un ejemplo común de

interferencia de ondas sonoras podemos encontrarlo cuando dos diapasones (u otras

fuentes sonoras de una sola frecuencia) cuyas frecuencias solo difieren ligeramente, se

golpean de manera simultánea. El sonido así producido fluctúa en intensidad,

alternando entre tonos fuertes y silencio virtual. Dichas fluctuaciones regulares se denominan pulsaciones.

Reflexión y refracción

Cuando una onda incide sobre una superficie límite de dos medios, de distintas

propiedades mecánicas, ópticas, etc, parte de la onda se refleja, parte se disipa y

parte se transmite. La velocidad de propagación de las ondas, v, cambia al pasar de un

medio a otro, pero no cambia la frecuencia angular w.

Eco en tiempo real

~ 5 ~

La reflexión del sonido comúnmente se llama eco. El eco es más notable cuando el

medio sobre el cual incide la onda sonora es rígido. En este caso toda la energía de la

onda incidente se refleja.

Sin un oyente está situado entre dos paredes y emite un sonido, éste se reflejara de

una pared, irá a la otra, se volverá a reflejar, y así continuara. Es decir, ocurre un eco múltiple que se llama reverberación.

Eco en tiempo real

~ 6 ~

Eco y reverberación.

Es importante comprender que el eco y la reverberación a pesar de estar

estrechamente ligados son dos efectos distintos. El eco es la reflexión simple de una

señal, mientras que la reverberación se refiere a una reflexión continua de las ondas

sonoras.

Eco.

Es el más serio de los defectos acústicos. El Eco se produce cuando existe una

reflexión de sonido que llega al escucha con la suficiente amplitud y retraso respecto

del sonido directo, de tal forma que se perciben como dos sonidos diferentes.

El eco es un efecto sonoro que se produce cuando un sonido rebota contra una

superficie lejana y llega por duplicado al receptor con un cierto retardo. Este efecto se

puede reproducir artificialmente, mezclando el sonido original consigo mismo pero

retardado y levemente atenuado. Se modela fácilmente, configurando para cada

repetición, el retardo y la atenuación. Una manera para reproducir este efecto en el

laboratorio está usar un bucle de realimentación:

El oído logra distinguir entre dos sonidos iguales si estos llegan separados en un

tiempo mínimo de 0.1 s para sonidos musicales y 0.07 s para sonidos secos (palabra),

en base a esto se determina la mínima distancia a la que debe encontrarse un oyente

de una pared rígida para distinguir el eco de sus sonidos.

Sea d = OP la distancia requerida. El sonido tiene que ir de O a P y de P a O en el

tiempo t = 0.1s para que el oyente pueda distinguir entre el sonido incidente (emitido

por él mismo) y el reflejado o eco. Es decir, el sonido tiene que recorrer la distancia 2d

en el tiempo t= 0.1 seg. Su velocidad es, entonces:

sd

tdv

1.022

la velocidad del sonido en el aire es de 331.46m/s, por tanto la ecuación anterior

queda de la forma sdsm1.0

2/46.331 . Despejando d, tenemos que 2d= 331.46m/s x 0.1

seg. = 33.146 m d = 16.57 m (11.34 m para sonidos secos)

Si el oyente se coloca a una distancia menor a 16.57m, no podrá distinguir entre el

sonido emitido por él y el eco.

Eco en tiempo real

~ 7 ~

Eco flutter (de flauta o flotante).

Efecto sonoro muy característico que se produce entre dos paredes lisas, paralelas y

reflectantes. Estas paredes pueden estar muy juntas o separadas por varios metros y

entre ellas el sonido se refleja sobre cada una de las paredes para dar una serie de

ecos muy aproximados en los que la intensidad del sonido disminuye lentamente.

La onda queda atrapada entre las superficies lisas reflectantes y su energía va

reflejándose llegando a crear un sonido diferente al emitido originalmente. Y cambia

porque ciertas frecuencias se interfieren anulándose y otras se interfieren sumándose

en las diferentes reflexiones que se producen dentro del recinto. Es como un filtro que

refuerza ciertas frecuencias y otras las hace desaparecer.

Eco en tiempo real

~ 8 ~

Reverberación.

Se produce reverberación cuando las ondas reflejadas llegan al oyente antes de la

extinción de la onda directa, es decir, en un tiempo menor que el de persistencia

acústica del sonido. Este fenómeno es de suma importancia, ya que se produce en

cualquier recinto en el que se propaga una onda sonora. El oyente no sólo percibe la

onda directa, sino las sucesivas reflexiones que la misma produce en las distintas

superficies del recinto.

El físico W. C. Sabine definió técnicamente la reverberación como el tiempo que

transcurre desde el instante en que una fuente sonora se interrumpe hasta que su

energía decae a 1/1.000.000 de su fuerza original. Esta caída de energía es

cuantificada como nivel de presión sonora, que en escala logarítmica corresponde a 60

decibelios, por eso se abrevia como TR-60.

En cuanto a la percepción del oído, correspondería al tiempo que tarda un sonido en

desaparecer y fundirse entre los sonidos ambientales dentro de un espacio cerrado.

Controlando adecuadamente este efecto, se contribuye a mejorar las condiciones

acústicas de los locales tales como teatros, salas de concierto y, en general, todo tipo

de salas. La característica que define la reverberación de un local se denomina tiempo

de reverberación. Se define como el tiempo que transcurre hasta que la intensidad del

sonido queda reducida a una millonésima de su valor inicial.

Eco en tiempo real

~ 9 ~

Tiempos de reverberación óptimos para diferentes usos de los locales (medidos en

segundos):

Locutorio de radio de 0.2 a 0.4

Sala para la voz de 0.7 a 1.0

Cine de 1.0 a 1.2

Teatro de 0.9

Teatro de ópera de 1.2 a 1.5

Sala de conciertos de cámara de 1.3 a 1.7

Sala para música barroca y clásica de 1.6 a 1.8

Sala de conciertos de música sinfónica de 1.8 a 2.0

Iglesia o Catedral de 2.0 a 4.0 como óptimo pero llegando hasta 8 segundos en

ciertas catedrales.

La gráfica muestra el TR para palabra (zona inferior), el TR para música (zona superior)

y la zona intermedia con un TR óptimo para ópera o espacios que requieran música y

voz.

El TR-60 es uno de los principales parámetros de la calidad acústica de una sala. Su

valor depende de numerosos factores: el coeficiente de absorción de los materiales de

la sala, su volumen, su superficie y la forma geométrica de ésta.

Eco en tiempo real

~ 10 ~

Eco en tiempo real utilizando Matlab.

Para realizar este ejemplo se utilizo la versión 7.0 del programa, además el equipo

contaba con un micrófono para captar la voz y unos parlantes para apreciar el efecto

programado.

Para la implementación de la aplicación se utilizaron referencias bibliográficas tanto

de internet como de las ayudas propias de Matlab.

Funciones utilizadas.

wavrecord: Permite grabar un sonido utilizando un dispositivo de entrada de audio

conectado a la PC.

Sintaxis: y = wavrecord(n,Fs) y = wavrecord(...,ch) y = wavrecord(...,'dtype')

Descripción:

y = wavrecord(n,Fs): graba n muestras de una señal de audio, muestreada a la

frecuencia Fs. El valor por defecto de Fs es 11025 Hz.

y = wavrecord(...,ch): utilize un número ch de canales de entrada desde el

dispositivo de audio. El valor de ch puede ser 1 (monoaural) o 2

(estereofónico), el valor por defecto es 1.

y = wavrecord(...,'dtype') ): Utiliza el tipo de dato especificado por ‘dtype’ para

grabar el sonido. Los posibles valores para ‘dtype’ son:

'double' (default value), 16 bits/sample

'single', 16 bits/sample

'int16', 16 bits/sample

'uint8', 8 bits/sample

wavplay: Permite reproducir un sonido utilizando un dispositivo de salida de audio

conectado a la PC.

Sintaxis: wavplay(n,Fs) wavrecord(...,’mode’)

Descripción:

wavplay(n,Fs): reproduce la señal de audio almacenada en el vector y en el

dispositivo de salida de audio. La frecuencia de muestreo se especifica con Fs,

su valor por defecto es 11025 Hz. Esta función soporta únicamente señales de

audio de 1 o 2 canales.

wavplay(...,’mode’): especifica la forma como wavplay interactúa con la línea de

comandos, deacuedo al valor de ‘mode’. El valor de ‘mode’ puede ser:

Eco en tiempo real

~ 11 ~

‘async’ (valor por defecto): proporciona acceso instantáneo a la línea de

comandos tan pronto como el sonido empieza a reproducirse en el

dispostivo de salida.

‘sync’: No se tiene acceso a la línea de comandos hasta que el sonido

termine de reproducirse.

hold: Mantiene el gráfico actual en la figura.

Sintaxis: hold on hold off hold all hold hold(axes_handles,…)

Descripción:

hold: la función hold determina si los nuevos objetos gráficos son adicionados al

gráfico o remplazan los objetos en el gráfico.

hold on: conserva la gráfico en curso y ciertas propiedades del eje con el

propósito de que los comandos de creación de gráficos siguientes se añadan al

gráfico existente

hold off: reinicia las propiedades a sus valores por defecto antes de dibujar los

nuevos gráficos. hold off es el valor por defecto.

hold on: conserva el gráfico actual, el color y estilo de línea en curso con el

propósito de que los nuevos comandos no reinicien los valores de ColorOrder y

LineStyleOrder.

hold on: aplica la función hold al eje identificado por axes_handle.

linspace: Genera vectores espaciados linealmente.

Sintaxis: y = linspace(a,b) y = linspace(a,b,n)

Descripción: La función linspace genera vectores espaciados linealmente. Es similar al operador “:”, pero otorga control directo sobre el número de puntos. y = linspace(a,b): generar una y de vector fila de 100 puntos linealmente espaciados entre a y b, (incluidos). y = linspace(a,b,n): generar un vector fila de n puntos linealmente espaciados entre a y b, (incluidos).

Eco en tiempo real

~ 12 ~

Notas.

Las frecuencias de muestreo estándar para dispositivos de audio para PC son 8000,

11025, 2250 y 44100 muestras por segundo.

Las señales estereofónicas retornan una matriz de dos columnas. La primera columna

corresponde a la entrada del canal derecho.

Para realizar el procesamiento en tiempo real y presentar la forma de onda

correspondiente se utilizó la función hold para graficar cada instante de la señal

(0.1seg)

Interfaz implementada.

La interfaz implementada consta de dos pantallas:

Pantalla de bienvenida: Aquí se presenta información general acerca del proyecto y

un enlace a la pantalla principal.

Pantalla principal: Esta pantalla proporciona todas las opciones para el manejo de la

aplicación.

Eco en tiempo real

~ 13 ~

Menu Iniciar: Despliega dos opciones para escuchar la voz ingresada por

micrófono:

Normal: no realiza ningún tratamiento a la señal y la reproduce

idénticamente en los parlantes. Además grafica la forma de onda de la

señal en el eje correspondiente

Con eco: añade eco a la señal, sumándole la misma señal reducida un

50% y desplazada 0,15 seg.

Menu Salir: Presenta una caja de dialogo en la que se puede elegir entre

regresar a la pantalla de bienvenida o cerrar la aplicación.

Eco en tiempo real

~ 14 ~

Botón Stop: Detiene la adquisición de datos y reinicializa la aplicación.

Nota: En el Apéndice A se encuentra el código fuente de las pantallas creadas.

Funciones creadas.

Para proporcionar un funcionamiento modular de la aplicación se desarrollaron las

siguientes funciones:

normal.m: Permite escuchar la señal de voz sin ningún efecto y grafica su forma de

onda en el eje respectivo.

%Función para reproducir en tiempo real una señal de voz %proveniente del micrófono function normal(handles) try set(handles.btnStop,'Enable','on') set(handles.txtOriginal,'Enable','on') set(handles.menSalir,'Enable','off') FS=44100; TM=.1; while 1<2 Y=wavrecord(TM*FS,FS); hold (handles.original, 'off') X=linspace(0,length(Y)/FS,length(Y)); axes(handles.original) plot(0,-1) hold (handles.original, 'on') plot(TM,1) plot(X,Y) pause(.5*TM) wavplay(Y,FS); end catch set(principal,'Visible','on') try set(figure1,'Visible','off') catch end end

conEco.m: Permite escuchar la señal de voz más eco y grafica su forma de onda en el

eje respectivo.

%Función para reproducir en tiempo real una señal de voz %proveniente del micrófono, agregandole eco. function conEco(handles) try set(handles.btnStop,'Enable','on') set(handles.txtEco,'Enable','on') set(handles.menSalir,'Enable','off')

Eco en tiempo real

~ 15 ~

FS=44100; TM=.1; while 1<2 Y=wavrecord(TM*FS,FS); y1=[Y;zeros(6500,1)]; y2=0.5*[zeros(6500,1);Y]; y3=y1+y2; hold (handles.original, 'off') X=linspace(0,length(y3)/FS,length(y3)); axes(handles.modificada) plot(0,-1) hold (handles.original, 'on') plot(TM,1) plot(X,y3) pause(.5*TM) wavplay(y3,FS); end catch set(principal,'Visible','on') try set(figure1,'Visible','off') catch end end

borrar.m: Función utilizada para reinicializar los controles el momento de mostrar la

pantalla. function borrar(handles) try clc set(handles.original,'XColor','w') set(handles.original,'YColor','w') set(handles.modificada,'XColor','w') set(handles.modificada,'YColor','w') set(handles.txtOriginal,'Enable','off') set(handles.txtEco,'Enable','off') catch end

salida.m: Permite escuchar la señal de voz sin ningún efecto y la grafica en el eje

respectivo. function salida() ans=questdlg('¿Qué acción desea realizar?','Cerrar', ... 'Ir a la pantalla de bienvenida','Salir totalmente', ... 'Ir a la pantalla de bienvenida'); if strcmp(ans,'Ir a la pantalla de bienvenida') set(principal,'Visible','off') set(bienvenida,'Visible','on') clc, clear elseif strcmp(ans,'Salir totalmente') set(principal,'Visible','off') clc, clear end

Eco en tiempo real

~ 16 ~

Funcionamiento de la aplicación.

Una vez que se elige la opción de adquisición (normal o con eco) se puede empezar a

hablar por el micrófono para escuchar la voz por los parlantes.

Adicionalmente se presenta la forma de onda de la señal en el eje correspondiente.

Gráfica de la señal sin eco.

Gráfica de la señal sin eco.

El momento que se quiera detener la adquisición basta con pulsar en el botón Stop.

Inicio del eco

Eco en tiempo real

~ 17 ~

Aplicaciones.

El estudio e implementación de los diferentes efectos sonoros puede verse reflejado

en diferentes ámbitos, como:

Reflexión: En las salas de conciertos se sitúan placas reflectoras detrás de la orquesta

(tornavoces) y también se sitúan paneles reflectores en el techo para reflejar y dirigir

el sonido hacia los oyentes.

Refracción: El aire sobre una superficie nevada forma capas de diferentes

temperaturas, estando las más frías próximas a la tierra en donde la velocidad de

propagación es menor. Las ondas sonoras son constantemente refractadas hacia el

suelo, creándose un canal sonoro que permite oír sonidos producidos a gran distancia.

Absorción: En una sala con muchas superficies planas reflectoras, es difícil de

entender lo que se dice debido a la gran cantidad de ondas reflejadas. Fara reducir

estas reflexiones es corriente colocar sobre las paredes y techo materiales

absorbentes.

Difracción: El fenómeno de la difracción nos permite escuchar música en un concierto

incluso cuando una persona alta sentada del ante de nosotros nos impide ver a los

intérpretes. También nos permite oír una conversación a través de una puerta abierta,

aun que no veamos a las personas que están hablando.

Eco: Una aplicación real del eco se encuentra en el sonar, el cual puede medir la

profundidad del mar, produciendo ondas sonoras bajo la superficie del agua, y

detectando el tiempo que tarda en registrar el eco.

Eco en tiempo real

~ 18 ~

Anexo 1.

Pantalla de bienvenida. function varargout = bienvenida(varargin) % BIENVENIDA M-file for bienvenida.fig % BIENVENIDA, by itself, creates a new BIENVENIDA or raises the existing % singleton*. % % H = BIENVENIDA returns the handle to a new BIENVENIDA or the handle to % the existing singleton*. % % BIENVENIDA('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in BIENVENIDA.M with the given input arguments. % % BIENVENIDA('Property','Value',...) creates a new BIENVENIDA or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before bienvenida_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to bienvenida_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc. % Edit the above text to modify the response to help bienvenida % Last Modified by GUIDE v2.5 07-Dec-2007 20:24:15 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @bienvenida_OpeningFcn, ... 'gui_OutputFcn', @bienvenida_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before bienvenida is made visible. function bienvenida_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to bienvenida (see VARARGIN) % Choose default command line output for bienvenida

Eco en tiempo real

~ 19 ~

handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes bienvenida wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = bienvenida_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; addpath('Complementos') A=imread('eco.jpg'); axes(handles.axes1) imshow(A) % --- Executes on button press in btnEntrar. function btnEntrar_Callback(hObject, eventdata, handles) % hObject handle to btnEntrar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(bienvenida,'Visible','off') set(principal,'Visible','on')

Eco en tiempo real

~ 20 ~

Pantalla principal. function varargout = principal(varargin) % PRINCIPAL M-file for principal.fig % PRINCIPAL, by itself, creates a new PRINCIPAL or raises the existing % singleton*. % % H = PRINCIPAL returns the handle to a new PRINCIPAL or the handle to % the existing singleton*. % % PRINCIPAL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in PRINCIPAL.M with the given input arguments. % % PRINCIPAL('Property','Value',...) creates a new PRINCIPAL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before principal_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to principal_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc. % Edit the above text to modify the response to help principal % Last Modified by GUIDE v2.5 07-Dec-2007 22:58:27 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @principal_OpeningFcn, ... 'gui_OutputFcn', @principal_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before principal is made visible. function principal_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to principal (see VARARGIN) % Choose default command line output for principal handles.output = hObject; % Update handles structure

Eco en tiempo real

~ 21 ~

guidata(hObject, handles); % UIWAIT makes principal wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = principal_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; addpath('Funciones') borrar(handles) % -------------------------------------------------------------------- function menNormal_Callback(hObject, eventdata, handles) % hObject handle to menNormal (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) normal(handles) % -------------------------------------------------------------------- function menEco_Callback(hObject, eventdata, handles) % hObject handle to menEco (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) conEco(handles) % -------------------------------------------------------------------- function menIniciar_Callback(hObject, eventdata, handles) % hObject handle to menIniciar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function menSalir_Callback(hObject, eventdata, handles) % hObject handle to menSalir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) salida() % --- Executes on button press in btnStop. function btnStop_Callback(hObject, eventdata, handles) % hObject handle to btnStop (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close

Eco en tiempo real

~ 22 ~

Referencias bibliográficas.

http://www.monografias.com/trabajos15/acustica/acustica.shtml

http://www.ehu.es/acustica/bachillerato/feaces/feaces.html

http://sistemas.itlp.edu.mx/tutoriales/instalaciones/tema_42.htm

http://arantxa.ii.uam.es/~taao1/practica/practica_Op1.html

http://acusticaweb.com/index.php?option=com_content&task=view&id=112&Itemid=

79

http://cantera.reduaz.mx/~gmiram/Lab7PDS.pdf

MATLAB Function Reference

Eco en tiempo real

~ 23 ~

Contenido.

Introducción ................................................................................................................ 2

Efectos acústicos......................................................................................................... 3

Efecto Doppler .......................................................................................................... 3

Absorción .................................................................................................................. 3

Difracción .................................................................................................................. 3

Interferencia .............................................................................................................. 4

Reflexión y refracción ................................................................................................ 4

Eco y reverberación .................................................................................................... 6

Eco ............................................................................................................................ 6

Eco flutter (de flauta o flotante) .................................................................................. 7

Reverberación ........................................................................................................... 8

Eco en tiempo real utilizando Matlab ...................................................................... 10

Funciones utilizadas ................................................................................................ 10

wavrecord................................................................................................... 10

wavplay ...................................................................................................... 10

hold ............................................................................................................. 11

linspace ............................................................................................................... 11

Interfaz implementada ............................................................................................. 12

Pantalla de bienvenida ............................................................................... 12

Pantalla principal ....................................................................................... 13

Funciones creadas ................................................................................................... 14

normal.m .................................................................................................... 14

conEco.m ................................................................................................... 14

borrar.m .................................................................................................... 15

salida.m ..................................................................................................... 15

Funcionamiento de la aplicación ............................................................................. 16

Eco en tiempo real

~ 24 ~

Aplicaciones .............................................................................................................. 17

Anexo 1 ...................................................................................................................... 18

Pantalla de bienvenida ............................................................................................ 18

Pantalla principal ..................................................................................................... 20

Referencias bibliográficas ....................................................................................... 22