%% prog043 lectura de archivos de audio y flanger realimentacion %el flanger es un delay cuyo tiempo de retardo es corto y varia %senoidalmente respecto al tiempo 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 Tdelay = input('tiempo de delay Tdelay = '); Tprof = input('profundidad Tpfof = '); Frate = input('frecuencia de oscilacion Frate = '); Gdelay = input('ganacia de delay Gdelay = '); %conversion del tiempo de delay a numero de muestras a retrasar Ndelay = round(Tdelay*fs1); %redondeando garantizamos que Ndelay sea entero natural Nprof = round(Tprof*fs1); %redondeando garantizamos que Nprof 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 NFlanger(1:2*Nt,1) = 0; %delay for n = (Ndelay+Nprof+1):Nt2 NFlanger(n) = round( Ndelay + Nprof*sin(2*pi*Frate*t2(n)) ); %usamos round x2(n) = x11(n) + Gdelay*x2(n - NFlanger(n)); %retrasamos la salida realimentando end; %normalizamos para no saturar eso quiere decir que dividimos el arreglo por el maximo x2 = x2/max(abs(x2)); %convertimos los retardos de muestras en tiempo TFlanger = NFlanger/fs1; %grafico figure(2) plot(t2,TFlanger); title('tiempo de retardo flanger'); xlabel('tiempo t (s)'); ylabel('tiempo flanger TFlanger (s)'); legend('TFlanger (s)'); axis([tmin, 2*tmax, Tdelay-Tprof, Tdelay+Tprof]); figure(3) plot(t2,x2); title('violin flanger'); 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);