summaryrefslogtreecommitdiff
path: root/plugins/ZamTube/ZamTubePlugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ZamTube/ZamTubePlugin.cpp')
-rw-r--r--plugins/ZamTube/ZamTubePlugin.cpp44
1 files changed, 29 insertions, 15 deletions
diff --git a/plugins/ZamTube/ZamTubePlugin.cpp b/plugins/ZamTube/ZamTubePlugin.cpp
index 23ecc6e..35ec202 100644
--- a/plugins/ZamTube/ZamTubePlugin.cpp
+++ b/plugins/ZamTube/ZamTubePlugin.cpp
@@ -240,16 +240,30 @@ void ZamTubePlugin::activate()
T Fs = getSampleRate();
// Passive components
- ci = 1.0e-7;
- ri = 1.0e+6;
- rg = 2.0e+4;
- rk = 1.0e+3;
- ck = 1.0e-5;
- e = 500.0;
- rp = 1.0e+5;
- er = rp;
- co = 1.0e-8;
- ro = 1.0e+6;
+ ci = 100e-9;
+ ri = 1e+6;
+ rg = 20e+3;
+ rk = 20.;
+ ck = 10e-6;
+ e = 500.;
+ er = 1.;
+ rp1 = 131.;
+ rp2 = 9.2e+3;
+ lp = 7.6;
+ teen = 28.;
+ rs1 = 8.;
+ rs2 = 225.;
+ ls = 8.2e-3;
+ cs = 145e-9;
+ re = 6.95;
+ le = 690e-6;
+ temn = 8.3;
+ rm = 1.;
+ cm = 27e-3;
+ lm = 560e-6;
+ tman = 1./0.0204;
+ ca = 398e-3;
+ ra = 122e-6;
// 12AX7 triode model RSD-1
v.g = 2.242e-3;
@@ -271,7 +285,7 @@ void ZamTubePlugin::activate()
v.cg2 = 11.99;
v.ig02 = 3.917e-8;
- ckt.updateRValues(ci, ck, co, e, er, rg, ri, rk, 1., ro, Fs, v);
+ ckt.updateRValues(ca, ci, ck, cm, cs, e, le, lm, lp, ls, teen, temn, tman, er, ra, re, rg, ri, rk, rm, rp1, rp2, rs1, rs2, 1000., Fs, v);
ckt.warmup_tubes();
fSamplingFreq = Fs;
@@ -346,10 +360,10 @@ void ZamTubePlugin::run(const float** inputs, float** outputs, uint32_t frames)
// protect against overflowing circuit
in = fabs(in) < DANGER ? in : 0.f;
- double pregain = from_dB(tubedrive*3.6364); // 0 to +40dB
- double ViE = in * pregain * from_dB(15.); // assume in -15dBFS
- double postgain = from_dB(mastergain*2. - 8.);
- tubeout = ckt.advanc(ViE) * postgain * from_dB(tubedrive) / (2. * e);
+ double pregain = from_dB(tubedrive*3.6364*2.); //0 to +80dB
+ double ViE = in * pregain * from_dB(-15.); // assume in -15dBFS
+ double postgain = from_dB(mastergain*5.);
+ tubeout = ckt.advanc(ViE) * pregain * postgain / e;
//Tone Stack sim
fRec0[0] = ((float)tubeout - (fSlow31 * (((fSlow30 * fRec0[1]) + (fSlow29 * fRec0[2])) + (fSlow27 * fRec0[3]))));
outputs[0][i] = sanitize_denormal((float)(fSlow31 * ((((fSlow46 * fRec0[0]) + (fSlow45 * fRec0[1])) + (fSlow43 * fRec0[2])) + (fSlow41 * fRec0[3]))));