stock text functions for KnobGadgets (the percentening)

master
zetaPRIME 2022-03-17 07:26:08 -04:00
parent e5c664a5ad
commit cf75f22403
12 changed files with 33 additions and 15 deletions

5
notes
View File

@ -32,6 +32,11 @@ parameters {
TODO {
immediate frontburner {
fix warnings in mixboard
decide whether to standardize knob setup orderings
bump gain knob max to +12dB
preset function for gain and balance? autoGain (templated because bind)
revert action
distortion effect

View File

@ -111,7 +111,7 @@ void Delay::onGadgetCreated() {
(new KnobGadget(l))->bind(delayTime)->setLabel(qs("Time"))->setRange(0.0, 5.0, 0.001)->setDefault(0.5);
(new ToggleGadget(l))->bind(timeInBeats)->setColor({191, 127, 255})->setToolTip(qs("BPM-relative"));
//l->addSpacer();
(new KnobGadget(l))->bind(amount)->setLabel(qs("Level"))->setDefault(0.5);
(new KnobGadget(l))->bind(amount)->setLabel(qs("Level"))->setTextFunc(KnobGadget::textPercent)->setDefault(0.5);
//l->addSpacer();
(new KnobGadget(l))->bind(feedback)->setLabel(qs("Feedback"))->setDefault(0.0);
(new KnobGadget(l))->bind(feedback)->setLabel(qs("Feedback"))->setTextFunc(KnobGadget::textPercent)->setDefault(0.0);
}

View File

@ -135,6 +135,6 @@ void SVF::onGadgetCreated() {
};
(new KnobGadget(l))->bind(frequency)->setLabel(qs("Freq"))->setRange(0.0, 16000.0, 25.0, KnobGadget::NoStep)->setDefault(6400.0);
(new KnobGadget(l))->bind(resonance)->setLabel(qs("Res"))->setRange(0.0, 1.0, 0.01)->setDefault(0.0);
(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);
}

View File

@ -74,6 +74,6 @@ void GainBalance::onGadgetCreated() {
obj->showPluginName = false;
auto l = new LayoutGadget(obj);
(new KnobGadget(l))->bind(gain)->setRange(-60, 6, .1)->setLabel("Gain")->setTextFunc([](double d) { return QString("%1dB").arg(d); });
(new KnobGadget(l))->bind(balance)->setRange(-1.0, 1.0)->setLabel("Balance");
(new KnobGadget(l))->bind(gain)->setLabel("Gain")->setRange(-60, 6, .1)->setTextFunc(KnobGadget::textGain);
(new KnobGadget(l))->bind(balance)->setLabel("Balance")->setRange(-1.0, 1.0)->setTextFunc(KnobGadget::textBalance);
}

View File

@ -159,7 +159,7 @@ void MixBoard::onGadgetCreated() {
/*auto mute = */(new ToggleGadget(tl))->bind(sections[i].mute)->setColor({255, 0, 0})->setToolTip("Mute", {-1, 0});
/*auto solo = */(new ToggleGadget(tl))->bind(sections[i].solo)->setColor({191, 191, 0})->setToolTip("Solo", {-1, 0});
/*auto gain = */(new KnobGadget(ln))->bind(sections[i].gain)->setRange(-60, 6, .1)->setLabel("Gain")->setTextFunc([](double d) { return QString("%1dB").arg(d); });
/*auto gain = */(new KnobGadget(ln))->bind(sections[i].gain)->setRange(-60, 6, .1)->setLabel("Gain")->setTextFunc(KnobGadget::textGain);
auto end = (new LayoutGadget(ln, true))->setMetrics(-1, spc);
auto bIns = (new ButtonGadget(end))->setSize(16, 16)->setText("+");

View File

@ -97,6 +97,6 @@ void Transpose::onGadgetCreated() {
obj->showPluginName = false;
auto l = (new LayoutGadget(obj))->setMetrics(8, 10);
(new KnobGadget(l))->bind(amount)->setLabel("Transpose")->setRange(-12, 12, 1, KnobGadget::MedStep);
(new KnobGadget(l))->bind(octave)->setLabel("Octave")->setRange(-5, 5, 1, KnobGadget::BigStep);
(new KnobGadget(l))->bind(amount)->setLabel("Transpose")->setTextFunc(KnobGadget::textOffset)->setRange(-12, 12, 1, KnobGadget::MedStep);
(new KnobGadget(l))->bind(octave)->setLabel("Octave")->setTextFunc(KnobGadget::textOffset)->setRange(-5, 5, 1, KnobGadget::BigStep);
}

View File

@ -209,9 +209,6 @@ void I2x03::onGadgetCreated() {
if (auto f = waveNames.find(static_cast<int8_t>(inp)); f != waveNames.end()) return f->second;
return qs("?");
};
auto percenttxt = [](double d) {
return qs("%1%").arg(d*100, 0);
};
auto ol = new LayoutGadget(obj, true);
auto l1 = new LayoutGadget(ol);
@ -226,12 +223,12 @@ void I2x03::onGadgetCreated() {
// blip group
(new KnobGadget(l2))->bind(blipTime)->setLabel(qs("Blip"))->setRange(0.0, 0.1, 0.001);
(new KnobGadget(l2))->bind(blipWave)->setLabel(qs("Wave"))->setTextFunc(wavetxt)->setRange(-1, 4, 1, KnobGadget::BigStep)->setDefault(-1);
(new KnobGadget(l2))->bind(blipNote)->setLabel(qs("Note"))->setRange(-12, 12, 1);
(new KnobGadget(l2))->bind(blipNote)->setLabel(qs("Note"))->setTextFunc(KnobGadget::textOffset)->setRange(-12, 12, 1);
l2->addSpacer();
// pwm group
(new KnobGadget(l2))->bind(pwmDepth)->setLabel(qs("PWM"))->setTextFunc(percenttxt)->setRange(0.0, 1.0, 0.01)->setDefault(0.75);
(new KnobGadget(l2))->bind(pwmDepth)->setLabel(qs("PWM"))->setTextFunc(KnobGadget::textPercent)->setRange(0.0, 1.0, 0.01)->setDefault(0.75);
(new KnobGadget(l2))->bind(pwmTime)->setLabel(qs("Time"))->setRange(0.01, 5.0, 0.01)->setDefault(3.0);
(new KnobGadget(l2))->bind(pwmPhase)->setLabel(qs("Phase"))->setRange(0.0, 1.0, 0.01);

View File

@ -203,7 +203,7 @@ void Thicc::onGadgetCreated() {
(new KnobGadget(l))->bind(mod)->setLabel(qs("W. Mod"))->setRange(-1.0, 1.0, 0.01);
l->addSpacer();
(new KnobGadget(l))->bind(voices)->setLabel(qs("Voices"))->setRange(1, 16, 1, KnobGadget::BigStep)->setDefault(1);
(new KnobGadget(l))->bind(detune)->setLabel(qs("Detune"))->setRange(0.0, 1.0, 0.001);
(new KnobGadget(l))->bind(detune)->setLabel(qs("Detune"))->setTextFunc(KnobGadget::textPercent)->setRange(0.0, 1.0, 0.001);
l->addSpacer();
KnobGadget::autoCreate(l, adsr);
}

View File

@ -134,6 +134,7 @@ void Xriek::onGadgetCreated() {
k->step = .01;
k->bind(drive);
k->setLabel("Drive");
k->setTextFunc(KnobGadget::textPercent);
}
{
@ -143,6 +144,7 @@ void Xriek::onGadgetCreated() {
k->step = .01;
k->bind(saturation);
k->setLabel("Saturate");
k->setTextFunc(KnobGadget::textPercent);
}
l->addSpacer();

View File

@ -214,7 +214,7 @@ void BeatPad::initUI(NodeUIScene* scene) {
sampleSelector->setSize(320, 96);
auto r1 = (new LayoutGadget(ol))->setMetrics(0, -1, 0.0);
auto gain = (new KnobGadget(r1))->setRange(-60, 12, .1)->setLabel("Gain")->setTextFunc([](double d) { return QString("%1dB").arg(d); });
auto gain = (new KnobGadget(r1))->setRange(-60, 12, .1)->setLabel("Gain")->setTextFunc(KnobGadget::textGain);
// create functions now that all UI elements exist to be referenced
state->selectNote = [=](int16_t n) {

View File

@ -1,6 +1,7 @@
#include "knobgadget.h"
using namespace Xybrid::UI;
#include "util/strings.h"
#include "ui/gadgets/layoutgadget.h"
#include "nodelib/basics.h"
@ -147,6 +148,12 @@ void KnobGadget::contextMenuEvent(QGraphicsSceneContextMenuEvent* e) {
e->accept();
}
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::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); }
void KnobGadget::autoCreate(LayoutGadget* l, NodeLib::ADSR& adsr) {
KnobGadget* k;
@ -171,6 +178,7 @@ void KnobGadget::autoCreate(LayoutGadget* l, NodeLib::ADSR& adsr) {
k->step = .01;
k->bind(adsr.s);
k->setLabel("Sustain");
k->setTextFunc(KnobGadget::textPercent);
k = new KnobGadget(l);
k->min = 0.0;

View File

@ -82,6 +82,12 @@ namespace Xybrid::UI {
return this;
}
static QString textPercent(double);
static QString textOffset(double);
static QString textGain(double);
static QString textBalance(double);
static void autoCreate(LayoutGadget*, NodeLib::ADSR&);
};