mirror of
https://codeberg.org/armin/wavetable.git
synced 2026-09-01 14:00:47 +02:00
More UI cleanup
This commit is contained in:
parent
5f08863f97
commit
5367e208be
4 changed files with 20 additions and 107 deletions
|
|
@ -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 },
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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 };
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue