Skip to content

Commit bf2a251

Browse files
committed
Cascade: add normal mode bool check to end cascade
1 parent b0fa13f commit bf2a251

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

src/funcgen.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,11 @@ struct Funcgen : Module {
5959
dsp::SchmittTrigger push[CHANNEL_COUNT];
6060
dsp::SchmittTrigger cascade_trigger;
6161
dsp::SchmittTrigger cascade_push;
62+
dsp::BooleanTrigger normal_mode_trigger;
6263
dsp::BooleanTrigger eoc_trigger[CHANNEL_COUNT];
6364
dsp::PulseGenerator eoc_pulse[CHANNEL_COUNT];
6465

66+
bool normal_mode = true;
6567
bool cascade_mode = false;
6668

6769
Funcgen() {
@@ -100,6 +102,7 @@ struct Funcgen : Module {
100102
void process(const ProcessArgs& args) override {
101103
float st = args.sampleTime;
102104
cascade_mode = params[MODE_PARAM].getValue() > 0.5f;
105+
normal_mode = !cascade_mode;
103106
for (int i = 0; i < CHANNEL_COUNT; i++) {
104107
float rise_time = params[RISE_PARAM + i].getValue();
105108
float fall_time = params[FALL_PARAM + i].getValue();
@@ -135,8 +138,16 @@ struct Funcgen : Module {
135138
cascade_output = std::max(cascade_output, envelope[3].env);
136139
outputs[CASCADE_OUTPUT].setVoltage(cascade_output);
137140
}
141+
if (normal_mode_trigger.process(normal_mode)) {
142+
for (int i = 0; i < CHANNEL_COUNT; i++) {
143+
envelope[i].reset();
144+
}
145+
}
138146
if (cascade_mode && (cascade_trigger.process(inputs[CASCADE_TRIGGER_INPUPT].getVoltage()) || cascade_push.process(params[CASCADE_TRIGGER_PARAM].getValue()))) {
139147
envelope[0].retrigger();
148+
envelope[1].reset();
149+
envelope[2].reset();
150+
envelope[3].reset();
140151
}
141152
float a = envelope[0].env;
142153
float b = envelope[1].env;

0 commit comments

Comments
 (0)