Browse Source

v2.9.1 Fix Slew outputs (#63)

tags/v2.9.1^0
Ewan GitHub 2 weeks ago
parent
commit
53f92ff053
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 4 deletions
  1. +7
    -0
      CHANGELOG.md
  2. +6
    -1
      plugin.json
  3. +7
    -3
      src/Slew.cpp

+ 7
- 0
CHANGELOG.md View File

@@ -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)


+ 6
- 1
plugin.json View File

@@ -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",


+ 7
- 3
src/Slew.cpp View File

@@ -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);


Loading…
Cancel
Save