|
|
@@ -38,6 +38,7 @@ struct HostParameters : TerminalModule { |
|
|
|
rack::dsp::SlewLimiter parameters[kModuleParameters]; |
|
|
|
bool parametersConnected[kModuleParameters] = {}; |
|
|
|
bool bypassed = false; |
|
|
|
bool smooth = true; |
|
|
|
uint32_t lastProcessCounter = 0; |
|
|
|
|
|
|
|
HostParameters() |
|
|
@@ -76,7 +77,8 @@ struct HostParameters : TerminalModule { |
|
|
|
for (uint32_t i=0; i<kModuleParameters; ++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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------------------------------------- |
|
|
|
// 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 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"))); |
|
|
|
createAndAddScrews(); |
|
|
|
|
|
|
@@ -127,7 +151,7 @@ struct HostParametersWidget : ModuleWidgetWith9HP { |
|
|
|
{ |
|
|
|
const float x = startX + int(i / 6) * paddingH; |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
void appendContextMenu(Menu* const menu) override |
|
|
|
{ |
|
|
|
menu->addChild(new MenuSeparator); |
|
|
|
menu->addChild(createBoolPtrMenuItem("Smooth", "", &module->smooth)); |
|
|
|
} |
|
|
|
}; |
|
|
|
#else |
|
|
|
struct HostParametersWidget : ModuleWidget { |
|
|
|