@@ -103,15 +103,18 @@ struct Funcgen : Module {
103103 float st = args.sampleTime ;
104104 cascade_mode = params[MODE_PARAM ].getValue () > 0 .5f ;
105105 normal_mode = !cascade_mode;
106+
106107 for (int i = 0 ; i < CHANNEL_COUNT ; i++) {
107108 float rise_time = params[RISE_PARAM + i].getValue ();
108109 float fall_time = params[FALL_PARAM + i].getValue ();
109110 envelope[i].set_rise (rise_time);
110111 envelope[i].set_fall (fall_time);
112+
111113 if (inputs[RISE_CV_INPUT ].isConnected ()) {
112114 rise_time = clamp (rise_time * inputs[RISE_CV_INPUT + i].getVoltage () / 10 .f , 0 .01f , 10 .f );
113115 envelope[i].set_rise (rise_time);
114116 }
117+
115118 if (inputs[FALL_CV_INPUT ].isConnected ()) {
116119 fall_time = clamp (fall_time * inputs[FALL_CV_INPUT + i].getVoltage () / 10 .f , 0 .01f , 10 .f );
117120 envelope[i].set_fall (fall_time);
@@ -123,32 +126,40 @@ struct Funcgen : Module {
123126 if (trigger[i].process (inputs[TRIGGER_INPUT + i].getVoltage ()) || push[i].process (params[PUSH_PARAM + i].getValue ())) {
124127 envelope[i].retrigger ();
125128 }
129+
126130 envelope[i].process (st);
131+
127132 if (eoc_trigger[i].process (envelope[i].eoc )) {
128133 eoc_pulse[i].trigger (1e-3f );
129134 }
135+
130136 outputs[FUNCTION_OUTPUT + i].setVoltage (envelope[i].env );
137+
131138 bool eoc = eoc_pulse[i].process (st);
132139 outputs[EOC_OUTPUT + i].setVoltage (eoc ? 10 .f : 0 .f );
133140 if (eoc && cascade_mode) {
134141 envelope[(i + 1 ) % 4 ].retrigger ();
135142 }
143+
136144 float cascade_output = std::max (envelope[0 ].env , envelope[1 ].env );
137145 cascade_output = std::max (cascade_output, envelope[2 ].env );
138146 cascade_output = std::max (cascade_output, envelope[3 ].env );
139147 outputs[CASCADE_OUTPUT ].setVoltage (cascade_output);
140148 }
149+
141150 if (normal_mode_trigger.process (normal_mode)) {
142151 for (int i = 0 ; i < CHANNEL_COUNT ; i++) {
143152 envelope[i].reset ();
144153 }
145154 }
155+
146156 if (cascade_mode && (cascade_trigger.process (inputs[CASCADE_TRIGGER_INPUPT ].getVoltage ()) || cascade_push.process (params[CASCADE_TRIGGER_PARAM ].getValue ()))) {
147157 envelope[0 ].retrigger ();
148158 envelope[1 ].reset ();
149159 envelope[2 ].reset ();
150160 envelope[3 ].reset ();
151161 }
162+
152163 float a = envelope[0 ].env ;
153164 float b = envelope[1 ].env ;
154165 float c = envelope[2 ].env ;
0 commit comments