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.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/plugins/ZamTube/ZamTubePlugin.cpp b/plugins/ZamTube/ZamTubePlugin.cpp
index b47186b..40349c4 100644
--- a/plugins/ZamTube/ZamTubePlugin.cpp
+++ b/plugins/ZamTube/ZamTubePlugin.cpp
@@ -299,6 +299,7 @@ void ZamTubePlugin::activate()
// Passive components
/* Original WDF preamp
+ ci[0] = 100e-9;
rg[0] = 20e+3;
rk[0] = 1e+3;
ck[0] = 10e-6;
@@ -309,6 +310,7 @@ void ZamTubePlugin::activate()
*/
/* Matt's preamp */
+ ci[0] = 100e-9;
rg[0] = 1e-3;
rk[0] = 1200.; // 820 originally
ck[0] = 50e-6;
@@ -318,6 +320,7 @@ void ZamTubePlugin::activate()
ro[0] = 470e+3;
/* CLA's preamp
+ ci[0] = 100e-9;
rg[0] = 5.6e+3;
rk[0] = 1.5e+3;
ck[0] = 4.7e-6;
@@ -329,9 +332,7 @@ void ZamTubePlugin::activate()
int pre = 0;
float volumepot = 800e+3; // 100 good at low gain, 1000 good at high gain
- ckt.on = false;
- ckt.updateRValues(ck[pre], co[pre], e[pre], er[pre], rg[pre], volumepot, rk[pre], 1e+3, ro[pre], Fs);
- ckt.warmup_tubes();
+ ckt.updateRValues(ci[pre], ck[pre], co[pre], e[pre], er[pre], rg[pre], volumepot, rk[pre], 1e+3, ro[pre], Fs);
fSamplingFreq = Fs;
@@ -346,7 +347,6 @@ void ZamTubePlugin::activate()
void ZamTubePlugin::deactivate()
{
- ckt.warmup_tubes();
fRec0[3] = 0.f;
fRec0[2] = 0.f;
fRec0[1] = 0.f;
@@ -407,20 +407,26 @@ void ZamTubePlugin::run(const float** inputs, float** outputs, uint32_t frames)
float toneout = 0.f;
- float cut = insane ? 0. : 15.;
+ float cut = 15.;
float pregain = from_dB(tubedrive*3.6364 - cut + mastergain);
float postgain = from_dB(cut + 42. * (1. - log1p(tubedrive/11.)));
+
+ if (insaneold != (int)insane) {
+ insaneold = (int)insane;
+ ckt.set_mode(insane > 0.5 ? ckt.TUBE_MODE_GRIDLEAK : ckt.TUBE_MODE_SIXTIES);
+ ZamTubePlugin::deactivate();
+ }
for (uint32_t i = 0; i < frames; ++i) {
//Step 1: read input sample as voltage for the source
float in = inputs[0][i] * pregain;
- //Tone Stack (post tube)
+ //Tone Stack (pre tube)
fRec0[0] = (in - (fSlow31 * (((fSlow30 * fRec0[1]) + (fSlow29 * fRec0[2])) + (fSlow27 * fRec0[3])))) + 1e-20f;
toneout = sanitize_denormal((float)(fSlow31 * ((((fSlow46 * fRec0[0]) + (fSlow45 * fRec0[1])) + (fSlow43 * fRec0[2])) + (fSlow41 * fRec0[3]))));
- outputs[0][i] = ckt.advanc(toneout) * postgain / 10000.;
+ outputs[0][i] = ckt.run(toneout) * postgain / 10000.;
// update filter states
fRec0[3] = fRec0[2];