summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2019-01-08 03:53:10 +1100
committerDamien Zammit <damien@zamaudio.com>2019-01-08 03:53:10 +1100
commit0e2f2f30e62f23d3835459a176dd70b446b6c652 (patch)
tree06436961a55e04593381d0ca61179eff2115d213
parent85525facb2b87c8d01bc288e1983d5d5d766bbd6 (diff)
Prepare to fix properly by removing buggy tonestacks for now
-rw-r--r--plugins/ZamTube/ZamTubePlugin.cpp9
-rw-r--r--plugins/ZamTube/wdfcircuits.h11
2 files changed, 11 insertions, 9 deletions
diff --git a/plugins/ZamTube/ZamTubePlugin.cpp b/plugins/ZamTube/ZamTubePlugin.cpp
index 4f5311f..7ebea0f 100644
--- a/plugins/ZamTube/ZamTubePlugin.cpp
+++ b/plugins/ZamTube/ZamTubePlugin.cpp
@@ -953,9 +953,10 @@ void ZamTubePlugin::run(const float** inputs, float** outputs, uint32_t frames)
double pregain = from_dB(tubedrive*3.6364); // 0 to +40dB
double ViE = in * pregain * from_dB(15.); // assume in -15dBFS
- double postgain = from_dB(tubedrive/2.) * from_dB(mastergain);
- tubeout = ckt.advanc(ViE) * postgain / (e * 0.5);
-
+ double postgain = from_dB(mastergain*2. - 8.);
+ tubeout = ckt.advanc(ViE) * postgain * from_dB(tubedrive) / (2. * e);
+ outputs[0][i] = tubeout;
+/*
//Tone Stack sim
fRec0[0] = sanitize_denormal((float)tubeout - (fSlow16 * (((fSlow14 * fRec0[2]) + (fSlow13 * fRec0[1])) + (fSlow11 * fRec0[3]))));
fRec1[0] = sanitize_denormal((float)tubeout - (fSlow47 * (((fSlow45 * fRec1[2]) + (fSlow44 * fRec1[1])) + (fSlow42 * fRec1[3]))));
@@ -985,7 +986,7 @@ void ZamTubePlugin::run(const float** inputs, float** outputs, uint32_t frames)
double tonestackout = (FAUSTFLOAT)((fSlow664 * ((fSlow663 * fRec24[0]) + ((fSlow662 * fRec24[1]) + ((fSlow660 * fRec24[3]) + (fSlow658 * fRec24[2]))))) + ((fSlow638 * ((fSlow637 * fRec23[0]) + ((fSlow636 * fRec23[1]) + ((fSlow634 * fRec23[3]) + (fSlow632 * fRec23[2]))))) + ((fSlow614 * ((fSlow613 * fRec22[0]) + ((fSlow612 * fRec22[1]) + ((fSlow610 * fRec22[3]) + (fSlow608 * fRec22[2]))))) + ((fSlow588 * ((fSlow587 * fRec21[0]) + ((fSlow586 * fRec21[1]) + ((fSlow584 * fRec21[3]) + (fSlow582 * fRec21[2]))))) + ((fSlow561 * ((fSlow560 * fRec20[0]) + ((fSlow559 * fRec20[1]) + ((fSlow558 * fRec20[3]) + (fSlow556 * fRec20[2]))))) + ((fSlow540 * ((fSlow539 * fRec19[0]) + ((fSlow538 * fRec19[1]) + ((fSlow537 * fRec19[3]) + (fSlow535 * fRec19[2]))))) + ((fSlow519 * ((fSlow518 * fRec18[0]) + ((fSlow517 * fRec18[1]) + ((fSlow515 * fRec18[3]) + (fSlow513 * fRec18[2]))))) + ((fSlow493 * ((fSlow492 * fRec17[0]) + ((fSlow491 * fRec17[1]) + ((fSlow489 * fRec17[3]) + (fSlow487 * fRec17[2]))))) + ((fSlow463 * ((fSlow462 * fRec16[0]) + ((fSlow461 * fRec16[1]) + ((fSlow459 * fRec16[3]) + (fSlow457 * fRec16[2]))))) + ((fSlow435 * ((fSlow434 * fRec15[0]) + ((fSlow433 * fRec15[1]) + ((fSlow431 * fRec15[3]) + (fSlow429 * fRec15[2]))))) + ((fSlow409 * ((fSlow408 * fRec14[0]) + ((fSlow407 * fRec14[1]) + ((fSlow405 * fRec14[3]) + (fSlow403 * fRec14[2]))))) + ((fSlow385 * ((fSlow384 * fRec13[0]) + ((fSlow383 * fRec13[1]) + ((fSlow381 * fRec13[3]) + (fSlow379 * fRec13[2]))))) + ((fSlow358 * ((fSlow357 * fRec12[0]) + ((fSlow356 * fRec12[1]) + ((fSlow354 * fRec12[3]) + (fSlow352 * fRec12[2]))))) + ((fSlow332 * ((fSlow331 * fRec11[0]) + ((fSlow330 * fRec11[1]) + ((fSlow328 * fRec11[3]) + (fSlow326 * fRec11[2]))))) + ((fSlow305 * ((fSlow304 * fRec10[0]) + ((fSlow303 * fRec10[1]) + ((fSlow301 * fRec10[3]) + (fSlow299 * fRec10[2]))))) + ((fSlow277 * ((fSlow276 * fRec9[0]) + ((fSlow275 * fRec9[1]) + ((fSlow273 * fRec9[3]) + (fSlow271 * fRec9[2]))))) + ((fSlow250 * ((fSlow249 * fRec8[0]) + ((fSlow248 * fRec8[1]) + ((fSlow246 * fRec8[3]) + (fSlow244 * fRec8[2]))))) + ((fSlow224 * ((fSlow223 * fRec7[0]) + ((fSlow222 * fRec7[1]) + ((fSlow220 * fRec7[3]) + (fSlow218 * fRec7[2]))))) + ((fSlow198 * ((fSlow197 * fRec6[0]) + ((fSlow196 * fRec6[1]) + ((fSlow194 * fRec6[3]) + (fSlow192 * fRec6[2]))))) + ((fSlow171 * ((fSlow170 * fRec5[0]) + ((fSlow169 * fRec5[1]) + ((fSlow167 * fRec5[3]) + (fSlow165 * fRec5[2]))))) + ((fSlow140 * ((fSlow139 * fRec4[0]) + ((fSlow138 * fRec4[1]) + ((fSlow136 * fRec4[3]) + (fSlow134 * fRec4[2]))))) + ((fSlow114 * ((fSlow113 * fRec3[0]) + ((fSlow112 * fRec3[1]) + ((fSlow110 * fRec3[3]) + (fSlow108 * fRec3[2]))))) + ((fSlow88 * ((fSlow87 * fRec2[0]) + ((fSlow86 * fRec2[1]) + ((fSlow84 * fRec2[3]) + (fSlow82 * fRec2[2]))))) + ((fSlow60 * ((fSlow59 * fRec1[0]) + ((fSlow58 * fRec1[1]) + ((fSlow56 * fRec1[3]) + (fSlow54 * fRec1[2]))))) + (fSlow32 * ((fSlow30 * fRec0[0]) + ((fSlow29 * fRec0[1]) + ((fSlow27 * fRec0[3]) + (fSlow25 * fRec0[2])))))))))))))))))))))))))))));
outputs[0][i] = sanitize_denormal(tonestackout);
-
+*/
// post processing
for (int i=3; i>0; i--) fRec24[i] = sanitize_denormal(fRec24[i-1]);
for (int i=3; i>0; i--) fRec23[i] = sanitize_denormal(fRec23[i-1]);
diff --git a/plugins/ZamTube/wdfcircuits.h b/plugins/ZamTube/wdfcircuits.h
index 2f774f5..36bff18 100644
--- a/plugins/ZamTube/wdfcircuits.h
+++ b/plugins/ZamTube/wdfcircuits.h
@@ -69,13 +69,14 @@ public:
}
Real advanc(Real ViE) {
+ Real fudge = 0.9992;
//Get Bs
//P1_3GetB
Real Ckb = Cka;
//P1_1SetA
//RkGetB
//P1_2SetA
- Real P1_3b3 = -P1_3Gamma1*(-Ckb);
+ Real P1_3b3 = -fudge*P1_3Gamma1*(-Ckb);
Real Cob = Coa;
//S3_1SetA
//RoGetB
@@ -84,7 +85,7 @@ public:
//P2_1SetA
//E500GetB
//P2_2SetA
- Real P2_3b3 = E500E - P2_3Gamma1*(E500E - S3_3b3);
+ Real P2_3b3 = E500E - fudge*P2_3Gamma1*(E500E - S3_3b3);
//S2_2SetA
Real S2_3b3 = -(P1_3b3 + P2_3b3);
//S1_3GetB
@@ -105,7 +106,7 @@ public:
Real S1_3b3 = -(P0_3b3);
//Call tube model
Vg = -S1_3b3;
- Real b = t.compute(-S2_3b3, S2_3Gamma1, Vg, Vk);
+ Real b = t.compute(-S2_3b3, S2_3Gamma1, Vg-Vk, Vk);
//Set As
//S2_3SetA
Real S2_3b1 = P1_3b3 - S2_3Gamma1*(P1_3b3 + P2_3b3 + b);
@@ -123,8 +124,8 @@ public:
//RoSetA
Real Roa = S3_3b2;
Vk = -P1_3b3;
- //printf("K=%f G=%f P=%f b=%f in=%f out=%f\n", P1_3b3,S1_3b3,P2_3b3,b, ViE,-Roa);
- return -(Roa);
+ //printf("Vk=%f Vg=%f Vpk(b)=%f(%f) in=%f out=%f\n", Vk,Vg,P2_3b3,b, ViE,Roa);
+ return (Roa);
}
private: