Electrónica y Redes de Información 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 Carlos G. Encalada B. Escuela Politécnica Nacional 10 de diciembre de 2007 Eco en tiempo real 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. ~2~ Eco en tiempo real 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. ~3~ Eco en tiempo real 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. ~4~ Eco en tiempo real 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. ~5~ Eco en tiempo real 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: v 2d t 2d 0.1s la velocidad del sonido en el aire es de 331.46m/s, por tanto la ecuación anterior queda de la forma 331 .46 m / s 02.1ds . 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. ~6~ Eco en tiempo real 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. ~7~ Eco en tiempo real 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. ~8~ Eco en tiempo real 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. ~9~ Eco en tiempo real 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: ~ 10 ~ Eco en tiempo real ‘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). ~ 11 ~ Eco en tiempo real 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. ~ 12 ~ Eco en tiempo real 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. ~ 13 ~ Eco en tiempo real 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') ~ 14 ~ Eco en tiempo real 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 ~ 15 ~ Eco en tiempo real 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. Inicio del 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. ~ 16 ~ Eco en tiempo real 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. ~ 17 ~ Eco en tiempo real 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 ~ 18 ~ Eco en tiempo real 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') ~ 19 ~ Eco en tiempo real 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 ~ 20 ~ Eco en tiempo real 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 ~ 21 ~ Eco en tiempo real 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 ~ 22 ~ Eco en tiempo real 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 ~ 23 ~ Eco en tiempo real Aplicaciones.............................................................................................................. 17 Anexo 1 ...................................................................................................................... 18 Pantalla de bienvenida ............................................................................................ 18 Pantalla principal..................................................................................................... 20 Referencias bibliográficas ....................................................................................... 22 ~ 24 ~