diff --git a/CHANGELOG.md b/CHANGELOG.md index 20f9914..04b8626 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## v2.9.1 + * Slew + * Fix Slew rise/fall outputs + * Add missing label + * Misc + * Add some missing modulargrid links + ## v2.9.0 * MuDi, Slew, Atte, Mixer2, AxBC initial releases * Fix missing port information (multiple modules) diff --git a/plugin.json b/plugin.json index dacab15..42b92e2 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "slug": "Befaco", - "version": "2.9.0", + "version": "2.9.1", "license": "GPL-3.0-or-later", "name": "Befaco", "brand": "Befaco", @@ -365,6 +365,7 @@ "name": "Mixer", "description": "Utilitarian audio and CV mixer", "manualUrl": "https://www.befaco.org/mixer-v2/", + "modularGridUrl": "https://www.modulargrid.net/e/befaco-befaco-mixer", "tags": [ "Hardware clone", "Mixer", @@ -376,6 +377,7 @@ "name": "Atte", "description": "Quad Attenuator/Inverter, Splitter, and Offset Generator", "manualUrl": "https://www.befaco.org/atte/", + "modularGridUrl": "https://www.modulargrid.net/e/befaco-atte", "tags": [ "Attenuator", "Hardware clone", @@ -387,6 +389,7 @@ "name": "AxBC", "description": "Voltage-Controlled Voltage Processor", "manualUrl": "https://www.befaco.org/axbc/", + "modularGridUrl": "https://www.modulargrid.net/e/befaco-a-b-c-v4", "tags": [ "Ring Modulator", "Attenuator", @@ -400,6 +403,7 @@ "name": "Slew", "description": "Voltage-controlled lag processor and slope detector", "manualUrl": "https://www.befaco.org/slew/", + "modularGridUrl": "https://www.modulargrid.net/e/befaco-slew", "tags": [ "Slew Limiter", "Envelope Follower", @@ -412,6 +416,7 @@ "name": "MuDi", "description": "Clock Multiple, Conditioner, and Divider in a compact 2HP format", "manualUrl": "https://www.befaco.org/mudi/", + "modularGridUrl": "https://www.modulargrid.net/e/befaco-mudi", "tags": [ "Clock generator", "Clock modulator", diff --git a/src/Slew.cpp b/src/Slew.cpp index 191dab1..375e61f 100644 --- a/src/Slew.cpp +++ b/src/Slew.cpp @@ -47,7 +47,7 @@ struct Slew : Module { auto fall = configParam(FALL_PARAM, 0.f, 1.f, 0.f, "Fall"); fall->description = "Sets the FALL slew time manually, higher is longer slew time.\n" "Acts as an attenuator of CV in when CV sent to fall."; - configSwitch(CV_MODE_PARAM, 0.f, 2.f, 1.f, "", {"Fall", "Rise/Fall", "Rise"}); + configSwitch(CV_MODE_PARAM, 0.f, 2.f, 1.f, "CV Mode", {"Fall", "Rise/Fall", "Rise"}); configInput(IN_INPUT, "In"); auto cvIn = configInput(CV_INPUT, "CV"); cvIn->description = "CV input for slew time, 0V to 10V, attenuated by relevant sliders."; @@ -84,6 +84,8 @@ struct Slew : Module { const CvMode cvMode = (CvMode)(params[CV_MODE_PARAM].getValue()); outputs[OUT_OUTPUT].setChannels(numPolyphonyEngines); + outputs[RISING_OUTPUT].setChannels(numPolyphonyEngines); + outputs[FALLING_OUTPUT].setChannels(numPolyphonyEngines); for (int c = 0; c < numPolyphonyEngines; c += 4) { in[c / 4] = inputs[IN_INPUT].getVoltageSimd(c); @@ -119,6 +121,8 @@ struct Slew : Module { out[c / 4] = ifelse(delta_lt_0 & (out[c / 4] < in[c / 4]), in[c / 4], out[c / 4]); outputs[OUT_OUTPUT].setVoltageSimd(out[c / 4], c); + outputs[RISING_OUTPUT].setVoltageSimd(ifelse(delta_gt_0, 10.f, 0.f), c); + outputs[FALLING_OUTPUT].setVoltageSimd(ifelse(delta_lt_0, 10.f, 0.f), c); } if (lightDivider.process()) { @@ -136,8 +140,8 @@ struct Slew : Module { else { bool anyRising = false, anyFalling = false; for (int c = 0; c < numPolyphonyEngines; c++) { - anyRising |= out[c / 4][c % 4] < in[c / 4][c % 4]; - anyFalling |= out[c / 4][c % 4] > in[c / 4][c % 4]; + anyRising |= delta[c / 4][c % 4] > 0.f; + anyFalling |= delta[c / 4][c % 4] < 0.f; } lights[RISING_LIGHT + 0].setBrightness(0.f); lights[RISING_LIGHT + 1].setBrightness(0.f);