diff options
Diffstat (limited to 'plugins/ZamTube/ZamTubePlugin.cpp')
-rw-r--r-- | plugins/ZamTube/ZamTubePlugin.cpp | 44 |
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])))); |