diff options
author | Damien Zammit <damien@zamaudio.com> | 2018-12-30 02:51:05 +1100 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2019-01-01 20:20:10 +1100 |
commit | 2a4e1bb0e68da38baa1623bc81d6610f56f4ec82 (patch) | |
tree | 2d95f1abd6319cf6fff36e15e684f951bf48aba2 | |
parent | 907f7110e88406b603bb4efa3377283ffd68848f (diff) |
Fixed tube!
-rw-r--r-- | plugins/ZamTube/ZamTubePlugin.cpp | 24 | ||||
-rw-r--r-- | plugins/ZamTube/ZamTubeUI.cpp | 16 | ||||
-rw-r--r-- | plugins/ZamTube/wdfcircuits.h | 32 |
3 files changed, 36 insertions, 36 deletions
diff --git a/plugins/ZamTube/ZamTubePlugin.cpp b/plugins/ZamTube/ZamTubePlugin.cpp index 2569638..9d845ff 100644 --- a/plugins/ZamTube/ZamTubePlugin.cpp +++ b/plugins/ZamTube/ZamTubePlugin.cpp @@ -46,14 +46,14 @@ void ZamTubePlugin::initParameter(uint32_t index, Parameter& parameter) parameter.unit = " "; parameter.ranges.def = 0.0f; parameter.ranges.min = 0.0f; - parameter.ranges.max = 30.0f; + parameter.ranges.max = 11.0f; break; case paramBass: parameter.hints = kParameterIsAutomable; parameter.name = "Bass"; parameter.symbol = "bass"; parameter.unit = " "; - parameter.ranges.def = 1.0f; + parameter.ranges.def = 5.0f; parameter.ranges.min = 0.0f; parameter.ranges.max = 10.0f; break; @@ -62,7 +62,7 @@ void ZamTubePlugin::initParameter(uint32_t index, Parameter& parameter) parameter.name = "Mids"; parameter.symbol = "mids"; parameter.unit = " "; - parameter.ranges.def = 1.0f; + parameter.ranges.def = 5.0f; parameter.ranges.min = 0.0f; parameter.ranges.max = 10.0f; break; @@ -71,7 +71,7 @@ void ZamTubePlugin::initParameter(uint32_t index, Parameter& parameter) parameter.name = "Treble"; parameter.symbol = "treb"; parameter.unit = " "; - parameter.ranges.def = 1.0f; + parameter.ranges.def = 5.0f; parameter.ranges.min = 0.0f; parameter.ranges.max = 10.0f; break; @@ -98,7 +98,7 @@ void ZamTubePlugin::initParameter(uint32_t index, Parameter& parameter) parameter.name = "Quality Insane"; parameter.symbol = "insane"; parameter.unit = " "; - parameter.ranges.def = 0.0f; + parameter.ranges.def = 1.0f; parameter.ranges.min = 0.0f; parameter.ranges.max = 1.0f; break; @@ -181,12 +181,12 @@ void ZamTubePlugin::loadProgram(uint32_t index) /* Default parameter values */ tubedrive = 0.0f; - bass = 1.f; - middle = 1.f; - treble = 1.f; + bass = 5.f; + middle = 5.f; + treble = 5.f; tonestack = 0.0f; mastergain = 0.0f; - insane = 0.0f; + insane = 1.0f; /* Default variable values */ @@ -233,7 +233,7 @@ void ZamTubePlugin::activate() v.cg2 = 11.99; v.ig02 = 3.917e-8; - ckt.updateRValues(ci, ck, co, e, rp, rg, ri, rk, ro, 10000.0, Fs, v); + ckt.updateRValues(ci, ck, co, e, rp, rg, ri, rk, ro, 1000.0, Fs, v); ckt.warmup_tubes(); fSamplingFreq = Fs; @@ -950,8 +950,8 @@ void ZamTubePlugin::run(const float** inputs, float** outputs, uint32_t frames) // protect against overflowing circuit in = fabs(in) < DANGER ? in : 0.f; - double ViE = in*from_dB(tubedrive); - tubeout = 10. * ckt.advanc(ViE) * from_dB(30. - tubedrive) * from_dB(12.); + double ViE = in*from_dB(tubedrive - 10.); + tubeout = e * ckt.advanc(ViE) * from_dB(40. - tubedrive); if (!ckt.on) { tubeout = 0.0; } else { diff --git a/plugins/ZamTube/ZamTubeUI.cpp b/plugins/ZamTube/ZamTubeUI.cpp index d5e9697..4b6de0c 100644 --- a/plugins/ZamTube/ZamTubeUI.cpp +++ b/plugins/ZamTube/ZamTubeUI.cpp @@ -49,7 +49,7 @@ ZamTubeUI::ZamTubeUI() // knobs fKnobTube = new ZamKnob(this, knobImage); fKnobTube->setAbsolutePos(177, 76); - fKnobTube->setRange(0.f, 30.0f); + fKnobTube->setRange(0.f, 11.0f); fKnobTube->setLabel(true); fKnobTube->setScrollStep(1.0f); fKnobTube->setDefault(0.0f); @@ -61,7 +61,7 @@ ZamTubeUI::ZamTubeUI() fKnobBass->setRange(0.f, 10.f); fKnobBass->setLabel(true); fKnobBass->setScrollStep(1.0f); - fKnobBass->setDefault(1.0f); + fKnobBass->setDefault(5.0f); fKnobBass->setRotationAngle(240); fKnobBass->setCallback(this); @@ -70,7 +70,7 @@ ZamTubeUI::ZamTubeUI() fKnobMids->setRange(0.f, 10.f); fKnobMids->setLabel(true); fKnobMids->setScrollStep(1.f); - fKnobMids->setDefault(1.f); + fKnobMids->setDefault(5.f); fKnobMids->setRotationAngle(240); fKnobMids->setCallback(this); @@ -79,7 +79,7 @@ ZamTubeUI::ZamTubeUI() fKnobTreb->setRange(0.f, 10.f); fKnobTreb->setLabel(true); fKnobTreb->setScrollStep(1.f); - fKnobTreb->setDefault(1.f); + fKnobTreb->setDefault(5.f); fKnobTreb->setRotationAngle(240); fKnobTreb->setCallback(this); @@ -151,11 +151,11 @@ void ZamTubeUI::programLoaded(uint32_t index) // Default values fKnobTube->setValue(0.0f); - fKnobBass->setValue(1.f); - fKnobMids->setValue(1.f); - fKnobTreb->setValue(1.f); + fKnobBass->setValue(5.f); + fKnobMids->setValue(5.f); + fKnobTreb->setValue(5.f); fKnobGain->setValue(0.0f); - fToggleInsane->setDown(false); + fToggleInsane->setDown(true); fSliderNotch->setValue(0.0f); } diff --git a/plugins/ZamTube/wdfcircuits.h b/plugins/ZamTube/wdfcircuits.h index 2288d6c..16504b1 100644 --- a/plugins/ZamTube/wdfcircuits.h +++ b/plugins/ZamTube/wdfcircuits.h @@ -57,7 +57,7 @@ public: P2_3Gamma1 = 1.0 / P2_1R/(1.0 / P2_1R + 1.0 / P2_2R); Assert(P2_3Gamma1 >= 0.0 && P2_3Gamma1 <= 1.0); t.Kr = sanitize_denormal(I3_3Gamma1); - t.Pr = sanitize_denormal(S2_3Gamma1); + t.Pr = sanitize_denormal(P2_3Gamma1); t.Gr = sanitize_denormal(S1_3Gamma1); //printf("Kr = %f Pr = %f Gr = %f\n", t.Kr, t.Pr, t.Gr); } @@ -65,7 +65,7 @@ public: void warmup_tubes(void) { int i; on = false; - for (i = 0; i < 1000; i++) { + for (i = 0; i < 8000; i++) { advanc(0.0); } on = true; @@ -76,12 +76,12 @@ public: Real Ckb = Cka; Real I3_3b3 = I3_3Gamma1 * Ckb; Real Cib = Cia; - Real S0_3b3 = Cib + ViE; - Real P0_3b3 = P0_3Gamma1*(S0_3b3); - Real S1_3b3 = P0_3b3; + Real S0_3b3 = ViE + S0_3Gamma1*(Cib); + 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*(E250E + 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); @@ -89,18 +89,18 @@ public: Real b2 = t.getG(); Real b3 = t.getP(); //Set As - Real I3_3b1 = (b1 + Ckb - I3_3Gamma1*(Ckb)); + Real I3_3b1 = (b1 - I3_3Gamma1*(b1 + Ckb)); Cka = I3_3b1; - Real S1_3b2 = ((-b2) - S1_3Gamma1*(P0_3b3 + (-b2))); - Real P0_3b1 = (S1_3b2 + (S0_3b3) - P0_3Gamma1*(S0_3b3)); - Real S0_3b1 = (Cib - S0_3Gamma1*(Cib + ViE + P0_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 S0_3b1 = (Cib - P0_3b1 - S0_3Gamma1*(Cib - P0_3b1)); Cia = S0_3b1; - Real P2_3b1 = (b3 + E250E + (S2_3b3) - P2_3Gamma1*(E250E + S2_3b3)); - Real S2_3b1 = (Cob - S2_3Gamma1*(Cob + P2_3b1)); - Coa = S2_3b1; - Real S2_3b2 = (Cob + P2_3b1 - S2_3Gamma1*(Cob + P2_3b1)); - Real Roa = S2_3b2; - return -Roa; + Real P2_3b1 = (b3 - S2_3b3 - P2_3Gamma1*(b3 - S2_3b3)); + Real S2_3b2 = (Cob - S2_3Gamma1*(Cob - P2_3b1)); + Coa = S2_3b2; + Real S2_3b1 = (Cob - P2_3b1 - S2_3Gamma1*(Cob - P2_3b1)); + Real Roa = S2_3b1; + return Roa; } private: |