%% delay clearvars close all; clc; %% lectura archivo de audio %lectura [x,fs,nbits] = wavread('violin.wav'); %tamaņo de muestras del archivo de audio N = length(x); %tiempo Tmin = 0; Tmax = N/fs; t = (0:N-1)/fs; Xmin = -1.1; Xmax = 1.1; %sonido %sound(x,fs); %graficamos figure(1) plot(t,x); title('violin'); xlabel(' tiempo t (s)'); ylabel('sonido x(t) (Pa)'); legend('x(t)'); grid on; box on; axis([Tmin Tmax Xmin Xmax]); %% delay %necesitamos duplicar la longitud de la seņal original y del tiempo %con el objetivo de que el efecto no tenga un recorte innecesario y = zeros(2*N,1); %seņal de salida con el doble de tamaņo xx = zeros(2*N,1); %copia de la seņal de entrada con el doble de tamaņo tt =(0:2*N-1)/fs; %tiempo con el doble de tamaņo %hacemos copias de la seņal de entrada y(1:N) = x; %copia de la muestra 1 a la muestra N el resto queda con ceros xx(1:N) = x; %copia de la muestra 1 a la muestra N el resto queda con ceros %lectura de datos tau = input('tiempo de delay en milisegundos tau = '); g = input('ganancia g = '); tau = tau/1000; %convierte a segundos %numero de muestras de delay Ndelay = round(fs*tau); %round() redondea a un numero entero de muestras %para indexar adecuadamente el o los elementos %del arreglo for n = Ndelay+1:2*N y(n) = xx(n) + g*y(n - Ndelay); end; %normalizamos la seņal de salida y = 0.95*y/max(y); %max(y) determina el maximo elemento del arreglo %sonido sound(y,fs); %graficamos figure(2) plot(tt,y); title('violin delay'); xlabel('tiempo t (s)'); ylabel('sonido y(t) (Pa)'); legend('x(t)'); grid on; box on; axis([Tmin 2*Tmax Xmin Xmax]);