Browse Source

Fix Slew rise/fall outputs

pull/63/head
hemmer 2 weeks ago
parent
commit
8d38d5d966
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

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


+ 6
- 1
plugin.json View File

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


+ 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");
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);


Loading…
Cancel
Save