When I used a simple FDN(Feedback Delay Network) to generate an impulse response, it sounded like a vibrate sound, and using FDN to process the pop music also had a distinctly unnatural and empty room feel. My code:
function y = fdn4(x)
gain=[0.90 0.88 0.86 0.84];
a = [0, 1, 1, 0; -1, 0, 0, -1; 1, 0, 0, -1; 0, 1, -1, 0]/1.414;
b = [1 1 1 1] *1;
c = [1 1 1 1] * 0.75;
m=[743,1061,1297,1657];%1.25s
y = zeros(size(x));
mm = 2^nextpow2(max(m));
z1 = zeros(1, mm);
z2 = z1; z3 = z1; z4 = z1;
for n = 1:length(y)
tmp = [z1(m(1)) z2(m(2)) z3(m(3)) z4(m(4))];
y(n) = c(1) * tmp(1) + c(2) * tmp(2) ...
+ c(3) * tmp(3) + c(4) * tmp(4) ;
z1 = [(x(n) * b(1) + tmp * a(1, :).' * gain(1)), z1(1:m(1) - 1)];
z2 = [(x(n) * b(2) + tmp * a(2, :).' * gain(2)), z2(1:m(2) - 1)];
z3 = [(x(n) * b(3) + tmp * a(3, :).' * gain(3)), z3(1:m(3) - 1)];
z4 = [(x(n) * b(4) + tmp * a(4, :).' * gain(4)), z4(1:m(4) - 1)];
end
y=y.';
end
Is there a method to optimize FDN with a lower computation amount,so that it can sound more natural.