@@ -1,5 +1,12 @@ | |||||
# Change Log | # Change Log | ||||
## v2.9.1 | |||||
* Slew | |||||
* Fix Slew rise/fall outputs | |||||
* Add missing label | |||||
* Misc | |||||
* Add some missing modulargrid links | |||||
## v2.9.0 | ## v2.9.0 | ||||
* MuDi, Slew, Atte, Mixer2, AxBC initial releases | * MuDi, Slew, Atte, Mixer2, AxBC initial releases | ||||
* Fix missing port information (multiple modules) | * Fix missing port information (multiple modules) | ||||
@@ -1,6 +1,6 @@ | |||||
{ | { | ||||
"slug": "Befaco", | "slug": "Befaco", | ||||
"version": "2.9.0", | |||||
"version": "2.9.1", | |||||
"license": "GPL-3.0-or-later", | "license": "GPL-3.0-or-later", | ||||
"name": "Befaco", | "name": "Befaco", | ||||
"brand": "Befaco", | "brand": "Befaco", | ||||
@@ -365,6 +365,7 @@ | |||||
"name": "Mixer", | "name": "Mixer", | ||||
"description": "Utilitarian audio and CV mixer", | "description": "Utilitarian audio and CV mixer", | ||||
"manualUrl": "https://www.befaco.org/mixer-v2/", | "manualUrl": "https://www.befaco.org/mixer-v2/", | ||||
"modularGridUrl": "https://www.modulargrid.net/e/befaco-befaco-mixer", | |||||
"tags": [ | "tags": [ | ||||
"Hardware clone", | "Hardware clone", | ||||
"Mixer", | "Mixer", | ||||
@@ -376,6 +377,7 @@ | |||||
"name": "Atte", | "name": "Atte", | ||||
"description": "Quad Attenuator/Inverter, Splitter, and Offset Generator", | "description": "Quad Attenuator/Inverter, Splitter, and Offset Generator", | ||||
"manualUrl": "https://www.befaco.org/atte/", | "manualUrl": "https://www.befaco.org/atte/", | ||||
"modularGridUrl": "https://www.modulargrid.net/e/befaco-atte", | |||||
"tags": [ | "tags": [ | ||||
"Attenuator", | "Attenuator", | ||||
"Hardware clone", | "Hardware clone", | ||||
@@ -387,6 +389,7 @@ | |||||
"name": "AxBC", | "name": "AxBC", | ||||
"description": "Voltage-Controlled Voltage Processor", | "description": "Voltage-Controlled Voltage Processor", | ||||
"manualUrl": "https://www.befaco.org/axbc/", | "manualUrl": "https://www.befaco.org/axbc/", | ||||
"modularGridUrl": "https://www.modulargrid.net/e/befaco-a-b-c-v4", | |||||
"tags": [ | "tags": [ | ||||
"Ring Modulator", | "Ring Modulator", | ||||
"Attenuator", | "Attenuator", | ||||
@@ -400,6 +403,7 @@ | |||||
"name": "Slew", | "name": "Slew", | ||||
"description": "Voltage-controlled lag processor and slope detector", | "description": "Voltage-controlled lag processor and slope detector", | ||||
"manualUrl": "https://www.befaco.org/slew/", | "manualUrl": "https://www.befaco.org/slew/", | ||||
"modularGridUrl": "https://www.modulargrid.net/e/befaco-slew", | |||||
"tags": [ | "tags": [ | ||||
"Slew Limiter", | "Slew Limiter", | ||||
"Envelope Follower", | "Envelope Follower", | ||||
@@ -412,6 +416,7 @@ | |||||
"name": "MuDi", | "name": "MuDi", | ||||
"description": "Clock Multiple, Conditioner, and Divider in a compact 2HP format", | "description": "Clock Multiple, Conditioner, and Divider in a compact 2HP format", | ||||
"manualUrl": "https://www.befaco.org/mudi/", | "manualUrl": "https://www.befaco.org/mudi/", | ||||
"modularGridUrl": "https://www.modulargrid.net/e/befaco-mudi", | |||||
"tags": [ | "tags": [ | ||||
"Clock generator", | "Clock generator", | ||||
"Clock modulator", | "Clock modulator", | ||||
@@ -47,7 +47,7 @@ struct Slew : Module { | |||||
auto fall = configParam(FALL_PARAM, 0.f, 1.f, 0.f, "Fall"); | 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" | 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."; | "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"); | configInput(IN_INPUT, "In"); | ||||
auto cvIn = configInput(CV_INPUT, "CV"); | auto cvIn = configInput(CV_INPUT, "CV"); | ||||
cvIn->description = "CV input for slew time, 0V to 10V, attenuated by relevant sliders."; | 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()); | const CvMode cvMode = (CvMode)(params[CV_MODE_PARAM].getValue()); | ||||
outputs[OUT_OUTPUT].setChannels(numPolyphonyEngines); | outputs[OUT_OUTPUT].setChannels(numPolyphonyEngines); | ||||
outputs[RISING_OUTPUT].setChannels(numPolyphonyEngines); | |||||
outputs[FALLING_OUTPUT].setChannels(numPolyphonyEngines); | |||||
for (int c = 0; c < numPolyphonyEngines; c += 4) { | for (int c = 0; c < numPolyphonyEngines; c += 4) { | ||||
in[c / 4] = inputs[IN_INPUT].getVoltageSimd<float_4>(c); | 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]); | 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[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()) { | if (lightDivider.process()) { | ||||
@@ -136,8 +140,8 @@ struct Slew : Module { | |||||
else { | else { | ||||
bool anyRising = false, anyFalling = false; | bool anyRising = false, anyFalling = false; | ||||
for (int c = 0; c < numPolyphonyEngines; c++) { | 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 + 0].setBrightness(0.f); | ||||
lights[RISING_LIGHT + 1].setBrightness(0.f); | lights[RISING_LIGHT + 1].setBrightness(0.f); | ||||