KnobGadget: filter cutoff preset, boilerplate reduction macro :D
parent
0008997fe7
commit
79b1d9239f
2
notes
2
notes
|
@ -40,7 +40,7 @@ TODO {
|
|||
}
|
||||
}
|
||||
|
||||
filter cutoff preset for knobgadget
|
||||
- filter cutoff preset for knobgadget
|
||||
|
||||
revert-to-saved menu action
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ void SVF::onGadgetCreated() {
|
|||
return qs("?");
|
||||
};
|
||||
|
||||
(new KnobGadget(l))->bind(frequency)->setLabel(qs("Freq"))->setRange(0.0, 16000.0, 25.0, KnobGadget::NoStep, 1.0)->setDefault(6400.0);
|
||||
KnobGadget::autoCutoff(l, frequency);
|
||||
(new KnobGadget(l))->bind(resonance)->setLabel(qs("Res"))->setTextFunc(KnobGadget::textPercent)->setRange(0.0, 1.0, 0.01)->setDefault(0.0);
|
||||
(new KnobGadget(l))->bind(mode)->setLabel(qs("Mode"))->setTextFunc(modetxt)->setRange(0, Notch, 1, KnobGadget::BigStep)->setDefault(0);
|
||||
}
|
||||
|
|
|
@ -207,6 +207,7 @@ void KnobGadget::contextMenuEvent(QGraphicsSceneContextMenuEvent* e) {
|
|||
|
||||
QString KnobGadget::textPercent(double d) { return qs("%1%").arg(d*100); }
|
||||
QString KnobGadget::textOffset(double d) { return (d > 0 ? qs("+%1") : qs("%1")).arg(d); }
|
||||
QString KnobGadget::textFrequency(double d) { return qs("%1Hz").arg(d); }
|
||||
|
||||
QString KnobGadget::textGain(double d) { return (d > 0 ? qs("+%1dB") : qs("%1dB")).arg(d); }
|
||||
QString KnobGadget::textBalance(double d) { return (d > 0 ? qs("+%1%") : qs("%1%")).arg(d*100); }
|
||||
|
|
|
@ -87,17 +87,25 @@ namespace Xybrid::UI {
|
|||
|
||||
static QString textPercent(double);
|
||||
static QString textOffset(double);
|
||||
static QString textFrequency(double);
|
||||
|
||||
static QString textGain(double);
|
||||
static QString textBalance(double);
|
||||
|
||||
static void autoCreate(LayoutGadget*, NodeLib::ADSR&);
|
||||
|
||||
// common presets
|
||||
static inline KnobGadget* autoGain(QGraphicsItem* p) { return (new KnobGadget(p))->setRange(-60, 12, .1)->setLabel("Gain")->setTextFunc(KnobGadget::textGain); }
|
||||
template<typename T> static inline KnobGadget* autoGain(QGraphicsItem* p, T& v) { return autoGain(p)->bind(v); }
|
||||
static inline KnobGadget* autoBalance(QGraphicsItem* p) { return (new KnobGadget(p))->setRange(-1.0, 1.0, .01)->setLabel("Balance")->setTextFunc(KnobGadget::textBalance); }
|
||||
template<typename T> static inline KnobGadget* autoBalance(QGraphicsItem* p, T& v) { return autoBalance(p)->bind(v); }
|
||||
};
|
||||
// macro to vastly reduce boilerplate
|
||||
#define preset(NAME) \
|
||||
template<typename T> static inline KnobGadget* auto##NAME (QGraphicsItem* p, T& v) { return auto##NAME (p)->bind(v); } \
|
||||
static inline KnobGadget* auto##NAME (QGraphicsItem* p)
|
||||
|
||||
// common presets
|
||||
preset(Gain) { return (new KnobGadget(p))->setRange(-60, 12, .1)->setLabel("Gain")->setTextFunc(KnobGadget::textGain); }
|
||||
preset(Balance) { return (new KnobGadget(p))->setRange(-1.0, 1.0, .01)->setLabel("Balance")->setTextFunc(KnobGadget::textBalance); }
|
||||
preset(Cutoff) { return (new KnobGadget(p))->setRange(0, 16000, 10, NoStep, 1)->setLabel("Cutoff")->setTextFunc(KnobGadget::textFrequency); }
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
// keep this local
|
||||
#undef preset
|
||||
|
|
Loading…
Reference in New Issue