clear all
clc
close all
algorithm = 2;
Fs = 48000;
L = 10;
N = L*Fs;
x = audioread('Drum_Groove.wav');
tDelayL = 0.208;
tDelayR = 0.3;
sDelayL = round(tDelayL*Fs);
sDelayR = round(tDelayR*Fs);
delayLineL = zeros(sDelayL,1);
delayLineR = zeros(sDelayR,1);
idxL = 1;
idxR = 1;
DryL = 1;
DryR = 1;
WetL = 0.5;
WetR = 0.5;
Fbl = 0.3;
Fbr = 0.4;
GainL = 1;
GainR = 1;
GainDBL = 10^GainL/20;
GainDBR = 10^GainR/20;
yL = zeros(N,1);
yR = zeros(N,1);
for n = 1:N
yL(n,1) = GainDBL*(DryL*x(n,1) + WetL*delayLineL(idxL));
yR(n,2) = GainDBR*(DryR*x(n,2) + WetR*delayLineR(idxR));
if algorithm == 1
delayLineL(idxL) = x(n,1) + Fbl*delayLineL(idxL);
delayLineR(idxR) = x(n,2) + Fbr*delayLineR(idxR);
else if algorithm == 2
delayLineL(idxR) = x(n,1) + Fbl*delayLineL(idxR);
delayLineR(idxL) = x(n,2) + Fbr*delayLineR(idxL);
end
end
idxL = idxL+1;
idxR = idxR+1;
if idxL >= sDelayL
idxL = 1;
end
if idxR >= sDelayR
idxR = 1;
end
end
plot(yL + 0.15)
hold on
plot(yR - 0.15)
hold off
title('Stereo Delay');
legend('Left Channel','Right Channel')
audiowrite('Drum_Groove_Delay.wav',yL+yR,Fs)