summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2019-01-01 19:43:46 +1100
committerDamien Zammit <damien@zamaudio.com>2019-01-01 20:20:10 +1100
commit96ec0c7dbc9c034bc8716309b92fda84bb27cf92 (patch)
treed56044d30cdd2c00e1b0d42c4476011ee7af41af
parent2a4e1bb0e68da38baa1623bc81d6610f56f4ec82 (diff)
Scale down caps
-rw-r--r--plugins/ZamTube/ZamTubePlugin.cpp2
-rw-r--r--plugins/ZamTube/wdfcircuits.h25
2 files changed, 15 insertions, 12 deletions
diff --git a/plugins/ZamTube/ZamTubePlugin.cpp b/plugins/ZamTube/ZamTubePlugin.cpp
index 9d845ff..ca149f2 100644
--- a/plugins/ZamTube/ZamTubePlugin.cpp
+++ b/plugins/ZamTube/ZamTubePlugin.cpp
@@ -951,7 +951,7 @@ void ZamTubePlugin::run(const float** inputs, float** outputs, uint32_t frames)
in = fabs(in) < DANGER ? in : 0.f;
double ViE = in*from_dB(tubedrive - 10.);
- tubeout = e * ckt.advanc(ViE) * from_dB(40. - tubedrive);
+ tubeout = e * ckt.advanc(ViE) * from_dB(40. - tubedrive)*from_dB(-3.);
if (!ckt.on) {
tubeout = 0.0;
} else {
diff --git a/plugins/ZamTube/wdfcircuits.h b/plugins/ZamTube/wdfcircuits.h
index 16504b1..f8d8a49 100644
--- a/plugins/ZamTube/wdfcircuits.h
+++ b/plugins/ZamTube/wdfcircuits.h
@@ -26,9 +26,9 @@ public:
void updateRValues(Real C_Ci, Real C_Ck, Real C_Co, Real E_E250, Real R_E250, Real R_Rg, Real R_Ri, Real R_Rk, Real R_Ro, Real R_Vi, Real sampleRate, Triode& tube) {
t = tube;
Real ViR = R_Vi;
- Real CiR = 1.0 / (2.0*C_Ci*sampleRate);
- Real CkR = 1.0 / (2.0*C_Ck*sampleRate);
- Real CoR = 1.0 / (2.0*C_Co*sampleRate);
+ CiR = 1.0 / (2.0*C_Ci*sampleRate);
+ CkR = 1.0 / (2.0*C_Ck*sampleRate);
+ CoR = 1.0 / (2.0*C_Co*sampleRate);
Real RoR = R_Ro;
Real RgR = R_Rg;
Real RiR = R_Ri;
@@ -74,16 +74,15 @@ public:
Real advanc(Real VE){
ViE = VE;
Real Ckb = Cka;
- Real I3_3b3 = I3_3Gamma1 * Ckb;
+ Real I3_3b3 = I3_3Gamma1 * Ckb / CkR;
Real Cib = Cia;
- Real S0_3b3 = ViE + S0_3Gamma1*(Cib);
- Real P0_3b3 = P0_3Gamma1*(-S0_3b3);
- Real S1_3b3 = P0_3b3 + S1_3Gamma1*(P0_3b3);
+ Real S0_3b3 = (ViE + S0_3Gamma1 * Cib / CiR);
+ Real P0_3b3 = -P0_3Gamma1 * S0_3b3;
+ Real S1_3b3 = (P0_3b3 + S1_3Gamma1*(P0_3b3));
Real Cob = Coa;
Real S2_3b3 = Cob;
- Real P2_3b3 = E250E + P2_3Gamma1*(-S2_3b3);
+ Real P2_3b3 = (E250E - P2_3Gamma1 * S2_3b3);
//Tube: K G P
- //printf("K=%f G=%f P=%f\n", I3_3b3,-S1_3b3,P2_3b3);
t.compute(I3_3b3,-S1_3b3,P2_3b3);
Real b1 = t.getC();
Real b2 = t.getG();
@@ -91,8 +90,8 @@ public:
//Set As
Real I3_3b1 = (b1 - I3_3Gamma1*(b1 + Ckb));
Cka = I3_3b1;
- Real S1_3b2 = P0_3b3 - b2 - S1_3Gamma1*(P0_3b3 - b2);
- Real P0_3b1 = S1_3b2 + (-S0_3b3) - P0_3Gamma1*(S1_3b2 - S0_3b3);
+ Real S1_3b2 = (P0_3b3 - b2 - S1_3Gamma1*(P0_3b3 - b2));
+ Real P0_3b1 = (S1_3b2 + (-S0_3b3) - P0_3Gamma1*(S1_3b2 - S0_3b3));
Real S0_3b1 = (Cib - P0_3b1 - S0_3Gamma1*(Cib - P0_3b1));
Cia = S0_3b1;
Real P2_3b1 = (b3 - S2_3b3 - P2_3Gamma1*(b3 - S2_3b3));
@@ -100,6 +99,7 @@ public:
Coa = S2_3b2;
Real S2_3b1 = (Cob - P2_3b1 - S2_3Gamma1*(Cob - P2_3b1));
Real Roa = S2_3b1;
+ //printf("K=%f G=%f P=%f out=%f\n", I3_3b3,-S1_3b3,P2_3b3, Roa);
return Roa;
}
@@ -110,6 +110,9 @@ private:
Real Coa;
//R values
+ Real CiR;
+ Real CkR;
+ Real CoR;
Real I3_3Gamma1;
Real E250E;
Real ViE;