Optimize HostParameters module and also those without audio
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
d8a341be95
commit
952304999d
4 changed files with 33 additions and 17 deletions
|
@ -34,6 +34,9 @@ struct CardinalBlankModule : Module {
|
||||||
CardinalBlankModule() {
|
CardinalBlankModule() {
|
||||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
|
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void process(const ProcessArgs&) override
|
||||||
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CardinalBlankImage : Widget {
|
struct CardinalBlankImage : Widget {
|
||||||
|
|
|
@ -37,6 +37,8 @@ struct HostParameters : TerminalModule {
|
||||||
CardinalPluginContext* const pcontext;
|
CardinalPluginContext* const pcontext;
|
||||||
rack::dsp::SlewLimiter parameters[kModuleParameters];
|
rack::dsp::SlewLimiter parameters[kModuleParameters];
|
||||||
bool parametersConnected[kModuleParameters] = {};
|
bool parametersConnected[kModuleParameters] = {};
|
||||||
|
bool bypassed = false;
|
||||||
|
uint32_t lastProcessCounter = 0;
|
||||||
|
|
||||||
HostParameters()
|
HostParameters()
|
||||||
: pcontext(static_cast<CardinalPluginContext*>(APP))
|
: pcontext(static_cast<CardinalPluginContext*>(APP))
|
||||||
|
@ -45,31 +47,36 @@ struct HostParameters : TerminalModule {
|
||||||
throw rack::Exception("Plugin context is null.");
|
throw rack::Exception("Plugin context is null.");
|
||||||
|
|
||||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
|
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
|
||||||
|
|
||||||
const float fsampleRate = static_cast<float>(pcontext->sampleRate);
|
|
||||||
SampleRateChangeEvent e = {
|
|
||||||
fsampleRate,
|
|
||||||
1.0f / fsampleRate
|
|
||||||
};
|
|
||||||
onSampleRateChange(e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void processTerminalInput(const ProcessArgs& args) override
|
void processTerminalInput(const ProcessArgs& args) override
|
||||||
{
|
{
|
||||||
if (isBypassed())
|
const uint32_t processCounter = pcontext->processCounter;
|
||||||
|
|
||||||
|
// only checked on input
|
||||||
|
if (lastProcessCounter != processCounter)
|
||||||
|
{
|
||||||
|
bypassed = isBypassed();
|
||||||
|
lastProcessCounter = processCounter;
|
||||||
|
|
||||||
|
for (uint32_t i=0; i<kModuleParameters; ++i)
|
||||||
|
{
|
||||||
|
const bool connected = outputs[i].isConnected();
|
||||||
|
|
||||||
|
if (parametersConnected[i] != connected)
|
||||||
|
{
|
||||||
|
parametersConnected[i] = connected;
|
||||||
|
parameters[i].reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bypassed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (uint32_t i=0; i<kModuleParameters; ++i)
|
for (uint32_t i=0; i<kModuleParameters; ++i)
|
||||||
{
|
{
|
||||||
const bool connected = outputs[i].isConnected();
|
if (parametersConnected[i])
|
||||||
|
|
||||||
if (parametersConnected[i] != connected)
|
|
||||||
{
|
|
||||||
parametersConnected[i] = connected;
|
|
||||||
parameters[i].reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (connected)
|
|
||||||
outputs[i].setVoltage(parameters[i].process(args.sampleTime, pcontext->parameters[i]));
|
outputs[i].setVoltage(parameters[i].process(args.sampleTime, pcontext->parameters[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,9 @@ struct CardinalEmbedModule : Module {
|
||||||
configOutput(0, "Audio Left");
|
configOutput(0, "Audio Left");
|
||||||
configOutput(1, "Audio Right");
|
configOutput(1, "Audio Right");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void process(const ProcessArgs&) override
|
||||||
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -79,6 +79,9 @@ struct TextEditorModule : Module {
|
||||||
return rootJ;
|
return rootJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void process(const ProcessArgs&) override
|
||||||
|
{}
|
||||||
|
|
||||||
void dataFromJson(json_t* const rootJ) override
|
void dataFromJson(json_t* const rootJ) override
|
||||||
{
|
{
|
||||||
file.clear();
|
file.clear();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue