summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2018-12-30 02:51:05 +1100
committerDamien Zammit <damien@zamaudio.com>2019-01-01 20:20:10 +1100
commit2a4e1bb0e68da38baa1623bc81d6610f56f4ec82 (patch)
tree2d95f1abd6319cf6fff36e15e684f951bf48aba2
parent907f7110e88406b603bb4efa3377283ffd68848f (diff)
Fixed tube!
-rw-r--r--plugins/ZamTube/ZamTubePlugin.cpp24
-rw-r--r--plugins/ZamTube/ZamTubeUI.cpp16
-rw-r--r--plugins/ZamTube/wdfcircuits.h32
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: