[sdiy] Buchla 296 filterbank slope mystery
Lanterman, Aaron D
lanterma at ece.gatech.edu
Sun Dec 18 04:38:29 CET 2022
The top 15 bands of the Buchla 296 Programmable Spectral Processor bands consist of three bandpass multiple feedback stages in series with staggered tuning.
I typed in the various component values and wrote a MATLAB script to plot the frequency responses of the bands, using the schematics here:
http://fluxmonkey.com/historicBuchla/buchlaSchematics/296spectralProcessor-scheme_oct1978.pdf
I included a gain factor to 150/4.7 which I think should arise from the op amp circuits on the left side of the second page.
For the resistor to ground with the trim pot, I reverse engineer the total resistance value needed to given the exact peak frequency. I double checked to make sure the resulting resistances are achievable with the given fixed resistor and trim pot.
Anyway, as you see in the attached graph, I’m getting something weird —there seems to be a downward slope, when all the plots I’ve seen people made of outputs of actual 296 show a flat response. In particular, the lowest bandpass band is waaaaay hotter than the rest. So, I must be overlooking something. If anyone could point me in the right direction I’d greatly appreciate it.
I’ve pasted my MATLAB script below. You can run it in Octave, which is a free open source MATLAB compatible sort of thing.
Aaron Lanterman, Prof. of ECE, Georgia Tech
My blog on Education and Innovation: https://edupocalypsenow.wordpress.com
My blog on Electronics and Programming: https://lantertronics.blogspot.com
My YouTube channel on Electronics and Programming: https://www.youtube.com/c/lantertronics
————
don_fc = [105 185 138;
210 285 245;
310 415 335;
450 545 490;
580 690 530;
730 870 790;
920 1080 1000;
1160 1360 1250;
1460 1730 1600;
1850 2200 2000;
2360 2880 2600;
3100 4100 3550;
4500 6100 5200;
6700 9700 8000;
10600 17000 13200];
% capacitors
c19_20_21_22 = 1E-6*[0.068 0.033 0.015 0.01 0.0068 0.0056 0.0047 0.0039 ...
0.0033 0.0022 0.0015 0.0015 0.001 0.001 0.001];
c1_2_10_11 = 1E-6*[0.047 0.022 0.01 0.0068 0.0056 0.0056 0.0047 0.0033 ...
0.0022 0.0022 0.0015 0.0015 0.001 0.001 0.001];
c3_4_12_13 = 1E-6*[0.18 0.068 0.033 0.022 0.015 0.01 0.01 0.0056 ...
0.0047 0.0047 0.0022 0.0033 0.0022 0.0022 0.0022];
% input resistors
r69_74 = 1E3*[91 180 180 220 240 240 220 240 240 220 220 180 150 82 56];
r1_37 = 1E3*[15 39 75 100 120 100 100 100 100 91 91 36 36 22 8.2];
r6_41 = 1E3*[10 33 39 75 91 100 82 120 100 68 150 44 47 24 10];
% feedback resistors
r72_77 = 1E6*[0.430 0.620 1 1.2 1.5 1.5 1.5 1.5 1.2 1.5 1.8 1 1 0.680 0.330];
r5_40 = 1E6*[0.390 0.680 1.2 1.5 1.5 1.2 1.2 1.5 1.5 1.2 1.5 0.820 0.820 0.620 0.300];
r10_44 = 1E3*[62 130 200 200 300 330 240 390 300 220 470 180 180 120 56];
% ground resistors (without trim pot)
r70_75 = [680 470 680 470 680 470 330 330 470 680 680 680 680 470 330];
r2_38 = [470 330 820 680 680 330 330 330 680 470 330 330 220 100 100];
r7_42 = [220 150 330 470 470 680 470 820 1000 820 1000 680 680 330 100];
q = zeros(15,3);
wc = zeros(15,3);
f = 50:20000;
s = 2*pi*j*f;
h1 = zeros(15,length(f));
h2 = zeros(15,length(f));
h3 = zeros(15,length(f));
h = zeros(15,length(f));
for k = 1:15,
c1 = c19_20_21_22(k);
c2 = c1_2_10_11(k);
c3 = c3_4_12_13(k);
ri1 = r69_74(k); ri2 = r1_37(k); ri3 = r6_41(k);
rf1 = r72_77(k); rf2 = r5_40(k); rf3 = r10_44(k);
rg1 = ri1 / (rf1*ri1*(2*pi*don_fc(k,1)*c1)^2 - 1);
rg2 = ri2 / (rf2*ri2*(2*pi*don_fc(k,2)*c2)^2 - 1);
rg3 = ri3 / (rf3*ri3*(2*pi*don_fc(k,3)*c3)^2 - 1);
r70_75c(k) = rg1;
r2_38c(k) = rg2;
r7_42c(k) = rg3;
rp1 = ri1 * rg1 / (ri1 + rg1);
rp2 = ri2 * rg2 / (ri2 + rg2);
rp3 = ri3 * rg3 / (ri3 + rg3);
wc(k,1) = 1/(c1*sqrt(rp1*rf1)); fc(k,1) = wc(k,1)/(2*pi);
wc(k,2) = 1/(c2*sqrt(rp2*rf2)); fc(k,2) = wc(k,2)/(2*pi);
wc(k,3) = 1/(c3*sqrt(rp3*rf3)); fc(k,3) = wc(k,3)/(2*pi);
q(k,1) = sqrt(rf1/rp1)/2;
q(k,2) = sqrt(rf2/rp2)/2;
q(k,3) = sqrt(rf3/rp3)/2;
a(k,1) = rf1 / (2*ri1);
a(k,2) = rf2 / (2*ri2);
a(k,3) = rf3 / (2*ri3);
h1(k,:) = a(k,1)*(wc(k,1)/q(k,1))*s ./ (s .^ 2 + (wc(k,1)/q(k,1)) * s + wc(k,1)^2);
h2(k,:) = a(k,2)*(wc(k,2)/q(k,2))*s ./ (s .^ 2 + (wc(k,2)/q(k,2)) * s + wc(k,2)^2);
h3(k,:) = a(k,3)*(wc(k,3)/q(k,3))*s ./ (s .^ 2 + (wc(k,3)/q(k,3)) * s + wc(k,3)^2);
h(k,:) = (150/4.7) * h1(k,:) .* h2(k,:) .* h3(k,3);
end
fc = wc / (2*pi);
semilogx(f,20*log10(abs(h'))); axis tight
[cid:CD1C9051-F5EE-46CC-8C64-FB81B09C148B]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20221218/ec942996/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: buchla296_filterbank.png
Type: image/png
Size: 379869 bytes
Desc: buchla296_filterbank.png
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20221218/ec942996/attachment.png>
More information about the Synth-diy
mailing list