Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

• All resonances reach same height, by construction
• Phase min/max also uniform
• Resonance tuning is arbitrary
• Anti-resonances determined by resonances
• Guaranteed positive real

Matlab for Method 2:

... as in Method 1 until ...

% Measured guitar body resonances
F = [4.64 96.52 189.33 219.95]; % Hz
B = [ 20   20     10     10  ]; % Hz
Rd= [  0    5     40     40  ]; % Heights in dB
R = 10.^(Rd/20); nsec = length(F);

R = exp(-pi*B/fs);     % Pole radii
theta = 2*pi*F/fs;     % Pole angles
poles = R .* exp(j*theta); % Complex poles
A1 = -2*R.*cos(theta);
A2 = R.*R;
denoms = [ones(size(A1)); A1; A2]'
A = [1,zeros(1,2*nsec)];
for i=1:nsec,
% polynomial multiplication = FIR filtering
A = filter(denoms(i,:),1,A);
end;


% Construct a resonator as a sum of
% arbitrary modes with unit residues,
% adding a near-zero at dc.

B = zeros(1,2*nsec+1);
impulse = [1,zeros(1,2*nsec)];
for i=1:nsec,
% polynomial multiplication
B = B + filter(A,denoms(i,:),impulse);
end;

B = filter([1 -0.995],1,B); % near-zero at dc

% filter() does polynomial division here:
B = B + filter(A,denoms(i,:),impulse);
end;
% add a near-zero at dc
B = filter([1 -0.995],1,B);

... as in Method 1 for display ...


Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search