Browse Source

Make Host Parameters smoothing optional

Signed-off-by: falkTX <falktx@falktx.com>
tags/22.06
falkTX 2 years ago
parent
commit
8d1138f926
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
1 changed files with 34 additions and 4 deletions
  1. +34
    -4
      plugins/Cardinal/src/HostParameters.cpp

+ 34
- 4
plugins/Cardinal/src/HostParameters.cpp View File

@@ -38,6 +38,7 @@ struct HostParameters : TerminalModule {
rack::dsp::SlewLimiter parameters[kModuleParameters]; rack::dsp::SlewLimiter parameters[kModuleParameters];
bool parametersConnected[kModuleParameters] = {}; bool parametersConnected[kModuleParameters] = {};
bool bypassed = false; bool bypassed = false;
bool smooth = true;
uint32_t lastProcessCounter = 0; uint32_t lastProcessCounter = 0;


HostParameters() HostParameters()
@@ -76,7 +77,8 @@ struct HostParameters : TerminalModule {
for (uint32_t i=0; i<kModuleParameters; ++i) for (uint32_t i=0; i<kModuleParameters; ++i)
{ {
if (parametersConnected[i]) if (parametersConnected[i])
outputs[i].setVoltage(parameters[i].process(args.sampleTime, pcontext->parameters[i]));
outputs[i].setVoltage(smooth ? parameters[i].process(args.sampleTime, pcontext->parameters[i])
: pcontext->parameters[i]);
} }
} }


@@ -93,6 +95,25 @@ struct HostParameters : TerminalModule {
parameters[i].setRiseFall(fall, fall); parameters[i].setRiseFall(fall, fall);
} }
} }

// ----------------------------------------------------------------------------------------------------------------
// save and load json stuff

json_t* dataToJson() override
{
json_t* const rootJ = json_object();
DISTRHO_SAFE_ASSERT_RETURN(rootJ != nullptr, nullptr);

json_object_set_new(rootJ, "smooth", json_boolean(smooth));

return rootJ;
}

void dataFromJson(json_t* const rootJ) override
{
if (json_t* const smoothJ = json_object_get(rootJ, "smooth"))
smooth = json_boolean_value(smoothJ);
}
}; };


// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------
@@ -117,9 +138,12 @@ struct HostParametersWidget : ModuleWidgetWith9HP {
static constexpr const float paddingH = 30.0f; static constexpr const float paddingH = 30.0f;
static constexpr const float paddingV = 49.0f; static constexpr const float paddingV = 49.0f;


HostParametersWidget(HostParameters* const module)
HostParameters* const module;

HostParametersWidget(HostParameters* const m)
: module(m)
{ {
setModule(module);
setModule(m);
setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/HostParameters.svg"))); setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/HostParameters.svg")));
createAndAddScrews(); createAndAddScrews();


@@ -127,7 +151,7 @@ struct HostParametersWidget : ModuleWidgetWith9HP {
{ {
const float x = startX + int(i / 6) * paddingH; const float x = startX + int(i / 6) * paddingH;
const float y = startY + int(i % 6) * paddingV; const float y = startY + int(i % 6) * paddingV;
addOutput(createOutput<CardinalParameterPJ301MPort>(Vec(x, y), module, i));
addOutput(createOutput<CardinalParameterPJ301MPort>(Vec(x, y), m, i));
} }
} }


@@ -160,6 +184,12 @@ struct HostParametersWidget : ModuleWidgetWith9HP {


ModuleWidgetWith9HP::draw(args); ModuleWidgetWith9HP::draw(args);
} }

void appendContextMenu(Menu* const menu) override
{
menu->addChild(new MenuSeparator);
menu->addChild(createBoolPtrMenuItem("Smooth", "", &module->smooth));
}
}; };
#else #else
struct HostParametersWidget : ModuleWidget { struct HostParametersWidget : ModuleWidget {


Loading…
Cancel
Save