@@ -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) | |||
@@ -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", | |||
@@ -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<float_4>(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); | |||