- refactored

- remove DC
This commit is contained in:
2025-08-22 14:49:50 +02:00
parent 2ab8c68c9b
commit c7c9366dbb
+16 -18
View File
@@ -1,24 +1,22 @@
function eval_blit() function eval_blit()
sinc_use_lut = 0 sinc_use_lut = 1
L = 96000; L = 96000;
fs = 48000; fs = 48000;
fstart = 440; fstart = 220;
fend = 440; fend = 880;
df = (fend-fstart)/L df = (fend-fstart)/L
# for saw # for saw
rho = 0.95; rho = 1.0;
nhw = 4096; nhw = 4096;
Hw = kaiser(nhw, 8)'; Hw = kaiser(nhw, 8)';
max_m = fix((fs/fstart/2.0)) + 1 max_m = fix((fs/fstart/2.0)) + 1
sinc_table_calc = sinc_use_lut; if sinc_use_lut == 1
if sinc_table_calc == 1
nharm = max_m nharm = max_m
nsin = 1024; nsin = 1024;
xx = (0:nsin)/nsin - 0.5; xx = (0:nsin)/nsin - 0.5;
@@ -38,6 +36,7 @@ saw = 0.0;
tri = 0.0; tri = 0.0;
a = 1; a = 1;
b = 1; b = 1;
for n = 1:L, for n = 1:L,
if x >= 0.5, if x >= 0.5,
@@ -51,22 +50,18 @@ for n = 1:L,
nn = (x+0.5)*nsin + 1; nn = (x+0.5)*nsin + 1;
ni = fix(nn); ni = fix(nn);
nf = nn - ni; nf = nn - ni;
bbi = (bb(m, ni+1) - bb(m, ni))*nf + bb(m, ni); % Fractional delay (linear interpolation) b = (bb(m, ni+1) - bb(m, ni))*nf + bb(m, ni); % Fractional delay (linear interpolation)
aai = (aa(ni+1) - aa(ni))*nf + aa(ni); % Fractional delay (linear interpolation) a = (aa(ni+1) - aa(ni))*nf + aa(ni); % Fractional delay (linear interpolation)
if (aai ~= 0)
blit = fraq* bbi / aai * Hw(fix((x+0.5)*nhw)+1);
else
blit = fraq;
end
else else
b = sin(m*x*pi); b = sin(m*x*pi);
a = sin(x*pi); a = sin(x*pi);
end
if (a ~= 0) if (a ~= 0)
blit = fraq * b/a * Hw(fix((x+0.5)*nhw)+1); blit = fraq * b/a * Hw(fix((x+0.5)*nhw)+1);
else else
blit = fraq; blit = fraq;
end end
end
saw = rho*saw + (fraq - blit); saw = rho*saw + (fraq - blit);
sqr = sqr + z*blit; sqr = sqr + z*blit;
@@ -85,8 +80,11 @@ close all
figure; figure;
plot(1:L, vsaw, 1:L, vblit); grid; plot(1:L, vsaw, 1:L, vblit); grid;
wavwrite(0.5*vtri, fs, 'tri.wav'); N_UNDC = fs/100;
wavwrite(0.5*vsqr, fs, 'sqr.wav');
wavwrite(0.5*vsaw, fs, 'saw.wav'); a, b = undcc(N_UNDC);
wavwrite(0.5*filter(b, a, vtri), fs, 'tri.wav');
wavwrite(0.5*filter(b, a, vsqr), fs, 'sqr.wav');
wavwrite(0.5*filter(b, a, vsaw), fs, 'saw.wav');
wavwrite(0.5*vblit, fs, 'blit.wav'); wavwrite(0.5*vblit, fs, 'blit.wav');