More UI cleanup

This commit is contained in:
Roland Rabien 2023-08-26 11:42:14 -07:00
commit 5367e208be
4 changed files with 20 additions and 107 deletions

View file

@ -2,13 +2,11 @@
"children": "children":
[ [
{ "id": "osc[1..2]", "x": "0,prevR()+1", "y": 0, "w": "parW()/2", "h": 163 }, { "id": "osc[1..2]", "x": "0,prevR()+1", "y": 0, "w": "parW()/2", "h": 163 },
{ "id": "flt", "x": "0", "y": "prevB()+1", "w": 175, "h": 163 }, { "id": "flt", "x": "0", "y": "prevB()+1", "w": 400, "h": 163 },
{ "id": "fltAdsr", "x": "prevR()+1", "y": "prevY()", "w": 175, "h": 163 },
{ "id": "noise", "x": "prevR()+1", "y": "prevY()", "w": 60, "h": 163 }, { "id": "noise", "x": "prevR()+1", "y": "prevY()", "w": 60, "h": 163 },
{ "id": "sub", "x": "prevR()+1", "y": "prevY()", "w": 120, "h": 163 }, { "id": "sub", "x": "prevR()+1", "y": "prevY()", "w": 120, "h": 163 },
{ "id": "lfo[1..3]", "x": "0,prevR()+1", "y": "prevB()+1,prevY()", "w": 175, "h": 163 }, { "id": "lfo[1..3]", "x": "0,prevR()+1", "y": "prevB()+1,prevY()", "w": 175, "h": 163 },
{ "id": "gate", "x": "prevR()+1", "y": "prevY()", "w": 175, "h": 163 }, { "id": "gate", "x": "prevR()+1", "y": "prevY()", "w": 240, "h": 163 },
{ "id": "gatePattern", "x": "prevR()+1", "y": "prevY()", "w": 175, "h": 163 },
{ "id": "scope", "x": "0", "y": "prevB()+1", "w": 175, "h": 163 }, { "id": "scope", "x": "0", "y": "prevB()+1", "w": 175, "h": 163 },
{ "id": "reverb", "x": "prevR()+1", "y": "prevY()", "w": 175, "h": 163 }, { "id": "reverb", "x": "prevR()+1", "y": "prevY()", "w": 175, "h": 163 },
{ "id": "delay", "x": "prevR()+1", "y": "prevY()", "w": 175, "h": 163 }, { "id": "delay", "x": "prevR()+1", "y": "prevY()", "w": 175, "h": 163 },

View file

@ -10,7 +10,6 @@ Editor::Editor (WavetableAudioProcessor& proc_)
addAndMakeVisible (sub); addAndMakeVisible (sub);
addAndMakeVisible (noise); addAndMakeVisible (noise);
addAndMakeVisible (filter); addAndMakeVisible (filter);
addAndMakeVisible (fltADSR);
for (int i = 0; i < Cfg::numLFOs; i++) for (int i = 0; i < Cfg::numLFOs; i++)
{ {
@ -19,7 +18,6 @@ Editor::Editor (WavetableAudioProcessor& proc_)
} }
addAndMakeVisible (gate); addAndMakeVisible (gate);
addAndMakeVisible (pattern);
addAndMakeVisible (chorus); addAndMakeVisible (chorus);
addAndMakeVisible (distort); addAndMakeVisible (distort);
addAndMakeVisible (delay); addAndMakeVisible (delay);
@ -33,19 +31,6 @@ Editor::Editor (WavetableAudioProcessor& proc_)
void Editor::setupCallbacks() void Editor::setupCallbacks()
{ {
// LFO mod items
for (int i = 0; i < Cfg::numLFOs; i++)
{
modItems[i].onClick = [this, i]
{
modItems[0].setSelected (i == 0);
modItems[1].setSelected (i == 1);
modItems[2].setSelected (i == 2);
lfoBox.setPage (i);
};
}
modItems[0].onClick();
} }
void Editor::resized() void Editor::resized()

View file

@ -23,32 +23,10 @@ private:
FilterBox filter { "filter", proc }; FilterBox filter { "filter", proc };
FilterADSRArea fltADSR { proc };
LFOBox lfos[Cfg::numLFOs] { { "LFO 1", proc, 0 }, { "LFO 2", proc, 1 }, { "LFO 3", proc, 2 } }; LFOBox lfos[Cfg::numLFOs] { { "LFO 1", proc, 0 }, { "LFO 2", proc, 1 }, { "LFO 3", proc, 2 } };
LFOArea lfoGraphs[Cfg::numLFOs] { { proc, 0 }, { proc, 1 }, { proc, 2 } }; LFOArea lfoGraphs[Cfg::numLFOs] { { proc, 0 }, { proc, 1 }, { proc, 2 } };
gin::HeaderItem modItems[8] { { "LFO 1", proc.lfoParams[0].enable, proc.modMatrix, proc.modSrcMonoLFO[0], proc.modSrcLFO[0] },
{ "LFO 2", proc.lfoParams[1].enable, proc.modMatrix, proc.modSrcMonoLFO[1], proc.modSrcLFO[1] },
{ "LFO 3", proc.lfoParams[2].enable, proc.modMatrix, proc.modSrcMonoLFO[2], proc.modSrcLFO[2] },
{ "ENV 1", proc.envParams[0].enable, proc.modMatrix, {}, proc.modSrcEnv[0] },
{ "ENV 2", proc.envParams[1].enable, proc.modMatrix, {}, proc.modSrcEnv[1] },
{ "ENV 3", proc.envParams[2].enable, proc.modMatrix, {}, proc.modSrcEnv[2] },
{ "STEP", proc.stepLfoParams.enable, proc.modMatrix, proc.modSrcMonoStep, proc.modSrcStep },
{ "MIDI", nullptr } };
gin::HeaderRow modHeader;
gin::HeaderItem fxItems[5] { { "GATE", proc.gateParams.enable },
{ "CHORUS", proc.chorusParams.enable },
{ "DISTORT", proc.distortionParams.enable },
{ "DELAY", proc.delayParams.enable },
{ "REVERB", proc.reverbParams.enable } };
gin::HeaderRow fxHeader;
GateBox gate { proc }; GateBox gate { proc };
GateArea pattern { proc };
ChorusBox chorus { proc }; ChorusBox chorus { proc };
DistortBox distort { proc }; DistortBox distort { proc };
DelayBox delay { proc }; DelayBox delay { proc };

View file

@ -201,6 +201,15 @@ public:
addControl (new gin::Select (flt.type), 1, 1); addControl (new gin::Select (flt.type), 1, 1);
addControl (v = new gin::Knob (flt.velocityTracking), 2, 1); addControl (v = new gin::Knob (flt.velocityTracking), 2, 1);
adsr = new gin::ADSRComponent ();
adsr->setParams (flt.attack, flt.decay, flt.sustain, flt.release);
addControl (adsr, 3, 0, 4, 1);
addControl (a = new gin::Knob (flt.attack), 3, 1);
addControl (d = new gin::Knob (flt.decay), 4, 1);
addControl (s = new gin::Knob (flt.sustain), 5, 1);
addControl (r = new gin::Knob (flt.release), 6, 1);
freq->setLiveValuesCallback ([this] () freq->setLiveValuesCallback ([this] ()
{ {
if (proc.filterParams.amount->getUserValue() != 0.0f || if (proc.filterParams.amount->getUserValue() != 0.0f ||
@ -209,6 +218,8 @@ public:
return proc.getLiveFilterCutoff(); return proc.getLiveFilterCutoff();
return juce::Array<float>(); return juce::Array<float>();
}); });
watchParam (flt.amount);
} }
void paramChanged () override void paramChanged () override
@ -216,41 +227,8 @@ public:
gin::ParamBox::paramChanged (); gin::ParamBox::paramChanged ();
auto& flt = proc.filterParams; auto& flt = proc.filterParams;
v->setEnabled (flt.amount->getUserValue() != 0.0f); v->setEnabled (flt.amount->getUserValue() != 0.0f);
}
WavetableAudioProcessor& proc;
gin::ParamComponent::Ptr v;
};
//==============================================================================
class FilterADSRArea : public gin::ParamArea
{
public:
FilterADSRArea (WavetableAudioProcessor& proc_)
: proc (proc_)
{
setName ("fltAdsr");
auto& flt = proc.filterParams;
adsr = new gin::ADSRComponent ();
adsr->setParams (flt.attack, flt.decay, flt.sustain, flt.release);
addControl (adsr);
addControl (a = new gin::Knob (flt.attack));
addControl (d = new gin::Knob (flt.decay));
addControl (s = new gin::Knob (flt.sustain));
addControl (r = new gin::Knob (flt.release));
watchParam (flt.amount);
}
void paramChanged() override
{
gin::ParamArea::paramChanged ();
auto& flt = proc.filterParams;
a->setEnabled (flt.amount->getUserValue() != 0.0f); a->setEnabled (flt.amount->getUserValue() != 0.0f);
d->setEnabled (flt.amount->getUserValue() != 0.0f); d->setEnabled (flt.amount->getUserValue() != 0.0f);
s->setEnabled (flt.amount->getUserValue() != 0.0f); s->setEnabled (flt.amount->getUserValue() != 0.0f);
@ -259,7 +237,7 @@ public:
} }
WavetableAudioProcessor& proc; WavetableAudioProcessor& proc;
gin::ParamComponent::Ptr a, d, s, r; gin::ParamComponent::Ptr v, a, d, s, r;
gin::ADSRComponent* adsr; gin::ADSRComponent* adsr;
}; };
@ -346,8 +324,12 @@ public:
addControl (new gin::Select (proc.gateParams.beat), 0, 0); addControl (new gin::Select (proc.gateParams.beat), 0, 0);
addControl (new gin::Knob (proc.gateParams.length), 1, 0); addControl (new gin::Knob (proc.gateParams.length), 1, 0);
addControl (new gin::Knob (proc.gateParams.attack), 0, 1); addControl (new gin::Knob (proc.gateParams.attack), 2, 0);
addControl (new gin::Knob (proc.gateParams.release), 1, 1); addControl (new gin::Knob (proc.gateParams.release), 3, 0);
auto g = new gin::GateEffectComponent();
g->setParams (proc.gateParams.length, proc.gateParams.l, proc.gateParams.r, proc.gateParams.enable);
addControl (g, 0, 1, 4, 1);
setSize (112, 163); setSize (112, 163);
} }
@ -355,36 +337,6 @@ public:
WavetableAudioProcessor& proc; WavetableAudioProcessor& proc;
}; };
//==============================================================================
class GateArea : public gin::ParamArea
{
public:
GateArea (WavetableAudioProcessor& proc_)
: gin::ParamArea ("Pattern"), proc (proc_)
{
setName ("gatePattern");
g = new gin::GateEffectComponent();
g->setParams (proc.gateParams.length, proc.gateParams.l, proc.gateParams.r, proc.gateParams.enable);
addControl (g);
setSize (272, 163);
}
void paramChanged () override
{
gin::ParamArea::paramChanged ();
}
void resized() override
{
g->setBounds (getLocalBounds().withSizeKeepingCentre (getWidth(), 128));
}
WavetableAudioProcessor& proc;
gin::GateEffectComponent* g;
};
//============================================================================== //==============================================================================
class ChorusBox : public gin::ParamBox class ChorusBox : public gin::ParamBox
{ {