%prog2023 Delay simple clearvars; close all; clc; %lectura de datos [x,Fs] = audioread('violin.wav'); N = length(x); %largo en muestras duracion = N/Fs; %duracion en segundos del audio dt = 1/Fs; t = (0:N-1)*dt; %Variables de delay tDelay = 0.5; %tiempo de delay en segundos Ndelay = round(tDelay*Fs); %se redondea para evitar numeros de punto flotante N2 = N+Ndelay; %largo del nuevo arreglo xDelay = zeros(N2,1); %pre alocamos el arreglo donde irá el delay t2 = (0:N2-1)*dt; %nuevo arreglo de tiempo duracion2 = N2/Fs; %retrasamos la señal for i=1:N xDelay(i+Ndelay) = x(i); end sound(xDelay,Fs) %ahora si hacemos el delay %copiamos el arreglo origina al principio del nuevo arreglo donde irá el efecto for i=1:N xDelay(i) = x(i); end %xDelay(1:N) = x; %forma más eficiente %retrasamos el delay y sumamos lo que ya existe previamente en el arreglo for i=1:N xDelay(i+Ndelay) = xDelay(i+Ndelay)+ x(i); end %normalizamos xDelay = xDelay/max(abs(xDelay)); sound(xDelay,Fs) %graficamos figure(1) subplot(2,1,1) plot(t,x) title('violin.wav') xlabel('tiempo (s)') ylabel('Amplitud') axis([0 duracion -1.1 1.1]) grid on subplot(2,1,2) plot(t2,xDelay) title('violin.wav con delay') xlabel('tiempo (s)') ylabel('Amplitud') axis([0 duracion2 -1.1 1.1]) grid on