%% prog042 lectura de archivos de audio y delay realimentacion clearvars; close all; clc; %lectura desde la misma carpeta [x1,fs1] = audioread('violin.wav'); %% generar el archivo de tiempo Nt = length(x1); %determinamos la longitud de arreglo que contiene el sonido t1 = (0:Nt-1)/fs1; %tiempo con prelocalizacion %ejes tmin = t1(1); tmax = t1(Nt); amin = -1; amax = 1; %grafico figure(1) plot(t1,x1); title('violin'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('p(t)'); axis([tmin, tmax, amin, amax]); grid on; box on; %sonido sound(x1,fs1); %% delay %datos de entrada Tdelay1 = input('tiempo de delay Tdelay1 = '); Gdelay1 = input('ganacia de delay Gdelay1 = '); Tdelay2 = input('tiempo de delay Tdelay2 = '); Gdelay2 = input('ganacia de delay Gdelay2 = '); Tdelay3 = input('tiempo de delay Tdelay3 = '); Gdelay3 = input('ganacia de delay Gdelay3 = '); %conversion del tiempo de delay a numero de muestras a retrasar Ndelay1 = round(Tdelay1*fs1); %redondeando garantizamos que Ndelay sea entero natural Ndelay2 = round(Tdelay2*fs1); %redondeando garantizamos que Ndelay sea entero natural Ndelay3 = round(Tdelay3*fs1); %redondeando garantizamos que Ndelay sea entero natural %prelocalizamos la salida Nt2 = 2*Nt; %doble de tamanho t2 = (0:Nt2-1)/fs1; %doble de tiempo x2 = zeros(Nt2,1); %aumentamos al doble la longitud x2(1:Nt,1) = x1; %copiamos la seņal original en la salida x11 = x2; %copia adicional de la senhal de entrada %delay for n = (Ndelay1+Ndelay2+Ndelay2+1):Nt2 x2(n) = x11(n) + Gdelay1*x2(n-Ndelay1) + Gdelay2*x2(n-Ndelay2) + Gdelay3*x2(n-Ndelay3); %retrasamos la salida realimentando end; %normalizamos para no saturar eso quiere decir que dividimos el arreglo por el maximo x2 = x2/max(abs(x2)); %grafico figure(2) plot(t2,x2); title('violin delay simple'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('p(t)'); axis([tmin, 2*tmax, amin, amax]); grid on; box on; %sonido sound(x2,fs1);