Optimize HostParameters module and also those without audio

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2022-05-23 00:18:05 +01:00
parent d8a341be95
commit 952304999d
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
4 changed files with 33 additions and 17 deletions

View file

@ -34,6 +34,9 @@ struct CardinalBlankModule : Module {
CardinalBlankModule() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
}
void process(const ProcessArgs&) override
{}
};
struct CardinalBlankImage : Widget {

View file

@ -37,6 +37,8 @@ struct HostParameters : TerminalModule {
CardinalPluginContext* const pcontext;
rack::dsp::SlewLimiter parameters[kModuleParameters];
bool parametersConnected[kModuleParameters] = {};
bool bypassed = false;
uint32_t lastProcessCounter = 0;
HostParameters()
: pcontext(static_cast<CardinalPluginContext*>(APP))
@ -45,31 +47,36 @@ struct HostParameters : TerminalModule {
throw rack::Exception("Plugin context is null.");
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
{
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;
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 (connected)
if (parametersConnected[i])
outputs[i].setVoltage(parameters[i].process(args.sampleTime, pcontext->parameters[i]));
}
}

View file

@ -49,6 +49,9 @@ struct CardinalEmbedModule : Module {
configOutput(0, "Audio Left");
configOutput(1, "Audio Right");
}
void process(const ProcessArgs&) override
{}
};
// --------------------------------------------------------------------------------------------------------------------

View file

@ -79,6 +79,9 @@ struct TextEditorModule : Module {
return rootJ;
}
void process(const ProcessArgs&) override
{}
void dataFromJson(json_t* const rootJ) override
{
file.clear();