Browse Source

Optimize HostParameters module and also those without audio

Signed-off-by: falkTX <falktx@falktx.com>
tags/22.06
falkTX 3 years ago
parent
commit
952304999d
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
4 changed files with 31 additions and 15 deletions
  1. +3
    -0
      plugins/Cardinal/src/Blank.cpp
  2. +22
    -15
      plugins/Cardinal/src/HostParameters.cpp
  3. +3
    -0
      plugins/Cardinal/src/MPV.cpp
  4. +3
    -0
      plugins/Cardinal/src/TextEditor.cpp

+ 3
- 0
plugins/Cardinal/src/Blank.cpp 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 {


+ 22
- 15
plugins/Cardinal/src/HostParameters.cpp 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())
return;
const uint32_t processCounter = pcontext->processCounter;

for (uint32_t i=0; i<kModuleParameters; ++i)
// only checked on input
if (lastProcessCounter != processCounter)
{
const bool connected = outputs[i].isConnected();
bypassed = isBypassed();
lastProcessCounter = processCounter;

if (parametersConnected[i] != connected)
for (uint32_t i=0; i<kModuleParameters; ++i)
{
parametersConnected[i] = connected;
parameters[i].reset();
const bool connected = outputs[i].isConnected();

if (parametersConnected[i] != connected)
{
parametersConnected[i] = connected;
parameters[i].reset();
}
}
}

if (connected)
if (bypassed)
return;

for (uint32_t i=0; i<kModuleParameters; ++i)
{
if (parametersConnected[i])
outputs[i].setVoltage(parameters[i].process(args.sampleTime, pcontext->parameters[i]));
}
}


+ 3
- 0
plugins/Cardinal/src/MPV.cpp View File

@@ -49,6 +49,9 @@ struct CardinalEmbedModule : Module {
configOutput(0, "Audio Left");
configOutput(1, "Audio Right");
}

void process(const ProcessArgs&) override
{}
};

// --------------------------------------------------------------------------------------------------------------------


+ 3
- 0
plugins/Cardinal/src/TextEditor.cpp 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();


Loading…
Cancel
Save