He hecho un script en matlab:
[x fs]=wavread('gaita.wav');
Ts=1/fs; %Periodo de muestreo.
a=0.80; %Factor por el que multiplicamos la señal desplazada en el tiempo.
x=x./4; %Disminuyo la amplitud de x para que la salida sea <1. y="x;" muestras="2500;">
%*************** BUCLE REVERBERADOR ****************
for z=muestras:muestras:(length(x)-(muestras-1))
y(z:(z+muestras-1),1)=y(z:(z+muestras-1),1)+ a.*y((z-(muestras-1)):z,1);
y(z:(z+muestras-1),2)=y(z:(z+muestras-1),2)+ a.*y((z-(muestras-1)):z,2);
end;
%***************************************************
%Falta implementar que siga con el sonido reverberante cuando se acaba la %señal hasta que este desaparece. sound(y,fs); %Para escuchar la señal con reverberación.
Este scriptgenera una reverberación a un fichero .wav y nos permite escucharlo.
Después de implementar este script, hemos decidido realizar algunos cambios a las funciones que habíamos calculado. Nuestra memoria RAM tendrá 2500 posiciones (este número depende de el tiempo de reverberación que se quiera implementar, pero como se ve puede apreciar en la rutina de matlab, es una buena opción). Pues bien, iremos metiendo muestras en esas 2500 posiciones hasta llenarla. Una vez realizado esto, la muestra 2500 (la primera guardada) la multiplicamos por nuestro factor (en la rutina de matlab a=0.8) y lo sumamos a la muestra entrante, mandando el resultado a la salida y guardándolo en la posición 0. Generando así un bucle mientras tengamos entrada.
7. Modelando con Matlab
martes, 8 de abril de 2008
Publicado por Adriel en martes, abril 08, 2008
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario