Skip to content

Commit

Permalink
Cascade: multiply extra outputs by 10
Browse files Browse the repository at this point in the history
  • Loading branch information
alefnull committed Sep 5, 2022
1 parent c51514d commit 54f03f6
Showing 1 changed file with 30 additions and 15 deletions.
45 changes: 30 additions & 15 deletions src/funcgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -271,9 +271,12 @@ struct Funcgen : Module {
float b = envelope[1].env;
float c = envelope[2].env;
float d = envelope[3].env;
outputs[MIN_OUTPUT].setVoltage(std::min(a, std::min(b, std::min(c, d))));
outputs[MAX_OUTPUT].setVoltage(std::max(a, std::max(b, std::max(c, d))));
outputs[AVG_OUTPUT].setVoltage((a + b + c + d) / CHANNEL_COUNT);
// outputs[MIN_OUTPUT].setVoltage(std::min(a, std::min(b, std::min(c, d))));
// outputs[MAX_OUTPUT].setVoltage(std::max(a, std::max(b, std::max(c, d))));
// outputs[AVG_OUTPUT].setVoltage((a + b + c + d) / CHANNEL_COUNT);
outputs[MIN_OUTPUT].setVoltage(std::min(a * 10, std::min(b * 10, std::min(c * 10, d * 10))));
outputs[MAX_OUTPUT].setVoltage(std::max(a * 10, std::max(b * 10, std::max(c * 10, d * 10))));
outputs[AVG_OUTPUT].setVoltage((a * 10 + b * 10 + c * 10 + d * 10) / CHANNEL_COUNT);
outputs[AGTB_OUTPUT].setVoltage(a > b ? 10.f : 0.f);
outputs[AGTC_OUTPUT].setVoltage(a > c ? 10.f : 0.f);
outputs[AGTD_OUTPUT].setVoltage(a > d ? 10.f : 0.f);
Expand All @@ -286,18 +289,30 @@ struct Funcgen : Module {
outputs[DGTA_OUTPUT].setVoltage(d > a ? 10.f : 0.f);
outputs[DGTB_OUTPUT].setVoltage(d > b ? 10.f : 0.f);
outputs[DGTC_OUTPUT].setVoltage(d > c ? 10.f : 0.f);
outputs[ABSAB_OUTPUT].setVoltage(10 - std::abs(a - b));
outputs[ABSAC_OUTPUT].setVoltage(10 - std::abs(a - c));
outputs[ABSAD_OUTPUT].setVoltage(10 - std::abs(a - d));
outputs[ABSBC_OUTPUT].setVoltage(10 - std::abs(b - c));
outputs[ABSBD_OUTPUT].setVoltage(10 - std::abs(b - d));
outputs[ABSCD_OUTPUT].setVoltage(10 - std::abs(c - d));
outputs[ABSBA_OUTPUT].setVoltage(std::abs(a - b));
outputs[ABSCA_OUTPUT].setVoltage(std::abs(a - c));
outputs[ABSCB_OUTPUT].setVoltage(std::abs(b - c));
outputs[ABSDA_OUTPUT].setVoltage(std::abs(a - d));
outputs[ABSDB_OUTPUT].setVoltage(std::abs(b - d));
outputs[ABSDC_OUTPUT].setVoltage(std::abs(c - d));
// outputs[ABSAB_OUTPUT].setVoltage(10 - std::abs(a - b));
// outputs[ABSAC_OUTPUT].setVoltage(10 - std::abs(a - c));
// outputs[ABSAD_OUTPUT].setVoltage(10 - std::abs(a - d));
// outputs[ABSBC_OUTPUT].setVoltage(10 - std::abs(b - c));
// outputs[ABSBD_OUTPUT].setVoltage(10 - std::abs(b - d));
// outputs[ABSCD_OUTPUT].setVoltage(10 - std::abs(c - d));
// outputs[ABSBA_OUTPUT].setVoltage(std::abs(a - b));
// outputs[ABSCA_OUTPUT].setVoltage(std::abs(a - c));
// outputs[ABSCB_OUTPUT].setVoltage(std::abs(b - c));
// outputs[ABSDA_OUTPUT].setVoltage(std::abs(a - d));
// outputs[ABSDB_OUTPUT].setVoltage(std::abs(b - d));
// outputs[ABSDC_OUTPUT].setVoltage(std::abs(c - d));
outputs[ABSAB_OUTPUT].setVoltage(10- std::abs(a * 10 - b * 10));
outputs[ABSAC_OUTPUT].setVoltage(10 - std::abs(a * 10 - c * 10));
outputs[ABSAD_OUTPUT].setVoltage(10 - std::abs(a * 10 - d * 10));
outputs[ABSBC_OUTPUT].setVoltage(10 - std::abs(b * 10 - c * 10));
outputs[ABSBD_OUTPUT].setVoltage(10 - std::abs(b * 10 - d * 10));
outputs[ABSCD_OUTPUT].setVoltage(10 - std::abs(c * 10 - d * 10));
outputs[ABSBA_OUTPUT].setVoltage(std::abs(a * 10 - b * 10));
outputs[ABSCA_OUTPUT].setVoltage(std::abs(a * 10 - c * 10));
outputs[ABSCB_OUTPUT].setVoltage(std::abs(b * 10 - c * 10));
outputs[ABSDA_OUTPUT].setVoltage(std::abs(a * 10 - d * 10));
outputs[ABSDB_OUTPUT].setVoltage(std::abs(b * 10 - d * 10));
outputs[ABSDC_OUTPUT].setVoltage(std::abs(c * 10 - d * 10));

// find the two channels with the highest amplitude
float max_a = 0.f;
Expand Down

0 comments on commit 54f03f6

Please sign in to comment.