Browse Source

SHASR: Refactor algorithm to not read output values.

tags/v2.6.0
Andrew Belt 1 year ago
parent
commit
e7567e5f27
1 changed files with 12 additions and 5 deletions
  1. +12
    -5
      src/SHASR.cpp

+ 12
- 5
src/SHASR.cpp View File

@@ -59,33 +59,40 @@ struct SHASR : Module {
bool push = pushTrigger.process(params[PUSH_PARAM].getValue()); bool push = pushTrigger.process(params[PUSH_PARAM].getValue());
bool clear = clearTrigger.process(params[CLEAR_PARAM].getValue()); bool clear = clearTrigger.process(params[CLEAR_PARAM].getValue());
bool lastTrig = false; bool lastTrig = false;
float lastValue = 0.f;


for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
// Check trigger if connected
if (inputs[TRIG_INPUTS + i].isConnected()) { if (inputs[TRIG_INPUTS + i].isConnected()) {
lastTrig = triggers[i].process(inputs[TRIG_INPUTS + i].getVoltage(), 0.1f, 1.f); lastTrig = triggers[i].process(inputs[TRIG_INPUTS + i].getVoltage(), 0.1f, 1.f);
} }
// Override first trigger if pushed
if (i == 0 && push) { if (i == 0 && push) {
lastTrig = true; lastTrig = true;
} }

// Get sample value if triggered
float sample = 0.f;
if (lastTrig) { if (lastTrig) {
float sample = 0.f;
if (i == 0) { if (i == 0) {
if (randomize) { if (randomize) {
sample = random::get<float>() * randomGain + randomOffset; sample = random::get<float>() * randomGain + randomOffset;
} }
} }
else { else {
sample = outputs[SH_OUTPUTS + i - 1].getVoltage();
sample = lastValue;
} }
}

lastValue = values[i];

if (lastTrig) {
values[i] = inputs[IN_INPUTS + i].getNormalVoltage(sample); values[i] = inputs[IN_INPUTS + i].getNormalVoltage(sample);
} }
if (clear) { if (clear) {
values[i] = 0.f; values[i] = 0.f;
} }
}


// Set outputs
for (int i = 0; i < 8; i++) {
outputs[SH_OUTPUTS + i].setVoltage(values[i]); outputs[SH_OUTPUTS + i].setVoltage(values[i]);
} }




Loading…
Cancel
Save