commit dd2cb06c6534111e7ad207fbfc0cdb56c78da5d7
parent 4f1f3f49bd8cbd863f2f948ac2b6718a8dcf9979
Author: Matt Demanett <matt@demanett.net>
Date: Fri, 8 Oct 2021 00:14:18 -0400
Rack2: add labels to each input and output...for now these are derived from the internal IDs and are not very friendly.
Diffstat:
113 files changed, 1266 insertions(+), 12 deletions(-)
diff --git a/src/AD.hpp b/src/AD.hpp
@@ -72,6 +72,13 @@ struct AD : BGModule {
configSwitch(LOOP_PARAM, 0.0f, 1.0f, 0.0f, "Loop", {"Disabled (stop)", "Enabled"});
configSwitch(LINEAR_PARAM, 0.0f, 1.0f, 0.0f, "Linear", {"Disabled (logarithmic)", "Enabled"});
configSwitch(RETRIGGER_PARAM, 0.0f, 1.0f, 1.0f, "Retrigger", {"Disabled (finish cycle)", "Enabled"});
+
+ configInput(TRIGGER_INPUT, "TRIGGER");
+ configInput(ATTACK_INPUT, "ATTACK");
+ configInput(DECAY_INPUT, "DECAY");
+
+ configOutput(ENV_OUTPUT, "ENV");
+ configOutput(EOC_OUTPUT, "EOC");
}
void reset() override;
diff --git a/src/ADSR.hpp b/src/ADSR.hpp
@@ -63,6 +63,10 @@ struct ADSR : BGModule {
configParam(SUSTAIN_PARAM, 0.0f, 1.0f, 1.0f, "Sustain", "%", 0.0f, 100.0f);
configParam<EnvelopeSegmentParamQuantity>(RELEASE_PARAM, 0.0f, 1.0f, 0.31623f, "Release", " s");
configSwitch(LINEAR_PARAM, 0.0f, 1.0f, 0.0f, "Linear", {"Disabled (logarithmic)", "Enabled"});
+
+ configInput(GATE_INPUT, "GATE");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void reset() override;
diff --git a/src/AMRM.hpp b/src/AMRM.hpp
@@ -38,6 +38,14 @@ struct AMRM : BGModule {
configParam(RECTIFY_PARAM, 0.0f, 1.0f, 0.0f, "Rectification", "%", 0.0f, 100.0f);
configParam(DRYWET_PARAM, 0.0f, 1.0f, 1.0f, "Wet mix", "%", 0.0f, 100.0f);
configBypass(CARRIER_INPUT, OUT_OUTPUT);
+
+ configInput(MODULATOR_INPUT, "MODULATOR");
+ configInput(CARRIER_INPUT, "CARRIER");
+ configInput(RECTIFY_INPUT, "RECTIFY");
+ configInput(DRYWET_INPUT, "DRYWET");
+
+ configOutput(OUT_OUTPUT, "OUT");
+ configOutput(RECTIFY_OUTPUT, "RECTIFY");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/ASR.hpp b/src/ASR.hpp
@@ -67,6 +67,13 @@ struct ASR : BGModule {
configParam<EnvelopeSegmentParamQuantity>(RELEASE_PARAM, 0.0f, 1.0f, 0.31623f, "Release", " s");
configParam(SUSTAIN_PARAM, 0.0f, 1.0f, 1.0f, "Sustain", "", 0.0f, 10.0f);
configSwitch(LINEAR_PARAM, 0.0f, 1.0f, 0.0f, "Linear", {"Disabled (logarithmic)", "Enabled"});
+
+ configInput(TRIGGER_INPUT, "TRIGGER");
+ configInput(ATTACK_INPUT, "ATTACK");
+ configInput(RELEASE_INPUT, "RELEASE");
+
+ configOutput(ENV_OUTPUT, "ENV");
+ configOutput(EOC_OUTPUT, "EOC");
}
void reset() override;
diff --git a/src/Additator.hpp b/src/Additator.hpp
@@ -113,6 +113,19 @@ struct Additator : BGModule {
configParam(BALANCE_PARAM, -1.0f, 1.0f, 0.0f, "Balance", "%", 0.0f, 100.0f);
configParam(FILTER_PARAM, minFilter, maxFilter, (maxFilter - minFilter) / 2.0 + minFilter, "Filter");
configSwitch(PHASE_PARAM, 1.0f, 2.0f, 1.0f, "Phase", {"Sine", "Cosine"});
+
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(SYNC_INPUT, "SYNC");
+ configInput(PARTIALS_INPUT, "PARTIALS");
+ configInput(WIDTH_INPUT, "WIDTH");
+ configInput(ODD_SKEW_INPUT, "ODD_SKEW");
+ configInput(EVEN_SKEW_INPUT, "EVEN_SKEW");
+ configInput(GAIN_INPUT, "GAIN");
+ configInput(DECAY_INPUT, "DECAY");
+ configInput(BALANCE_INPUT, "BALANCE");
+ configInput(FILTER_INPUT, "FILTER");
+
+ configOutput(AUDIO_OUTPUT, "AUDIO");
}
void reset() override;
diff --git a/src/AddrSeq.hpp b/src/AddrSeq.hpp
@@ -127,8 +127,14 @@ struct AddrSeq : AddrSeqBase {
configParam<OutputRangeParamQuantity>(OUT6_PARAM, -1.0f, 1.0f, 0.0f, "Step 6", " V");
configParam<OutputRangeParamQuantity>(OUT7_PARAM, -1.0f, 1.0f, 0.0f, "Step 7", " V");
configParam<OutputRangeParamQuantity>(OUT8_PARAM, -1.0f, 1.0f, 0.0f, "Step 8", " V");
- setInputIDs(CLOCK_INPUT, SELECT_INPUT);
+ configInput(CLOCK_INPUT, "CLOCK");
+ configInput(RESET_INPUT, "RESET");
+ configInput(SELECT_INPUT, "SELECT");
+
+ configOutput(OUT_OUTPUT, "OUT");
+
+ setInputIDs(CLOCK_INPUT, SELECT_INPUT);
setLocalElements({
new AddrSeqStep(params[OUT1_PARAM], lights[OUT1_LIGHT]),
new AddrSeqStep(params[OUT2_PARAM], lights[OUT2_LIGHT]),
diff --git a/src/Analyzer.hpp b/src/Analyzer.hpp
@@ -52,6 +52,16 @@ struct Analyzer : AnalyzerBase {
configParam(SMOOTH_PARAM, 0.0f, 1.0f, 0.5f, "Smoothing", " ms", 0.0f, 500.0f);
configSwitch(QUALITY_PARAM, 1.0f, 3.0f, 1.0f, "Analysis quality", {"Good", "High", "Ultra"});
configSwitch(WINDOW_PARAM, 1.0f, 3.0f, 1.0f, "Analysis window type", {"Kaiser", "Hamming", "None"});
+
+ configInput(SIGNALA_INPUT, "SIGNALA");
+ configInput(SIGNALB_INPUT, "SIGNALB");
+ configInput(SIGNALC_INPUT, "SIGNALC");
+ configInput(SIGNALD_INPUT, "SIGNALD");
+
+ configOutput(SIGNALA_OUTPUT, "SIGNALA");
+ configOutput(SIGNALB_OUTPUT, "SIGNALB");
+ configOutput(SIGNALC_OUTPUT, "SIGNALC");
+ configOutput(SIGNALD_OUTPUT, "SIGNALD");
}
virtual ~Analyzer() {
reset();
diff --git a/src/AnalyzerXL.hpp b/src/AnalyzerXL.hpp
@@ -34,6 +34,15 @@ struct AnalyzerXL : AnalyzerBase {
AnalyzerCore::Window _window = AnalyzerCore::WINDOW_KAISER;
AnalyzerXL() : AnalyzerBase(8, NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {
+ configInput(SIGNALA_INPUT, "SIGNALA");
+ configInput(SIGNALB_INPUT, "SIGNALB");
+ configInput(SIGNALC_INPUT, "SIGNALC");
+ configInput(SIGNALD_INPUT, "SIGNALD");
+ configInput(SIGNALE_INPUT, "SIGNALA");
+ configInput(SIGNALF_INPUT, "SIGNALB");
+ configInput(SIGNALG_INPUT, "SIGNALC");
+ configInput(SIGNALH_INPUT, "SIGNALD");
+
_skinnable = false;
}
diff --git a/src/Arp.hpp b/src/Arp.hpp
@@ -138,6 +138,14 @@ struct Arp : BGModule {
configParam<GateLengthParamQuantity>(GATE_LENGTH_PARAM, 0.0f, 1.0f, 0.5f, "Gate length");
configSwitch(HOLD_PARAM, 0.0f, 1.0f, 0.0f, "Hold/latch", {"Disabled", "Enabled"});
+ configInput(CLOCK_INPUT, "CLOCK");
+ configInput(RESET_INPUT, "RESET");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(GATE_INPUT, "GATE");
+
+ configOutput(PITCH_OUTPUT, "PITCH");
+ configOutput(GATE_OUTPUT, "GATE");
+
_currentNotes = new NoteSet();
_playbackNotes = new NoteSet(_currentNotes);
}
diff --git a/src/Assign.hpp b/src/Assign.hpp
@@ -42,6 +42,13 @@ struct Assign : BGModule {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configParam(CHANNELS_PARAM, 1.0f, 16.0f, 0.0f, "Channels");
paramQuantities[CHANNELS_PARAM]->snapEnabled = true;
+
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(GATE_INPUT, "GATE");
+ configInput(RESET_INPUT, "RESET");
+
+ configOutput(PITCH_OUTPUT, "PITCH");
+ configOutput(GATE_OUTPUT, "GATE");
}
void reset() override;
diff --git a/src/Blank3.hpp b/src/Blank3.hpp
@@ -29,6 +29,9 @@ struct Blank3 : BGModule {
Blank3() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(IN_INPUT, "IN");
+
sampleRateChange();
}
diff --git a/src/Blank6.hpp b/src/Blank6.hpp
@@ -29,6 +29,9 @@ struct Blank6 : BGModule {
Blank6() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(IN_INPUT, "IN");
+
sampleRateChange();
}
diff --git a/src/Bool.hpp b/src/Bool.hpp
@@ -28,6 +28,15 @@ struct Bool : BGModule {
Bool() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(A_INPUT, "A");
+ configInput(B_INPUT, "B");
+ configInput(NOT_INPUT, "NOT");
+
+ configOutput(AND_OUTPUT, "AND");
+ configOutput(OR_OUTPUT, "OR");
+ configOutput(XOR_OUTPUT, "XOR");
+ configOutput(NOT_OUTPUT, "NOT");
}
void processAll(const ProcessArgs& args) override;
diff --git a/src/CVD.hpp b/src/CVD.hpp
@@ -46,6 +46,12 @@ struct CVD : BGModule {
paramQuantities[TIME_SCALE_PARAM]->snapEnabled = true;
configParam(MIX_PARAM, -1.0f, 1.0f, 0.0f, "Dry wet mix", "%", 0.0f, 100.0f);
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(TIME_INPUT, "TIME");
+ configInput(MIX_INPUT, "MIX");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void sampleRateChange() override;
diff --git a/src/Chirp.hpp b/src/Chirp.hpp
@@ -92,6 +92,14 @@ struct Chirp : BGModule {
configButton(TRIGGER_PARAM, "Trigger");
configButton(EXPONENTIAL_PARAM, "Exponential");
configButton(LOOP_PARAM, "Loop");
+
+ configInput(FREQUENCY1_INPUT, "FREQUENCY1");
+ configInput(FREQUENCY2_INPUT, "FREQUENCY2");
+ configInput(TIME_INPUT, "TIME");
+ configInput(TRIGGER_INPUT, "TRIGGER");
+
+ configOutput(EOC_OUTPUT, "EOC");
+ configOutput(OUT_OUTPUT, "OUT");
}
void reset() override;
diff --git a/src/Clpr.hpp b/src/Clpr.hpp
@@ -57,6 +57,14 @@ struct Clpr : BGModule {
configSwitch(KNEE_PARAM, 0.0f, 1.0f, 1.0f, "Knee", {"Hard", "Soft"});
configBypass(LEFT_INPUT, LEFT_OUTPUT);
configBypass(RIGHT_INPUT, RIGHT_OUTPUT);
+
+ configInput(LEFT_INPUT, "LEFT");
+ configInput(RIGHT_INPUT, "RIGHT");
+ configInput(THRESHOLD_INPUT, "THRESHOLD");
+ configInput(OUTPUT_GAIN_INPUT, "OUTPUT_GAIN");
+
+ configOutput(LEFT_OUTPUT, "LEFT");
+ configOutput(RIGHT_OUTPUT, "RIGHT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/Cmp.hpp b/src/Cmp.hpp
@@ -55,6 +55,16 @@ struct Cmp : BGModule {
configParam<ScaledSquaringParamQuantity<1>>(LAG_PARAM, 0.0f, 1.0f, 0.1f, "Lag", " s");
configSwitch(OUTPUT_PARAM, 0.0f, 1.0f, 0.0f, "Output", {"+10V", "+/-5V"});
paramQuantities[OUTPUT_PARAM]->snapEnabled = true;
+
+ configInput(A_INPUT, "A");
+ configInput(B_INPUT, "B");
+ configInput(WINDOW_INPUT, "WINDOW");
+ configInput(LAG_INPUT, "LAG");
+
+ configOutput(GREATER_OUTPUT, "GREATER");
+ configOutput(LESS_OUTPUT, "LESS");
+ configOutput(EQUAL_OUTPUT, "EQUAL");
+ configOutput(NOT_EQUAL_OUTPUT, "NOT_EQUAL");
}
void reset() override;
diff --git a/src/CmpDist.hpp b/src/CmpDist.hpp
@@ -68,6 +68,20 @@ struct CmpDist : BGModule {
configParam(DRY_WET_PARAM, -1.0f, 1.0f, 0.0f, "Dry/wet mix", "%", 0.0f, 100.0f);
configParam<AmplifierParamQuantity>(A_DRY_PARAM, 0.0f, 1.0f, 1.0f, "A dry level");
configParam<AmplifierParamQuantity>(B_DRY_PARAM, 0.0f, 1.0f, 1.0f, "B dry level");
+
+ configInput(GT_MIX_INPUT, "GT_MIX");
+ configInput(LT_MIX_INPUT, "LT_MIX");
+ configInput(WINDOW_INPUT, "WINDOW");
+ configInput(DRY_WET_INPUT, "DRY_WET");
+ configInput(A_INPUT, "A");
+ configInput(A_SCALE_INPUT, "A_SCALE");
+ configInput(B_INPUT, "B");
+ configInput(B_SCALE_INPUT, "B_SCALE");
+
+ configOutput(GT_OUTPUT, "GT");
+ configOutput(LT_OUTPUT, "LT");
+ configOutput(EQ_OUTPUT, "EQ");
+ configOutput(MIX_OUTPUT, "MIX");
}
bool active() override;
diff --git a/src/DADSRH.hpp b/src/DADSRH.hpp
@@ -80,6 +80,12 @@ struct DADSRH : TriggerOnLoadModule {
configSwitch(LOOP_PARAM, 0.0f, 1.0f, 1.0f, "Loop", {"Loop", "Stop"});
configSwitch(SPEED_PARAM, 0.0f, 1.0f, 1.0f, "Speed", {"Slow", "Normal"});
configSwitch(RETRIGGER_PARAM, 0.0f, 1.0f, 1.0f, "Retrigger", {"Reset", "Resume attack"});
+
+ configInput(TRIGGER_INPUT, "TRIGGER");
+
+ configOutput(ENV_OUTPUT, "ENV");
+ configOutput(INV_OUTPUT, "INV");
+ configOutput(TRIGGER_OUTPUT, "TRIGGER");
}
void reset() override;
diff --git a/src/DADSRHPlus.hpp b/src/DADSRHPlus.hpp
@@ -91,6 +91,23 @@ struct DADSRHPlus : TriggerOnLoadModule {
configSwitch(LOOP_PARAM, 0.0f, 1.0f, 1.0f, "Loop", {"Loop", "Stop"});
configSwitch(SPEED_PARAM, 0.0f, 1.0f, 1.0f, "Speed", {"Slow", "Normal"});
configSwitch(RETRIGGER_PARAM, 0.0f, 1.0f, 1.0f, "Retrigger", {"Reset", "Resume attack"});
+
+ configInput(DELAY_INPUT, "DELAY");
+ configInput(ATTACK_INPUT, "ATTACK");
+ configInput(DECAY_INPUT, "DECAY");
+ configInput(SUSTAIN_INPUT, "SUSTAIN");
+ configInput(RELEASE_INPUT, "RELEASE");
+ configInput(HOLD_INPUT, "HOLD");
+ configInput(TRIGGER_INPUT, "TRIGGER");
+
+ configOutput(DELAY_OUTPUT, "DELAY");
+ configOutput(ATTACK_OUTPUT, "ATTACK");
+ configOutput(DECAY_OUTPUT, "DECAY");
+ configOutput(SUSTAIN_OUTPUT, "SUSTAIN");
+ configOutput(RELEASE_OUTPUT, "RELEASE");
+ configOutput(ENV_OUTPUT, "ENV");
+ configOutput(INV_OUTPUT, "INV");
+ configOutput(TRIGGER_OUTPUT, "TRIGGER");
}
void reset() override;
diff --git a/src/DGate.hpp b/src/DGate.hpp
@@ -59,6 +59,11 @@ struct DGate : TriggerOnLoadModule {
configParam<EnvelopeSegmentParamQuantity>(GATE_PARAM, 0.0f, 1.0f, 0.31623f, "Gate", " s");
configSwitch(LOOP_PARAM, 0.0f, 1.0f, 1.0f, "Loop", {"Loop", "Stop"});
configButton(TRIGGER_PARAM, "Trigger");
+
+ configInput(TRIGGER_INPUT, "TRIGGER");
+
+ configOutput(GATE_OUTPUT, "GATE");
+ configOutput(END_OUTPUT, "END");
}
void reset() override;
diff --git a/src/Detune.hpp b/src/Detune.hpp
@@ -39,6 +39,13 @@ struct Detune : BGModule {
configParam(CENTS_PARAM, 0.0f, 50.0f, 0.0f, "Cents");
paramQuantities[CENTS_PARAM]->snapEnabled = true;
+ configInput(CV_INPUT, "CV");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(THRU_OUTPUT, "THRU");
+ configOutput(OUT_PLUS_OUTPUT, "OUT_PLUS");
+ configOutput(OUT_MINUS_OUTPUT, "OUT_MINUS");
+
for (int i = 0; i < maxChannels; ++i) {
_lastCents[i] = -1.0f;
_lastInCV[i] = -1000.0f;
diff --git a/src/EQ.hpp b/src/EQ.hpp
@@ -38,6 +38,10 @@ struct EQ : BGModule {
configParam<EQParamQuantity>(MID_PARAM, -1.0f, 1.0f, 0.0f, "Mid", " dB");
configParam<EQParamQuantity>(HIGH_PARAM, -1.0f, 1.0f, 0.0f, "High", " dB");
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
bool active() override;
diff --git a/src/EQS.hpp b/src/EQS.hpp
@@ -44,6 +44,12 @@ struct EQS : BGModule {
configParam<EQParamQuantity>(HIGH_PARAM, -1.0f, 1.0f, 0.0f, "High", " dB");
configBypass(LEFT_INPUT, LEFT_OUTPUT);
configBypass(RIGHT_INPUT, RIGHT_OUTPUT);
+
+ configInput(LEFT_INPUT, "LEFT");
+ configInput(RIGHT_INPUT, "RIGHT");
+
+ configOutput(LEFT_OUTPUT, "LEFT");
+ configOutput(RIGHT_OUTPUT, "RIGHT");
}
bool active() override;
diff --git a/src/Edge.hpp b/src/Edge.hpp
@@ -55,6 +55,12 @@ struct Edge : BGModule {
configParam(RISE_PARAM, -1.0f, 1.0f, 0.1f, "Rising threshold", " V", 0.0f, 10.0f);
configParam(FALL_PARAM, -1.0f, 1.0f, 0.01f, "Falling threshold", " V", 0.0f, 10.0f);
configParam<ScaledSquaringParamQuantity<1000>>(HOLD_PARAM, 0.0f, 1.0f, 0.031623f, "Hold/reset time", " ms");
+
+ configInput(IN_INPUT, "IN");
+
+ configOutput(HIGH_OUTPUT, "HIGH");
+ configOutput(RISE_OUTPUT, "RISE");
+ configOutput(FALL_OUTPUT, "FALL");
}
void reset() override;
diff --git a/src/EightFO.hpp b/src/EightFO.hpp
@@ -144,6 +144,30 @@ struct EightFO : LFOBase {
configParam(PHASE2_PARAM, -1.0, 1.0, 0.0, "Phase 90", "º", 0.0f, 180.0f);
configParam(PHASE1_PARAM, -1.0, 1.0, 0.0, "Phase 45", "º", 0.0f, 180.0f);
configParam(PHASE0_PARAM, -1.0, 1.0, 0.0f, "Phase 0", "º", 0.0f, 180.0f);
+
+ configInput(SAMPLE_PWM_INPUT, "SAMPLE_PWM");
+ configInput(PHASE7_INPUT, "PHASE7");
+ configInput(PHASE6_INPUT, "PHASE6");
+ configInput(PHASE5_INPUT, "PHASE5");
+ configInput(PHASE4_INPUT, "PHASE4");
+ configInput(PHASE3_INPUT, "PHASE3");
+ configInput(PHASE2_INPUT, "PHASE2");
+ configInput(PHASE1_INPUT, "PHASE1");
+ configInput(PHASE0_INPUT, "PHASE0");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(RESET_INPUT, "RESET");
+ configInput(OFFSET_INPUT, "OFFSET");
+ configInput(SCALE_INPUT, "SCALE");
+ configInput(SMOOTH_INPUT, "SMOOTH");
+
+ configOutput(PHASE7_OUTPUT, "PHASE7");
+ configOutput(PHASE6_OUTPUT, "PHASE6");
+ configOutput(PHASE5_OUTPUT, "PHASE5");
+ configOutput(PHASE4_OUTPUT, "PHASE4");
+ configOutput(PHASE3_OUTPUT, "PHASE3");
+ configOutput(PHASE2_OUTPUT, "PHASE2");
+ configOutput(PHASE1_OUTPUT, "PHASE1");
+ configOutput(PHASE0_OUTPUT, "PHASE0");
}
void reset() override;
diff --git a/src/EightOne.hpp b/src/EightOne.hpp
@@ -61,6 +61,20 @@ struct EightOne : AddressableSequenceModule {
paramQuantities[SELECT_PARAM]->snapEnabled = true;
setInputIDs(CLOCK_INPUT, SELECT_INPUT);
configBypass(IN1_INPUT, OUT_OUTPUT);
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+ configInput(CLOCK_INPUT, "CLOCK");
+ configInput(RESET_INPUT, "RESET");
+ configInput(SELECT_INPUT, "SELECT");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void processAlways(const ProcessArgs& args) override;
diff --git a/src/FFB.hpp b/src/FFB.hpp
@@ -88,6 +88,13 @@ struct FFB : BGModule {
configBypass(IN_INPUT, ALL_OUTPUT);
configBypass(IN_INPUT, ODD_OUTPUT);
configBypass(IN_INPUT, EVEN_OUTPUT);
+
+ configInput(IN_INPUT, "IN");
+ configInput(CV_INPUT, "CV");
+
+ configOutput(ALL_OUTPUT, "ALL");
+ configOutput(ODD_OUTPUT, "ODD");
+ configOutput(EVEN_OUTPUT, "EVEN");
}
void sampleRateChange() override;
diff --git a/src/FMOp.hpp b/src/FMOp.hpp
@@ -118,6 +118,16 @@ struct FMOp : BGModule {
configButton(ENV_TO_LEVEL_PARAM, "Level follows envelope");
configButton(ENV_TO_FEEDBACK_PARAM, "Feedback follows envelope");
configButton(ENV_TO_DEPTH_PARAM, "FM depth follows envelope");
+
+ configInput(SUSTAIN_INPUT, "SUSTAIN");
+ configInput(DEPTH_INPUT, "DEPTH");
+ configInput(FEEDBACK_INPUT, "FEEDBACK");
+ configInput(LEVEL_INPUT, "LEVEL");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(GATE_INPUT, "GATE");
+ configInput(FM_INPUT, "FM");
+
+ configOutput(AUDIO_OUTPUT, "AUDIO");
}
void reset() override;
diff --git a/src/FlipFlop.hpp b/src/FlipFlop.hpp
@@ -39,6 +39,16 @@ struct FlipFlop : BGModule {
FlipFlop() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(RESET1_INPUT, "RESET1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(RESET2_INPUT, "RESET2");
+
+ configOutput(A1_OUTPUT, "A1");
+ configOutput(B1_OUTPUT, "B1");
+ configOutput(A2_OUTPUT, "A2");
+ configOutput(B2_OUTPUT, "B2");
}
void reset() override;
diff --git a/src/Follow.hpp b/src/Follow.hpp
@@ -42,6 +42,12 @@ struct Follow : FollowerBase {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configParam(RESPONSE_PARAM, 0.0f, 1.0f, 0.3f, "Smoothing", "%", 0.0f, 100.0f);
configParam<EFGainParamQuantity>(GAIN_PARAM, -1.0f, 1.0f, 0.0f, "Gain", " dB");
+
+ configInput(RESPONSE_INPUT, "RESPONSE");
+ configInput(GAIN_INPUT, "GAIN");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
bool active() override;
diff --git a/src/FourFO.hpp b/src/FourFO.hpp
@@ -112,6 +112,22 @@ struct FourFO : LFOBase {
configParam(PHASE2_PARAM, -1.0, 1.0, 0.0, "Phase 180", "º", 0.0f, 180.0f);
configParam(PHASE1_PARAM, -1.0, 1.0, 0.0, "Phase 90", "º", 0.0f, 180.0f);
configParam(PHASE0_PARAM, -1.0, 1.0, 0.0f, "Phase 0", "º", 0.0f, 180.0f);
+
+ configInput(SAMPLE_PWM_INPUT, "SAMPLE_PWM");
+ configInput(SMOOTH_INPUT, "SMOOTH");
+ configInput(OFFSET_INPUT, "OFFSET");
+ configInput(SCALE_INPUT, "SCALE");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(RESET_INPUT, "RESET");
+ configInput(PHASE0_INPUT, "PHASE0");
+ configInput(PHASE1_INPUT, "PHASE1");
+ configInput(PHASE2_INPUT, "PHASE2");
+ configInput(PHASE3_INPUT, "PHASE3");
+
+ configOutput(PHASE0_OUTPUT, "PHASE0");
+ configOutput(PHASE1_OUTPUT, "PHASE1");
+ configOutput(PHASE2_OUTPUT, "PHASE2");
+ configOutput(PHASE3_OUTPUT, "PHASE3");
}
void reset() override;
diff --git a/src/FourMan.hpp b/src/FourMan.hpp
@@ -41,6 +41,12 @@ struct FourMan : TriggerOnLoadModule {
configButton(TRIGGER2_PARAM, "Trigger 2");
configButton(TRIGGER3_PARAM, "Trigger 3");
configButton(TRIGGER4_PARAM, "Trigger 4");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+
_triggerOnLoad = false;
_initialDelay = new bogaudio::dsp::Timer(APP->engine->getSampleRate(), 0.01f);
}
diff --git a/src/Inv.hpp b/src/Inv.hpp
@@ -50,6 +50,14 @@ struct Inv : BGModule {
configSwitch(LATCH2_PARAM, 0.0f, 1.0f, 0.0f, "Channle 2 latch", {"Disabled", "Enabled"});
configBypass(IN1_INPUT, OUT1_OUTPUT);
configBypass(IN2_INPUT, OUT2_OUTPUT);
+
+ configInput(GATE1_INPUT, "GATE1");
+ configInput(IN1_INPUT, "IN1");
+ configInput(GATE2_INPUT, "GATE2");
+ configInput(IN2_INPUT, "IN2");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
}
void reset() override;
diff --git a/src/LFO.hpp b/src/LFO.hpp
@@ -92,6 +92,20 @@ struct LFO : LFOBase {
configParam(SMOOTH_PARAM, 0.0f, 1.0f, 0.0f, "Smoothing", "%", 0.0f, 100.0f);
configParam(OFFSET_PARAM, -1.0f, 1.0f, 0.0f, "Offset", " V", 0.0f, 5.0f);
configParam(SCALE_PARAM, 0.0f, 1.0f, 1.0f, "Scale", "%", 0.0f, 100.0f);
+
+ configInput(SAMPLE_INPUT, "SAMPLE");
+ configInput(PW_INPUT, "PW");
+ configInput(OFFSET_INPUT, "OFFSET");
+ configInput(SCALE_INPUT, "SCALE");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(RESET_INPUT, "RESET");
+
+ configOutput(RAMP_UP_OUTPUT, "RAMP_UP");
+ configOutput(RAMP_DOWN_OUTPUT, "RAMP_DOWN");
+ configOutput(SQUARE_OUTPUT, "SQUARE");
+ configOutput(TRIANGLE_OUTPUT, "TRIANGLE");
+ configOutput(SINE_OUTPUT, "SINE");
+ configOutput(STEPPED_OUTPUT, "STEPPED");
}
void reset() override;
diff --git a/src/LLFO.hpp b/src/LLFO.hpp
@@ -91,6 +91,11 @@ struct LLFO : LFOBase {
configButton(SLOW_PARAM, "Slow mode");
configParam(OFFSET_PARAM, -1.0f, 1.0f, 0.0f, "Offset", " V", 0.0f, 5.0f);
configParam(SCALE_PARAM, 0.0f, 1.0f, 1.0f, "Scale", "%", 0.0f, 100.0f);
+
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(RESET_INPUT, "RESET");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void reset() override;
diff --git a/src/LLPG.hpp b/src/LLPG.hpp
@@ -52,6 +52,11 @@ struct LLPG : BGModule {
configParam(SHAPE_PARAM, -1.0f, 1.0f, -0.25f, "Shape");
configParam<ScaledSquaringParamQuantity<(int)maxFilterCutoff>>(LPF_PARAM, 0.0f, 1.0f, 0.0f, "LPF cutoff", " HZ");
configParam(VCA_PARAM, 0.0f, 1.0f, 0.0f, "VCA level", "%", 0.0f, 100.0f);
+
+ configInput(GATE_INPUT, "GATE");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void reset() override;
diff --git a/src/LPG.hpp b/src/LPG.hpp
@@ -69,6 +69,14 @@ struct LPG : LPGEnvBaseModule {
configParam(VCA_ENV_PARAM, -1.0f, 1.0f, 1.0f, "VCA envelope amount", "%", 0.0f, 100.0f);
configParam(VCA_BIAS_PARAM, 0.0f, 1.0f, 0.0f, "VCA level", "%", 0.0f, 100.0f);
configButton(LINEAR_VCA_PARAM, "Linear VCA mode");
+
+ configInput(RESPONSE_INPUT, "RESPONSE");
+ configInput(LPF_INPUT, "LPF");
+ configInput(VCA_INPUT, "VCA");
+ configInput(GATE_INPUT, "GATE");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void reset() override;
diff --git a/src/LVCF.hpp b/src/LVCF.hpp
@@ -75,6 +75,11 @@ struct LVCF : BGModule {
configParam(Q_PARAM, 0.0f, 1.0f, 0.0f, "Resonance / bandwidth", "%", 0.0f, 100.0f);
configSwitch(MODE_PARAM, 0.0f, 3.0f, 0.0f, "Mode", {"Lowpass", "Highpass", "Bandpass", "Band reject"});
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(IN_INPUT, "IN");
+ configInput(FREQUENCY_CV_INPUT, "FREQUENCY_CV");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/LVCO.hpp b/src/LVCO.hpp
@@ -65,6 +65,12 @@ struct LVCO : VCOBase {
configButton(SLOW_PARAM, "Slow mode");
configSwitch(WAVE_PARAM, 0.0f, 5.0f, 0.0f, "Waveform", {"Sine", "Triangle", "Saw", "Square", "25% Pulse", "10% Pulse"});
configParam(FM_DEPTH_PARAM, 0.0f, 1.0f, 0.0f, "FM depth", "%", 0.0f, 100.0f);
+
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(FM_INPUT, "FM");
+ configInput(SYNC_INPUT, "SYNC");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/Lag.hpp b/src/Lag.hpp
@@ -37,6 +37,12 @@ struct Lag : BGModule {
configParam(TIME_SCALE_PARAM, 0.0f, 2.0f, 1.0f, "time_scale");
paramQuantities[TIME_SCALE_PARAM]->snapEnabled = true;
configParam(SHAPE_PARAM, -1.0f, 1.0f, 0.0f, "shape");
+
+ configInput(TIME_INPUT, "TIME");
+ configInput(SHAPE_INPUT, "SHAPE");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
bool active() override;
diff --git a/src/Lgsw.hpp b/src/Lgsw.hpp
@@ -61,6 +61,14 @@ struct Lgsw : SaveLatchToPatchModule {
configButton(GATE_PARAM, "Gate");
configSwitch(LATCH_PARAM, 0.0f, 1.0f, 0.0f, "Latch", {"Disabled", "Enabled"});
configSwitch(LOGIC_MODE_PARAM, 0.0f, 4.0f, 0.0f, "Logic", {"OR", "AND", "XOR", "NOR", "NAND"});
+
+ configInput(GATE_A_INPUT, "GATE_A");
+ configInput(GATE_B_INPUT, "GATE_B");
+ configInput(LOGIC_MODE_INPUT, "LOGIC_MODE");
+ configInput(HIGH_INPUT, "HIGH");
+ configInput(LOW_INPUT, "LOW");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void resetChannel(int c);
diff --git a/src/Lmtr.hpp b/src/Lmtr.hpp
@@ -71,6 +71,14 @@ struct Lmtr : BGModule {
configSwitch(KNEE_PARAM, 0.0f, 1.0f, 1.0f, "Knee", {"Hard", "Soft"});
configBypass(LEFT_INPUT, LEFT_OUTPUT);
configBypass(RIGHT_INPUT, RIGHT_OUTPUT);
+
+ configInput(LEFT_INPUT, "LEFT");
+ configInput(RIGHT_INPUT, "RIGHT");
+ configInput(THRESHOLD_INPUT, "THRESHOLD");
+ configInput(OUTPUT_GAIN_INPUT, "OUTPUT_GAIN");
+
+ configOutput(LEFT_OUTPUT, "LEFT");
+ configOutput(RIGHT_OUTPUT, "RIGHT");
}
void sampleRateChange() override;
diff --git a/src/Manual.hpp b/src/Manual.hpp
@@ -39,6 +39,16 @@ struct Manual : TriggerOnLoadModule {
Manual() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configButton(TRIGGER_PARAM, "Trigger");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
+
_triggerOnLoad = false;
_initialDelay = new bogaudio::dsp::Timer(APP->engine->getSampleRate(), 0.01f);
}
diff --git a/src/Matrix18.hpp b/src/Matrix18.hpp
@@ -47,6 +47,17 @@ struct Matrix18 : KnobMatrixModule {
configParam(MIX6_PARAM, -1.0f, 1.0f, 0.0f, "Route 6", "%", 0.0f, 100.0f);
configParam(MIX7_PARAM, -1.0f, 1.0f, 0.0f, "Route 7", "%", 0.0f, 100.0f);
configParam(MIX8_PARAM, -1.0f, 1.0f, 0.0f, "Route 8", "%", 0.0f, 100.0f);
+
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
}
};
diff --git a/src/Matrix44.hpp b/src/Matrix44.hpp
@@ -63,6 +63,17 @@ struct Matrix44 : Matrix44Base {
configParam(MIX34_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3D", "%", 0.0f, 100.0f);
configParam(MIX44_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4D", "%", 0.0f, 100.0f);
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+
+
setLocalElements({new Matrix44Element(NULL, NULL, NULL)});
registerBase();
setExpanderModelPredicate([](Model* m) { return m == modelMatrix44Cvm; });
diff --git a/src/Matrix44Cvm.hpp b/src/Matrix44Cvm.hpp
@@ -74,6 +74,23 @@ struct Matrix44Cvm : Matrix44CvmBase {
configSwitch(MUTE34_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3D", muteLabels);
configSwitch(MUTE44_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4D", muteLabels);
+ configInput(CV11_INPUT, "CV11");
+ configInput(CV21_INPUT, "CV21");
+ configInput(CV31_INPUT, "CV31");
+ configInput(CV41_INPUT, "CV41");
+ configInput(CV12_INPUT, "CV12");
+ configInput(CV22_INPUT, "CV22");
+ configInput(CV32_INPUT, "CV32");
+ configInput(CV42_INPUT, "CV42");
+ configInput(CV13_INPUT, "CV13");
+ configInput(CV23_INPUT, "CV23");
+ configInput(CV33_INPUT, "CV33");
+ configInput(CV43_INPUT, "CV43");
+ configInput(CV14_INPUT, "CV14");
+ configInput(CV24_INPUT, "CV24");
+ configInput(CV34_INPUT, "CV34");
+ configInput(CV44_INPUT, "CV44");
+
_mutes = new Param*[16];
_cvs = new Input*[16];
for (int i = 0; i < 16; ++i) {
diff --git a/src/Matrix81.hpp b/src/Matrix81.hpp
@@ -47,6 +47,17 @@ struct Matrix81 : KnobMatrixModule {
configParam(MIX6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6", "%", 0.0f, 100.0f);
configParam(MIX7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7", "%", 0.0f, 100.0f);
configParam(MIX8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8", "%", 0.0f, 100.0f);
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
};
diff --git a/src/Matrix88.hpp b/src/Matrix88.hpp
@@ -167,6 +167,24 @@ struct Matrix88 : Matrix88Base {
configParam(MIX78_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7H", "%", 0.0f, 100.0f);
configParam(MIX88_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8H", "%", 0.0f, 100.0f);
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
+
setLocalElements({new Matrix88Element(NULL, NULL, NULL)});
registerBase();
setExpanderModelPredicate([](Model* m) { return m == modelMatrix88Cv || m == modelMatrix88M; });
diff --git a/src/Matrix88Cv.hpp b/src/Matrix88Cv.hpp
@@ -87,6 +87,72 @@ struct Matrix88Cv : Matrix88CvBase {
Matrix88Cv() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(CV11_INPUT, "CV11");
+ configInput(CV21_INPUT, "CV21");
+ configInput(CV31_INPUT, "CV31");
+ configInput(CV41_INPUT, "CV41");
+ configInput(CV51_INPUT, "CV51");
+ configInput(CV61_INPUT, "CV61");
+ configInput(CV71_INPUT, "CV71");
+ configInput(CV81_INPUT, "CV81");
+ configInput(CV12_INPUT, "CV12");
+ configInput(CV22_INPUT, "CV22");
+ configInput(CV32_INPUT, "CV32");
+ configInput(CV42_INPUT, "CV42");
+ configInput(CV52_INPUT, "CV52");
+ configInput(CV62_INPUT, "CV62");
+ configInput(CV72_INPUT, "CV72");
+ configInput(CV82_INPUT, "CV82");
+ configInput(CV13_INPUT, "CV13");
+ configInput(CV23_INPUT, "CV23");
+ configInput(CV33_INPUT, "CV33");
+ configInput(CV43_INPUT, "CV43");
+ configInput(CV53_INPUT, "CV53");
+ configInput(CV63_INPUT, "CV63");
+ configInput(CV73_INPUT, "CV73");
+ configInput(CV83_INPUT, "CV83");
+ configInput(CV14_INPUT, "CV14");
+ configInput(CV24_INPUT, "CV24");
+ configInput(CV34_INPUT, "CV34");
+ configInput(CV44_INPUT, "CV44");
+ configInput(CV54_INPUT, "CV54");
+ configInput(CV64_INPUT, "CV64");
+ configInput(CV74_INPUT, "CV74");
+ configInput(CV84_INPUT, "CV84");
+ configInput(CV15_INPUT, "CV15");
+ configInput(CV25_INPUT, "CV25");
+ configInput(CV35_INPUT, "CV35");
+ configInput(CV45_INPUT, "CV45");
+ configInput(CV55_INPUT, "CV55");
+ configInput(CV65_INPUT, "CV65");
+ configInput(CV75_INPUT, "CV75");
+ configInput(CV85_INPUT, "CV85");
+ configInput(CV16_INPUT, "CV16");
+ configInput(CV26_INPUT, "CV26");
+ configInput(CV36_INPUT, "CV36");
+ configInput(CV46_INPUT, "CV46");
+ configInput(CV56_INPUT, "CV56");
+ configInput(CV66_INPUT, "CV66");
+ configInput(CV76_INPUT, "CV76");
+ configInput(CV86_INPUT, "CV86");
+ configInput(CV17_INPUT, "CV17");
+ configInput(CV27_INPUT, "CV27");
+ configInput(CV37_INPUT, "CV37");
+ configInput(CV47_INPUT, "CV47");
+ configInput(CV57_INPUT, "CV57");
+ configInput(CV67_INPUT, "CV67");
+ configInput(CV77_INPUT, "CV77");
+ configInput(CV87_INPUT, "CV87");
+ configInput(CV18_INPUT, "CV18");
+ configInput(CV28_INPUT, "CV28");
+ configInput(CV38_INPUT, "CV38");
+ configInput(CV48_INPUT, "CV48");
+ configInput(CV58_INPUT, "CV58");
+ configInput(CV68_INPUT, "CV68");
+ configInput(CV78_INPUT, "CV78");
+ configInput(CV88_INPUT, "CV88");
+
_cvs = new Input*[64];
for (int i = 0; i < 64; ++i) {
_cvs[i] = &inputs[CV11_INPUT + i];
diff --git a/src/MegaGate.hpp b/src/MegaGate.hpp
@@ -129,6 +129,26 @@ struct MegaGate : LPGEnvBaseModule {
configParam(VCA_ENV_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "VCA envelope amount CV", "%", 0.0f, 100.0f);
configParam(VCA_BIAS_PARAM, 0.0f, 1.0f, 0.0f, "VCA level", "%", 0.0f, 100.0f);
configParam(VCA_BIAS_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "VCA level CV", "%", 0.0f, 100.0f);
+
+ configInput(RISE_INPUT, "RISE");
+ configInput(FALL_INPUT, "FALL");
+ configInput(MINIMUM_GATE_INPUT, "MINIMUM_GATE");
+ configInput(TILT_INPUT, "TILT");
+ configInput(VELOCITY_INPUT, "VELOCITY");
+ configInput(SHAPE_INPUT, "SHAPE");
+ configInput(LEFT_INPUT, "LEFT");
+ configInput(RIGHT_INPUT, "RIGHT");
+ configInput(GATE_INPUT, "GATE");
+ configInput(LPF_ENV_INPUT, "LPF_ENV");
+ configInput(LPF_BIAS_INPUT, "LPF_BIAS");
+ configInput(HPF_ENV_INPUT, "HPF_ENV");
+ configInput(HPF_BIAS_INPUT, "HPF_BIAS");
+ configInput(VCA_ENV_INPUT, "VCA_ENV");
+ configInput(VCA_BIAS_INPUT, "VCA_BIAS");
+
+ configOutput(ENV_OUTPUT, "ENV");
+ configOutput(LEFT_OUTPUT, "LEFT");
+ configOutput(RIGHT_OUTPUT, "RIGHT");
}
void reset() override;
diff --git a/src/Mix1.hpp b/src/Mix1.hpp
@@ -38,6 +38,12 @@ struct Mix1 : LinearCVMixerModule {
configParam(LEVEL_PARAM, 0.0f, 1.0f, fabsf(MixerChannel::minDecibels) / (MixerChannel::maxDecibels - MixerChannel::minDecibels), "Level", "dB", 0.0f, MixerChannel::maxDecibels - MixerChannel::minDecibels, MixerChannel::minDecibels);
configSwitch(MUTE_PARAM, 0.0f, 1.0f, 0.0f, "Mute", {"Unmuted", "Muted"});
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(MUTE_INPUT, "MUTE");
+ configInput(LEVEL_INPUT, "LEVEL");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void sampleRateChange() override;
diff --git a/src/Mix2.hpp b/src/Mix2.hpp
@@ -60,6 +60,14 @@ struct Mix2 : LinearCVMixerModule {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configParam(LEVEL_PARAM, 0.0f, 1.0f, fabsf(MixerChannel::minDecibels) / (MixerChannel::maxDecibels - MixerChannel::minDecibels), "Level", "dB", 0.0f, MixerChannel::maxDecibels - MixerChannel::minDecibels, MixerChannel::minDecibels);
configSwitch(MUTE_PARAM, 0.0f, 1.0f, 0.0f, "Mute", {"Unmuted", "Muted"});
+
+ configInput(LEVEL_INPUT, "LEVEL");
+ configInput(MUTE_INPUT, "MUTE");
+ configInput(L_INPUT, "L");
+ configInput(R_INPUT, "R");
+
+ configOutput(L_OUTPUT, "L");
+ configOutput(R_OUTPUT, "R");
}
void sampleRateChange() override;
diff --git a/src/Mix4.hpp b/src/Mix4.hpp
@@ -88,6 +88,23 @@ struct Mix4 : ExpandableModule<Mix4ExpanderMessage, DimmableMixerModule> {
getParamQuantity(MIX_MUTE_PARAM)->randomizeEnabled = false;
getParamQuantity(MIX_DIM_PARAM)->randomizeEnabled = false;
+ configInput(CV1_INPUT, "CV1");
+ configInput(PAN1_INPUT, "PAN1");
+ configInput(IN1_INPUT, "IN1");
+ configInput(CV2_INPUT, "CV2");
+ configInput(PAN2_INPUT, "PAN2");
+ configInput(IN2_INPUT, "IN2");
+ configInput(CV3_INPUT, "CV3");
+ configInput(PAN3_INPUT, "PAN3");
+ configInput(IN3_INPUT, "IN3");
+ configInput(CV4_INPUT, "CV4");
+ configInput(PAN4_INPUT, "PAN4");
+ configInput(IN4_INPUT, "IN4");
+ configInput(MIX_CV_INPUT, "MIX_CV");
+
+ configOutput(L_OUTPUT, "L");
+ configOutput(R_OUTPUT, "R");
+
_channels[0] = new MixerChannel(params[LEVEL1_PARAM], params[MUTE1_PARAM], inputs[CV1_INPUT]);
_channels[1] = new MixerChannel(params[LEVEL2_PARAM], params[MUTE2_PARAM], inputs[CV2_INPUT]);
_channels[2] = new MixerChannel(params[LEVEL3_PARAM], params[MUTE3_PARAM], inputs[CV3_INPUT]);
diff --git a/src/Mix4x.hpp b/src/Mix4x.hpp
@@ -103,6 +103,23 @@ struct Mix4x : ExpanderModule<Mix4ExpanderMessage, BGModule> {
configParam<AmplifierParamQuantity>(LEVEL_A_PARAM, 0.0f, 1.0f, 0.8f, "A return level");
configParam<AmplifierParamQuantity>(LEVEL_B_PARAM, 0.0f, 1.0f, 0.8f, "B return level");
+ configInput(A1_INPUT, "A1");
+ configInput(B1_INPUT, "B1");
+ configInput(A2_INPUT, "A2");
+ configInput(B2_INPUT, "B2");
+ configInput(A3_INPUT, "A3");
+ configInput(B3_INPUT, "B3");
+ configInput(A4_INPUT, "A4");
+ configInput(B4_INPUT, "B4");
+ configInput(L_A_INPUT, "L_A");
+ configInput(R_A_INPUT, "R_A");
+ configInput(LEVEL_A_INPUT, "LEVEL_A");
+ configInput(L_B_INPUT, "L_B");
+ configInput(R_B_INPUT, "R_B");
+
+ configOutput(SEND_A_OUTPUT, "SEND_A");
+ configOutput(SEND_B_OUTPUT, "SEND_B");
+
_channels[0] = new MixerExpanderChannel(params[LOW1_PARAM], params[MID1_PARAM], params[HIGH1_PARAM], params[A1_PARAM], params[B1_PARAM], params[PRE_A1_PARAM], params[PRE_B1_PARAM], inputs[A1_INPUT], inputs[B1_INPUT]);
_channels[1] = new MixerExpanderChannel(params[LOW2_PARAM], params[MID2_PARAM], params[HIGH2_PARAM], params[A2_PARAM], params[B2_PARAM], params[PRE_A2_PARAM], params[PRE_B2_PARAM], inputs[A2_INPUT], inputs[B2_INPUT]);
_channels[2] = new MixerExpanderChannel(params[LOW3_PARAM], params[MID3_PARAM], params[HIGH3_PARAM], params[A3_PARAM], params[B3_PARAM], params[PRE_A3_PARAM], params[PRE_B3_PARAM], inputs[A3_INPUT], inputs[B3_INPUT]);
diff --git a/src/Mix8.hpp b/src/Mix8.hpp
@@ -128,6 +128,35 @@ struct Mix8 : ExpandableModule<Mix8ExpanderMessage, DimmableMixerModule> {
getParamQuantity(MIX_MUTE_PARAM)->randomizeEnabled = false;
getParamQuantity(MIX_DIM_PARAM)->randomizeEnabled = false;
+ configInput(CV1_INPUT, "CV1");
+ configInput(PAN1_INPUT, "PAN1");
+ configInput(IN1_INPUT, "IN1");
+ configInput(CV2_INPUT, "CV2");
+ configInput(PAN2_INPUT, "PAN2");
+ configInput(IN2_INPUT, "IN2");
+ configInput(CV3_INPUT, "CV3");
+ configInput(PAN3_INPUT, "PAN3");
+ configInput(IN3_INPUT, "IN3");
+ configInput(CV4_INPUT, "CV4");
+ configInput(PAN4_INPUT, "PAN4");
+ configInput(IN4_INPUT, "IN4");
+ configInput(CV5_INPUT, "CV5");
+ configInput(PAN5_INPUT, "PAN5");
+ configInput(IN5_INPUT, "IN5");
+ configInput(CV6_INPUT, "CV6");
+ configInput(PAN6_INPUT, "PAN6");
+ configInput(IN6_INPUT, "IN6");
+ configInput(CV7_INPUT, "CV7");
+ configInput(PAN7_INPUT, "PAN7");
+ configInput(IN7_INPUT, "IN7");
+ configInput(CV8_INPUT, "CV8");
+ configInput(PAN8_INPUT, "PAN8");
+ configInput(IN8_INPUT, "IN8");
+ configInput(MIX_CV_INPUT, "MIX_CV");
+
+ configOutput(L_OUTPUT, "L");
+ configOutput(R_OUTPUT, "R");
+
_channels[0] = new MixerChannel(params[LEVEL1_PARAM], params[MUTE1_PARAM], inputs[CV1_INPUT]);
_channels[1] = new MixerChannel(params[LEVEL2_PARAM], params[MUTE2_PARAM], inputs[CV2_INPUT]);
_channels[2] = new MixerChannel(params[LEVEL3_PARAM], params[MUTE3_PARAM], inputs[CV3_INPUT]);
diff --git a/src/Mix8x.hpp b/src/Mix8x.hpp
@@ -166,6 +166,31 @@ struct Mix8x : ExpanderModule<Mix8ExpanderMessage, BGModule> {
configParam<AmplifierParamQuantity>(LEVEL_A_PARAM, 0.0f, 1.0f, 0.8f, "A return level");
configParam<AmplifierParamQuantity>(LEVEL_B_PARAM, 0.0f, 1.0f, 0.8f, "B return level");
+ configInput(A1_INPUT, "A1");
+ configInput(B1_INPUT, "B1");
+ configInput(A2_INPUT, "A2");
+ configInput(B2_INPUT, "B2");
+ configInput(A3_INPUT, "A3");
+ configInput(B3_INPUT, "B3");
+ configInput(A4_INPUT, "A4");
+ configInput(B4_INPUT, "B4");
+ configInput(A5_INPUT, "A5");
+ configInput(B5_INPUT, "B5");
+ configInput(A6_INPUT, "A6");
+ configInput(B6_INPUT, "B6");
+ configInput(A7_INPUT, "A7");
+ configInput(B7_INPUT, "B7");
+ configInput(A8_INPUT, "A8");
+ configInput(B8_INPUT, "B8");
+ configInput(L_A_INPUT, "L_A");
+ configInput(R_A_INPUT, "R_A");
+ configInput(LEVEL_A_INPUT, "LEVEL_A");
+ configInput(L_B_INPUT, "L_B");
+ configInput(R_B_INPUT, "R_B");
+
+ configOutput(SEND_A_OUTPUT, "SEND_A");
+ configOutput(SEND_B_OUTPUT, "SEND_B");
+
_channels[0] = new MixerExpanderChannel(params[LOW1_PARAM], params[MID1_PARAM], params[HIGH1_PARAM], params[A1_PARAM], params[B1_PARAM], params[PRE_A1_PARAM], params[PRE_B1_PARAM], inputs[A1_INPUT], inputs[B1_INPUT]);
_channels[1] = new MixerExpanderChannel(params[LOW2_PARAM], params[MID2_PARAM], params[HIGH2_PARAM], params[A2_PARAM], params[B2_PARAM], params[PRE_A2_PARAM], params[PRE_B2_PARAM], inputs[A2_INPUT], inputs[B2_INPUT]);
_channels[2] = new MixerExpanderChannel(params[LOW3_PARAM], params[MID3_PARAM], params[HIGH3_PARAM], params[A3_PARAM], params[B3_PARAM], params[PRE_A3_PARAM], params[PRE_B3_PARAM], inputs[A3_INPUT], inputs[B3_INPUT]);
diff --git a/src/Mono.hpp b/src/Mono.hpp
@@ -44,6 +44,10 @@ struct Mono : BGModule {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configParam(COMPRESSION_PARAM, 0.0f, 1.0f, 0.2f, "Compression", "", 0.0f, 10.0f);
configParam<AmplifierParamQuantity>(LEVEL_PARAM, 0.0f, 1.0f, 1.0f, "Output level");
+
+ configInput(POLY_INPUT, "POLY");
+
+ configOutput(MONO_OUTPUT, "MONO");
}
void sampleRateChange() override;
diff --git a/src/Mult.hpp b/src/Mult.hpp
@@ -29,6 +29,16 @@ struct Mult : BGModule {
Mult() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(INA_INPUT, "INA");
+ configInput(INB_INPUT, "INB");
+
+ configOutput(OUTA1_OUTPUT, "OUTA1");
+ configOutput(OUTA2_OUTPUT, "OUTA2");
+ configOutput(OUTA3_OUTPUT, "OUTA3");
+ configOutput(OUTB1_OUTPUT, "OUTB1");
+ configOutput(OUTB2_OUTPUT, "OUTB2");
+ configOutput(OUTB3_OUTPUT, "OUTB3");
}
void processAll(const ProcessArgs& args) override;
diff --git a/src/Mumix.hpp b/src/Mumix.hpp
@@ -60,6 +60,17 @@ struct Mumix : MatrixBaseModule {
configSwitch(MUTE6_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6", {"Unmuted", "Muted", "Soloed", "Soloed"});
configSwitch(MUTE7_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7", {"Unmuted", "Muted", "Soloed", "Soloed"});
configSwitch(MUTE8_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8", {"Unmuted", "Muted", "Soloed", "Soloed"});
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void sampleRateChange() override;
diff --git a/src/Mute8.hpp b/src/Mute8.hpp
@@ -95,6 +95,32 @@ struct Mute8 : BGModule {
configBypass(INPUT6_INPUT, OUTPUT6_OUTPUT);
configBypass(INPUT7_INPUT, OUTPUT7_OUTPUT);
configBypass(INPUT8_INPUT, OUTPUT8_OUTPUT);
+
+ configInput(INPUT1_INPUT, "INPUT1");
+ configInput(INPUT2_INPUT, "INPUT2");
+ configInput(INPUT3_INPUT, "INPUT3");
+ configInput(INPUT4_INPUT, "INPUT4");
+ configInput(INPUT5_INPUT, "INPUT5");
+ configInput(INPUT6_INPUT, "INPUT6");
+ configInput(INPUT7_INPUT, "INPUT7");
+ configInput(INPUT8_INPUT, "INPUT8");
+ configInput(MUTE1_INPUT, "MUTE1");
+ configInput(MUTE2_INPUT, "MUTE2");
+ configInput(MUTE3_INPUT, "MUTE3");
+ configInput(MUTE4_INPUT, "MUTE4");
+ configInput(MUTE5_INPUT, "MUTE5");
+ configInput(MUTE6_INPUT, "MUTE6");
+ configInput(MUTE7_INPUT, "MUTE7");
+ configInput(MUTE8_INPUT, "MUTE8");
+
+ configOutput(OUTPUT1_OUTPUT, "OUTPUT1");
+ configOutput(OUTPUT2_OUTPUT, "OUTPUT2");
+ configOutput(OUTPUT3_OUTPUT, "OUTPUT3");
+ configOutput(OUTPUT4_OUTPUT, "OUTPUT4");
+ configOutput(OUTPUT5_OUTPUT, "OUTPUT5");
+ configOutput(OUTPUT6_OUTPUT, "OUTPUT6");
+ configOutput(OUTPUT7_OUTPUT, "OUTPUT7");
+ configOutput(OUTPUT8_OUTPUT, "OUTPUT8");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/Noise.hpp b/src/Noise.hpp
@@ -38,6 +38,15 @@ struct Noise : PolyChannelsModule {
Noise() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(ABS_INPUT, "ABS");
+
+ configOutput(WHITE_OUTPUT, "WHITE");
+ configOutput(PINK_OUTPUT, "PINK");
+ configOutput(RED_OUTPUT, "RED");
+ configOutput(GAUSS_OUTPUT, "GAUSS");
+ configOutput(ABS_OUTPUT, "ABS");
+ configOutput(BLUE_OUTPUT, "BLUE");
}
void processAll(const ProcessArgs& args) override;
diff --git a/src/Nsgt.hpp b/src/Nsgt.hpp
@@ -71,6 +71,14 @@ struct Nsgt : BGModule {
configSwitch(KNEE_PARAM, 0.0f, 1.0f, 1.0f, "Knee", {"Hard", "Soft"});
configBypass(LEFT_INPUT, LEFT_OUTPUT);
configBypass(RIGHT_INPUT, RIGHT_OUTPUT);
+
+ configInput(LEFT_INPUT, "LEFT");
+ configInput(RIGHT_INPUT, "RIGHT");
+ configInput(THRESHOLD_INPUT, "THRESHOLD");
+ configInput(RATIO_INPUT, "RATIO");
+
+ configOutput(LEFT_OUTPUT, "LEFT");
+ configOutput(RIGHT_OUTPUT, "RIGHT");
}
void sampleRateChange() override;
diff --git a/src/Offset.hpp b/src/Offset.hpp
@@ -8,20 +8,20 @@ extern Model* modelOffset;
namespace bogaudio {
struct Offset : DisableOutputLimitModule {
- enum ParamIds {
+ enum ParamsIds {
OFFSET_PARAM,
SCALE_PARAM,
NUM_PARAMS
};
- enum InputIds {
+ enum InputsIds {
OFFSET_INPUT,
SCALE_INPUT,
IN_INPUT,
NUM_INPUTS
};
- enum OutputIds {
+ enum OutputsIds {
OUT_OUTPUT,
NUM_OUTPUTS
};
@@ -33,6 +33,12 @@ struct Offset : DisableOutputLimitModule {
configParam(OFFSET_PARAM, -1.0f, 1.0f, 0.0f, "Offset", " V", 0.0f, 10.0f);
configParam<TenXSquaringParamQuantity>(SCALE_PARAM, -1.0f, 1.0f, 0.31623f, "Scale", "x");
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(OFFSET_INPUT, "OFFSET");
+ configInput(SCALE_INPUT, "SCALE");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/OneEight.hpp b/src/OneEight.hpp
@@ -61,6 +61,20 @@ struct OneEight : AddressableSequenceModule {
paramQuantities[SELECT_PARAM]->snapEnabled = true;
setInputIDs(CLOCK_INPUT, SELECT_INPUT);
configBypass(IN_INPUT, OUT1_OUTPUT);
+
+ configInput(CLOCK_INPUT, "CLOCK");
+ configInput(RESET_INPUT, "RESET");
+ configInput(SELECT_INPUT, "SELECT");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
}
void processAlways(const ProcessArgs& args) override;
diff --git a/src/PEQ.hpp b/src/PEQ.hpp
@@ -74,6 +74,20 @@ struct PEQ : BGModule {
configParam(C_CV_PARAM, -1.0f, 1.0f, 0.0f, "Channel C frequency CV attenuation", "%", 0.0f, 100.0f);
configSwitch(C_MODE_PARAM, 0.0f, 1.0f, 1.0f, "Channel C HP/BP", {"Bandpass", "Highpass"});
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(A_LEVEL_INPUT, "A_LEVEL");
+ configInput(B_LEVEL_INPUT, "B_LEVEL");
+ configInput(C_LEVEL_INPUT, "C_LEVEL");
+ configInput(A_FREQUENCY_INPUT, "A_FREQUENCY");
+ configInput(B_FREQUENCY_INPUT, "B_FREQUENCY");
+ configInput(C_FREQUENCY_INPUT, "C_FREQUENCY");
+ configInput(A_BANDWIDTH_INPUT, "A_BANDWIDTH");
+ configInput(B_BANDWIDTH_INPUT, "B_BANDWIDTH");
+ configInput(C_BANDWIDTH_INPUT, "C_BANDWIDTH");
+ configInput(ALL_CV_INPUT, "ALL_CV");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void sampleRateChange() override;
diff --git a/src/PEQ14.hpp b/src/PEQ14.hpp
@@ -179,6 +179,56 @@ struct PEQ14 : ExpandableModule<PEQ14ExpanderMessage, BandExcludeModule> {
configBypass(IN_INPUT, ODDS_OUTPUT);
configBypass(IN_INPUT, EVENS_OUTPUT);
+ configInput(FREQUENCY_CV_INPUT, "FREQUENCY_CV");
+ configInput(BANDWIDTH_INPUT, "BANDWIDTH");
+ configInput(IN_INPUT, "IN");
+ configInput(LEVEL1_INPUT, "LEVEL1");
+ configInput(FREQUENCY_CV1_INPUT, "FREQUENCY_CV1");
+ configInput(LEVEL2_INPUT, "LEVEL2");
+ configInput(FREQUENCY_CV2_INPUT, "FREQUENCY_CV2");
+ configInput(LEVEL3_INPUT, "LEVEL3");
+ configInput(FREQUENCY_CV3_INPUT, "FREQUENCY_CV3");
+ configInput(LEVEL4_INPUT, "LEVEL4");
+ configInput(FREQUENCY_CV4_INPUT, "FREQUENCY_CV4");
+ configInput(LEVEL5_INPUT, "LEVEL5");
+ configInput(FREQUENCY_CV5_INPUT, "FREQUENCY_CV5");
+ configInput(LEVEL6_INPUT, "LEVEL6");
+ configInput(FREQUENCY_CV6_INPUT, "FREQUENCY_CV6");
+ configInput(LEVEL7_INPUT, "LEVEL7");
+ configInput(FREQUENCY_CV7_INPUT, "FREQUENCY_CV7");
+ configInput(LEVEL8_INPUT, "LEVEL8");
+ configInput(FREQUENCY_CV8_INPUT, "FREQUENCY_CV8");
+ configInput(LEVEL9_INPUT, "LEVEL9");
+ configInput(FREQUENCY_CV9_INPUT, "FREQUENCY_CV9");
+ configInput(LEVEL10_INPUT, "LEVEL10");
+ configInput(FREQUENCY_CV10_INPUT, "FREQUENCY_CV10");
+ configInput(LEVEL11_INPUT, "LEVEL11");
+ configInput(FREQUENCY_CV11_INPUT, "FREQUENCY_CV11");
+ configInput(LEVEL12_INPUT, "LEVEL12");
+ configInput(FREQUENCY_CV12_INPUT, "FREQUENCY_CV12");
+ configInput(LEVEL13_INPUT, "LEVEL13");
+ configInput(FREQUENCY_CV13_INPUT, "FREQUENCY_CV13");
+ configInput(LEVEL14_INPUT, "LEVEL14");
+ configInput(FREQUENCY_CV14_INPUT, "FREQUENCY_CV14");
+
+ configOutput(ODDS_OUTPUT, "ODDS");
+ configOutput(OUT_OUTPUT, "OUT");
+ configOutput(EVENS_OUTPUT, "EVENS");
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
+ configOutput(OUT9_OUTPUT, "OUT9");
+ configOutput(OUT10_OUTPUT, "OUT10");
+ configOutput(OUT11_OUTPUT, "OUT11");
+ configOutput(OUT12_OUTPUT, "OUT12");
+ configOutput(OUT13_OUTPUT, "OUT13");
+ configOutput(OUT14_OUTPUT, "OUT14");
+
setExpanderModelPredicate([](Model* m) { return m == modelPEQ14XF || m == modelPEQ14XR || m == modelPEQ14XV; });
}
diff --git a/src/PEQ14XF.hpp b/src/PEQ14XF.hpp
@@ -50,6 +50,24 @@ struct PEQ14XF : ExpanderModule<PEQ14ExpanderMessage, ExpandableModule<PEQ14Expa
configParam(DAMP_PARAM, 0.0f, 1.0f, 0.3f, "Envelope follower smoothing", "%", 0.0f, 100.0f);
configParam<EFGainParamQuantity>(GAIN_PARAM, -1.0f, 1.0f, 0.0f, "Envelope follower gain", " dB");
+ configInput(DAMP_INPUT, "DAMP");
+ configInput(GAIN_INPUT, "GAIN");
+
+ configOutput(EF1_OUTPUT, "EF1");
+ configOutput(EF2_OUTPUT, "EF2");
+ configOutput(EF3_OUTPUT, "EF3");
+ configOutput(EF4_OUTPUT, "EF4");
+ configOutput(EF5_OUTPUT, "EF5");
+ configOutput(EF6_OUTPUT, "EF6");
+ configOutput(EF7_OUTPUT, "EF7");
+ configOutput(EF8_OUTPUT, "EF8");
+ configOutput(EF9_OUTPUT, "EF9");
+ configOutput(EF10_OUTPUT, "EF10");
+ configOutput(EF11_OUTPUT, "EF11");
+ configOutput(EF12_OUTPUT, "EF12");
+ configOutput(EF13_OUTPUT, "EF13");
+ configOutput(EF14_OUTPUT, "EF14");
+
setBaseModelPredicate([](Model* m) { return m == modelPEQ14 || m == modelPEQ14XF || m == modelPEQ14XR || m == modelPEQ14XV; });
setExpanderModelPredicate([](Model* m) { return m == modelPEQ14XF || m == modelPEQ14XR || m == modelPEQ14XV; });
}
diff --git a/src/PEQ14XR.hpp b/src/PEQ14XR.hpp
@@ -56,6 +56,11 @@ struct PEQ14XR : ExpanderModule<PEQ14ExpanderMessage, ExpandableModule<PEQ14Expa
configParam(DAMP_PARAM, 0.0f, 1.0f, 0.3f, "Envelope follower smoothing", "%", 0.0f, 100.0f);
configParam<EFGainParamQuantity>(GAIN_PARAM, -1.0f, 1.0f, 0.0f, "Envelope follower gain", " dB");
+ configInput(DAMP_INPUT, "DAMP");
+ configInput(GAIN_INPUT, "GAIN");
+
+ configOutput(OUT_OUTPUT, "OUT");
+
setBaseModelPredicate([](Model* m) { return m == modelPEQ14 || m == modelPEQ14XF || m == modelPEQ14XR || m == modelPEQ14XV; });
setExpanderModelPredicate([](Model* m) { return m == modelPEQ14XF || m == modelPEQ14XR || m == modelPEQ14XV; });
}
diff --git a/src/PEQ14XV.hpp b/src/PEQ14XV.hpp
@@ -63,6 +63,15 @@ struct PEQ14XV : ExpanderModule<PEQ14ExpanderMessage, ExpandableModule<PEQ14Expa
configParam(BAND1_ENABLE_PARAM, 0.0f, 1.0f, 1.0f, "Band 1 enable");
configParam(BAND14_ENABLE_PARAM, 0.0f, 1.0f, 1.0f, "Band 14 enable");
+ configInput(EF_DAMP_INPUT, "EF_DAMP");
+ configInput(EF_GAIN_INPUT, "EF_GAIN");
+ configInput(TRANSPOSE_INPUT, "TRANSPOSE");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(ODDS_OUTPUT, "ODDS");
+ configOutput(OUT_OUTPUT, "OUT");
+ configOutput(EVENS_OUTPUT, "EVENS");
+
setBaseModelPredicate([](Model* m) { return m == modelPEQ14 || m == modelPEQ14XF || m == modelPEQ14XR || m == modelPEQ14XV; });
setExpanderModelPredicate([](Model* m) { return m == modelPEQ14XF || m == modelPEQ14XR || m == modelPEQ14XV; });
}
diff --git a/src/PEQ6.hpp b/src/PEQ6.hpp
@@ -102,6 +102,30 @@ struct PEQ6 : ExpandableModule<PEQ6ExpanderMessage, BandExcludeModule> {
configParam(FREQUENCY_CV6_PARAM, -1.0f, 1.0f, 1.0f, "Channel 6 frequency CV attenuation", "%", 0.0f, 100.0f);
configBypass(IN_INPUT, OUT_OUTPUT);
+ configInput(FREQUENCY_CV_INPUT, "FREQUENCY_CV");
+ configInput(BANDWIDTH_INPUT, "BANDWIDTH");
+ configInput(IN_INPUT, "IN");
+ configInput(LEVEL1_INPUT, "LEVEL1");
+ configInput(FREQUENCY_CV1_INPUT, "FREQUENCY_CV1");
+ configInput(LEVEL2_INPUT, "LEVEL2");
+ configInput(FREQUENCY_CV2_INPUT, "FREQUENCY_CV2");
+ configInput(LEVEL3_INPUT, "LEVEL3");
+ configInput(FREQUENCY_CV3_INPUT, "FREQUENCY_CV3");
+ configInput(LEVEL4_INPUT, "LEVEL4");
+ configInput(FREQUENCY_CV4_INPUT, "FREQUENCY_CV4");
+ configInput(LEVEL5_INPUT, "LEVEL5");
+ configInput(FREQUENCY_CV5_INPUT, "FREQUENCY_CV5");
+ configInput(LEVEL6_INPUT, "LEVEL6");
+ configInput(FREQUENCY_CV6_INPUT, "FREQUENCY_CV6");
+
+ configOutput(OUT_OUTPUT, "OUT");
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+
setExpanderModelPredicate([](Model* m) { return m == modelPEQ6XF; });
}
diff --git a/src/PEQ6XF.hpp b/src/PEQ6XF.hpp
@@ -40,6 +40,13 @@ struct PEQ6XF : ExpanderModule<PEQ6ExpanderMessage, PEQXFBase> {
configParam(DAMP_PARAM, 0.0f, 1.0f, 0.3f, "Envelope follower smoothing", "%", 0.0f, 100.0f);
configParam<EFGainParamQuantity>(GAIN_PARAM, -1.0f, 1.0f, 0.0f, "Envelope follower gain", " dB");
+ configOutput(EF1_OUTPUT, "EF1");
+ configOutput(EF2_OUTPUT, "EF2");
+ configOutput(EF3_OUTPUT, "EF3");
+ configOutput(EF4_OUTPUT, "EF4");
+ configOutput(EF5_OUTPUT, "EF5");
+ configOutput(EF6_OUTPUT, "EF6");
+
setBaseModelPredicate([](Model* m) { return m == modelPEQ6; });
}
diff --git a/src/Pan.hpp b/src/Pan.hpp
@@ -42,6 +42,14 @@ struct Pan : BGModule {
configParam(PAN1_PARAM, -1.0f, 1.0f, 0.0f, "Panning 1", "%", 0.0f, 100.0f);
configParam(PAN2_PARAM, -1.0f, 1.0f, 0.0f, "Panning 2", "%", 0.0f, 100.0f);
+ configInput(CV1_INPUT, "CV1");
+ configInput(IN1_INPUT, "IN1");
+ configInput(CV2_INPUT, "CV2");
+ configInput(IN2_INPUT, "IN2");
+
+ configOutput(L_OUTPUT, "L");
+ configOutput(R_OUTPUT, "R");
+
sampleRateChange();
}
diff --git a/src/Pgmr.hpp b/src/Pgmr.hpp
@@ -95,6 +95,23 @@ struct Pgmr : PgmrBase {
configButton(SELECT4_PARAM, "Select 4");
setInputIDs(CLOCK_INPUT, SELECT_INPUT);
+ configInput(CLOCK_INPUT, "CLOCK");
+ configInput(SELECT_INPUT, "SELECT");
+ configInput(SELECT1_INPUT, "SELECT1");
+ configInput(SELECT2_INPUT, "SELECT2");
+ configInput(SELECT3_INPUT, "SELECT3");
+ configInput(SELECT4_INPUT, "SELECT4");
+
+ configOutput(A_OUTPUT, "A");
+ configOutput(B_OUTPUT, "B");
+ configOutput(C_OUTPUT, "C");
+ configOutput(D_OUTPUT, "D");
+ configOutput(SELECT_ALL_OUTPUT, "SELECT_ALL");
+ configOutput(SELECT1_OUTPUT, "SELECT1");
+ configOutput(SELECT2_OUTPUT, "SELECT2");
+ configOutput(SELECT3_OUTPUT, "SELECT3");
+ configOutput(SELECT4_OUTPUT, "SELECT4");
+
setLocalElements({
new PgmrStep(params[CVA1_PARAM], params[CVB1_PARAM], params[CVC1_PARAM], params[CVD1_PARAM], lights[SELECT1_LIGHT], params[SELECT1_PARAM], inputs[SELECT1_INPUT], outputs[SELECT1_OUTPUT]),
new PgmrStep(params[CVA2_PARAM], params[CVB2_PARAM], params[CVC2_PARAM], params[CVD2_PARAM], lights[SELECT2_LIGHT], params[SELECT2_PARAM], inputs[SELECT2_INPUT], outputs[SELECT2_OUTPUT]),
diff --git a/src/PgmrX.hpp b/src/PgmrX.hpp
@@ -78,6 +78,16 @@ struct PgmrX : PgmrXBase, OutputRange {
configParam<OutputRangeParamQuantity>(CVD4_PARAM, -1.0f, 1.0f, 0.0f, "Step 4D", " V");
configButton(SELECT4_PARAM, "Select 4");
+ configInput(SELECT1_INPUT, "SELECT1");
+ configInput(SELECT2_INPUT, "SELECT2");
+ configInput(SELECT3_INPUT, "SELECT3");
+ configInput(SELECT4_INPUT, "SELECT4");
+
+ configOutput(SELECT1_OUTPUT, "SELECT1");
+ configOutput(SELECT2_OUTPUT, "SELECT2");
+ configOutput(SELECT3_OUTPUT, "SELECT3");
+ configOutput(SELECT4_OUTPUT, "SELECT4");
+
setLocalElements({
new PgmrStep(params[CVA1_PARAM], params[CVB1_PARAM], params[CVC1_PARAM], params[CVD1_PARAM], lights[SELECT1_LIGHT], params[SELECT1_PARAM], inputs[SELECT1_INPUT], outputs[SELECT1_OUTPUT]),
new PgmrStep(params[CVA2_PARAM], params[CVB2_PARAM], params[CVC2_PARAM], params[CVD2_PARAM], lights[SELECT2_LIGHT], params[SELECT2_PARAM], inputs[SELECT2_INPUT], outputs[SELECT2_OUTPUT]),
diff --git a/src/PolyCon16.hpp b/src/PolyCon16.hpp
@@ -79,6 +79,10 @@ struct PolyCon16 : OutputRangeModule<BGModule> {
configParam<OutputRangeParamQuantity>(CHANNEL14_PARAM, -1.0f, 1.0f, 0.0f, "Channel 14", " V");
configParam<OutputRangeParamQuantity>(CHANNEL15_PARAM, -1.0f, 1.0f, 0.0f, "Channel 15", " V");
configParam<OutputRangeParamQuantity>(CHANNEL16_PARAM, -1.0f, 1.0f, 0.0f, "Channel 16", " V");
+
+ configInput(CHANNELS_INPUT, "CHANNELS");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void processAll(const ProcessArgs& args) override;
diff --git a/src/PolyCon8.hpp b/src/PolyCon8.hpp
@@ -52,6 +52,8 @@ struct PolyCon8 : OutputRangeModule<PolyChannelsModule> {
configParam<OutputRangeParamQuantity>(CHANNEL6_PARAM, -1.0f, 1.0f, 0.0f, "Channel 6", " V");
configParam<OutputRangeParamQuantity>(CHANNEL7_PARAM, -1.0f, 1.0f, 0.0f, "Channel 7", " V");
configParam<OutputRangeParamQuantity>(CHANNEL8_PARAM, -1.0f, 1.0f, 0.0f, "Channel 8", " V");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void processAll(const ProcessArgs& args) override;
diff --git a/src/PolyMult.hpp b/src/PolyMult.hpp
@@ -30,6 +30,14 @@ struct PolyMult : BGModule {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configParam(CHANNELS_PARAM, 1.0f, 16.0f, 1.0f, "Polyphony channels");
paramQuantities[CHANNELS_PARAM]->snapEnabled = true;
+
+ configInput(CHANNELS_INPUT, "CHANNELS");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
}
void processAll(const ProcessArgs& args) override;
diff --git a/src/PolyOff16.hpp b/src/PolyOff16.hpp
@@ -129,6 +129,26 @@ struct PolyOff16 : OutputRangeModule<BGModule> {
configParam(SCALE16_PARAM, -1.0f, 1.0f, 1.0f, "Channel 16 scale", "%", 0.0f, 100.0f);
configParam(CHANNELS_PARAM, 1.0f, 16.0f, 1.0f, "Polyphony channels");
paramQuantities[CHANNELS_PARAM]->snapEnabled = true;
+
+ configInput(CV1_INPUT, "CV1");
+ configInput(CV2_INPUT, "CV2");
+ configInput(CV3_INPUT, "CV3");
+ configInput(CV4_INPUT, "CV4");
+ configInput(CV5_INPUT, "CV5");
+ configInput(CV6_INPUT, "CV6");
+ configInput(CV7_INPUT, "CV7");
+ configInput(CV8_INPUT, "CV8");
+ configInput(CV9_INPUT, "CV9");
+ configInput(CV10_INPUT, "CV10");
+ configInput(CV11_INPUT, "CV11");
+ configInput(CV12_INPUT, "CV12");
+ configInput(CV13_INPUT, "CV13");
+ configInput(CV14_INPUT, "CV14");
+ configInput(CV15_INPUT, "CV15");
+ configInput(CV16_INPUT, "CV16");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/PolyOff8.hpp b/src/PolyOff8.hpp
@@ -81,6 +81,18 @@ struct PolyOff8 : OutputRangeModule<BGModule> {
configParam(SCALE8_PARAM, -1.0f, 1.0f, 1.0f, "Channel 8 scale", "%", 0.0f, 100.0f);
configParam(CHANNELS_PARAM, 1.0f, 8.0f, 1.0f, "Polyphony channels");
paramQuantities[CHANNELS_PARAM]->snapEnabled = true;
+
+ configInput(CV1_INPUT, "CV1");
+ configInput(CV2_INPUT, "CV2");
+ configInput(CV3_INPUT, "CV3");
+ configInput(CV4_INPUT, "CV4");
+ configInput(CV5_INPUT, "CV5");
+ configInput(CV6_INPUT, "CV6");
+ configInput(CV7_INPUT, "CV7");
+ configInput(CV8_INPUT, "CV8");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/Pressor.hpp b/src/Pressor.hpp
@@ -95,6 +95,20 @@ struct Pressor : BGModule {
configSwitch(KNEE_PARAM, 0.0f, 1.0f, 1.0f, "Knee", {"Hard", "Soft"});
configBypass(LEFT_INPUT, LEFT_OUTPUT);
configBypass(RIGHT_INPUT, RIGHT_OUTPUT);
+
+ configInput(LEFT_INPUT, "LEFT");
+ configInput(SIDECHAIN_INPUT, "SIDECHAIN");
+ configInput(THRESHOLD_INPUT, "THRESHOLD");
+ configInput(RATIO_INPUT, "RATIO");
+ configInput(RIGHT_INPUT, "RIGHT");
+ configInput(ATTACK_INPUT, "ATTACK");
+ configInput(RELEASE_INPUT, "RELEASE");
+ configInput(INPUT_GAIN_INPUT, "INPUT_GAIN");
+ configInput(OUTPUT_GAIN_INPUT, "OUTPUT_GAIN");
+
+ configOutput(ENVELOPE_OUTPUT, "ENVELOPE");
+ configOutput(LEFT_OUTPUT, "LEFT");
+ configOutput(RIGHT_OUTPUT, "RIGHT");
}
void sampleRateChange() override;
diff --git a/src/Pulse.hpp b/src/Pulse.hpp
@@ -42,6 +42,12 @@ struct Pulse : VCOBase {
configButton(SLOW_PARAM, "Slow mode");
configParam(PW_PARAM, -1.0f, 1.0f, 0.0f, "Pulse width", "%", 0.0f, 100.0f*0.5f*(1.0f - 2.0f * SquareOscillator::minPulseWidth), 50.0f);
configParam(PWM_PARAM, -1.0f, 1.0f, 0.0f, "Pulse width CV amount");
+
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(PWM_INPUT, "PWM");
+ configInput(SYNC_INPUT, "SYNC");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/RGate.hpp b/src/RGate.hpp
@@ -67,6 +67,14 @@ struct RGate : OutputRangeModule<BGModule> {
configParam<RoundingParamQuantity<ScaledSquaringParamQuantity<63>>>(CLOCK_DIVIDE_PARAM, 0.0f, 1.0f, 0.0f, "Clock division", "", 0.0f, 1.0f, 1.0f);
configParam<RoundingParamQuantity<ScaledSquaringParamQuantity<63>>>(CLOCK_MULTIPLY_PARAM, 0.0f, 1.0f, 0.0f, "Clock multiplication", "", 0.0f, 1.0f, 1.0f);
+ configInput(LENGTH_INPUT, "LENGTH");
+ configInput(CLOCK_DIVIDE_INPUT, "CLOCK_DIVIDE");
+ configInput(RESET_INPUT, "RESET");
+ configInput(CLOCK_MULTIPLE_INPUT, "CLOCK_MULTIPLE");
+ configInput(CLOCK_INPUT, "CLOCK");
+
+ configOutput(GATE_OUTPUT, "GATE");
+
_rangeOffset = 1.0f;
_rangeScale = 5.0f;
}
diff --git a/src/Ranalyzer.hpp b/src/Ranalyzer.hpp
@@ -123,6 +123,14 @@ struct Ranalyzer : AnalyzerBase {
configParam(DELAY_PARAM, 2.0f, (float)maxResponseDelay, 2.0f, "Return sample delay");
paramQuantities[DELAY_PARAM]->snapEnabled = true;
+ configInput(TRIGGER_INPUT, "TRIGGER");
+ configInput(RETURN_INPUT, "RETURN");
+ configInput(TEST_INPUT, "TEST");
+
+ configOutput(TRIGGER_OUTPUT, "TRIGGER");
+ configOutput(EOC_OUTPUT, "EOC");
+ configOutput(SEND_OUTPUT, "SEND");
+
_skinnable = false;
}
virtual ~Ranalyzer() {
diff --git a/src/Reftone.hpp b/src/Reftone.hpp
@@ -43,6 +43,9 @@ struct Reftone : BGModule {
paramQuantities[OCTAVE_PARAM]->snapEnabled = true;
configParam(FINE_PARAM, -0.99f, 0.99f, 0.0f, "Fine tune", " cents", 0.0f, 100.0f);
+ configOutput(CV_OUTPUT, "CV");
+ configOutput(OUT_OUTPUT, "OUT");
+
sampleRateChange();
}
diff --git a/src/SampleHold.hpp b/src/SampleHold.hpp
@@ -67,6 +67,11 @@ struct SampleHold : BGModule {
configSwitch(TRACK2_PARAM, 0.0f, 1.0f, 0.0f, "Track 2", {"Disabled", "Enabled"});
configSwitch(INVERT1_PARAM, 0.0f, 1.0f, 0.0f, "Invert 1", {"Disabled", "Enabled"});
configSwitch(INVERT2_PARAM, 0.0f, 1.0f, 0.0f, "Invert 2", {"Disabled", "Enabled"});
+
+ configInput(TRIGGER1_INPUT, "TRIGGER1");
+ configInput(IN1_INPUT, "IN1");
+ configInput(TRIGGER2_INPUT, "TRIGGER2");
+ configInput(IN2_INPUT, "IN2");
}
void reset() override;
diff --git a/src/Shaper.hpp b/src/Shaper.hpp
@@ -9,7 +9,7 @@ extern Model* modelShaper;
namespace bogaudio {
struct Shaper : TriggerOnLoadModule {
- enum ParamIds {
+ enum ParamsIds {
ATTACK_PARAM,
ON_PARAM,
DECAY_PARAM,
@@ -22,13 +22,13 @@ struct Shaper : TriggerOnLoadModule {
NUM_PARAMS
};
- enum InputIds {
+ enum InputsIds {
SIGNAL_INPUT,
TRIGGER_INPUT,
NUM_INPUTS
};
- enum OutputIds {
+ enum OutputsIds {
SIGNAL_OUTPUT,
ENV_OUTPUT,
INV_OUTPUT,
@@ -36,7 +36,7 @@ struct Shaper : TriggerOnLoadModule {
NUM_OUTPUTS
};
- enum LightIds {
+ enum LightsIds {
ATTACK_LIGHT,
ON_LIGHT,
DECAY_LIGHT,
@@ -61,6 +61,14 @@ struct Shaper : TriggerOnLoadModule {
configButton(TRIGGER_PARAM, "Trigger");
configSwitch(SPEED_PARAM, 0.0f, 1.0f, 1.0f, "Speed", {"Slow", "Normal"});
configSwitch(LOOP_PARAM, 0.0f, 1.0f, 1.0f, "Loop", {"Loop", "Stop"});
+
+ configInput(SIGNAL_INPUT, "SIGNAL");
+ configInput(TRIGGER_INPUT, "TRIGGER");
+
+ configOutput(SIGNAL_OUTPUT, "SIGNAL");
+ configOutput(ENV_OUTPUT, "ENV");
+ configOutput(INV_OUTPUT, "INV");
+ configOutput(TRIGGER_OUTPUT, "TRIGGER");
}
void reset() override;
diff --git a/src/ShaperPlus.hpp b/src/ShaperPlus.hpp
@@ -9,7 +9,7 @@ extern Model* modelShaperPlus;
namespace bogaudio {
struct ShaperPlus : TriggerOnLoadModule {
- enum ParamIds {
+ enum ParamsIds {
ATTACK_PARAM,
ON_PARAM,
DECAY_PARAM,
@@ -22,7 +22,7 @@ struct ShaperPlus : TriggerOnLoadModule {
NUM_PARAMS
};
- enum InputIds {
+ enum InputsIds {
SIGNAL_INPUT,
TRIGGER_INPUT,
ATTACK_INPUT,
@@ -34,7 +34,7 @@ struct ShaperPlus : TriggerOnLoadModule {
NUM_INPUTS
};
- enum OutputIds {
+ enum OutputsIds {
SIGNAL_OUTPUT,
ENV_OUTPUT,
INV_OUTPUT,
@@ -46,7 +46,7 @@ struct ShaperPlus : TriggerOnLoadModule {
NUM_OUTPUTS
};
- enum LightIds {
+ enum LightsIds {
ATTACK_LIGHT,
ON_LIGHT,
DECAY_LIGHT,
@@ -71,6 +71,24 @@ struct ShaperPlus : TriggerOnLoadModule {
configButton(TRIGGER_PARAM, "Trigger");
configSwitch(SPEED_PARAM, 0.0f, 1.0f, 1.0f, "Speed", {"Slow", "Normal"});
configSwitch(LOOP_PARAM, 0.0f, 1.0f, 1.0f, "Loop", {"Loop", "Stop"});
+
+ configInput(SIGNAL_INPUT, "SIGNAL");
+ configInput(TRIGGER_INPUT, "TRIGGER");
+ configInput(ATTACK_INPUT, "ATTACK");
+ configInput(ON_INPUT, "ON");
+ configInput(DECAY_INPUT, "DECAY");
+ configInput(OFF_INPUT, "OFF");
+ configInput(ENV_INPUT, "ENV");
+ configInput(SIGNALCV_INPUT, "SIGNALCV");
+
+ configOutput(SIGNAL_OUTPUT, "SIGNAL");
+ configOutput(ENV_OUTPUT, "ENV");
+ configOutput(INV_OUTPUT, "INV");
+ configOutput(TRIGGER_OUTPUT, "TRIGGER");
+ configOutput(ATTACK_OUTPUT, "ATTACK");
+ configOutput(ON_OUTPUT, "ON");
+ configOutput(DECAY_OUTPUT, "DECAY");
+ configOutput(OFF_OUTPUT, "OFF");
}
void reset() override;
diff --git a/src/Sine.hpp b/src/Sine.hpp
@@ -56,6 +56,13 @@ struct Sine : VCOBase {
configButton(SLOW_PARAM, "Slow mode");
configParam(FM_DEPTH_PARAM, 0.0f, 1.0f, 0.0f, "FM depth", "%", 0.0f, 100.0f);
configParam(PHASE_PARAM, -1.0f, 1.0f, 0.0f, "Phase offset", "º", 0.0f, 180.0f);
+
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(FM_INPUT, "FM");
+ configInput(PHASE_INPUT, "PHASE");
+ configInput(SYNC_INPUT, "SYNC");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/Slew.hpp b/src/Slew.hpp
@@ -39,6 +39,12 @@ struct Slew : BGModule {
configParam(FALL_SHAPE_PARAM, -1.0f, 1.0f, 0.0f, "Fall shape");
configSwitch(SLOW_PARAM, 0.0f, 1.0f, 0.0f, "Slow mode", {"Disabled", "Enabled"});
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(RISE_INPUT, "RISE");
+ configInput(FALL_INPUT, "FALL");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
bool active() override;
diff --git a/src/Stack.hpp b/src/Stack.hpp
@@ -48,6 +48,12 @@ struct Stack : BGModule {
configParam(FINE_PARAM, -0.99f, 0.99f, 0.0f, "Fine tune", " cents", 0.0f, 100.0f);
configSwitch(QUANTIZE_PARAM, 0.0f, 1.0f, 1.0f, "Quantize", {"Disabled", "Enabled"});
+ configInput(CV_INPUT, "CV");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(THRU_OUTPUT, "THRU");
+ configOutput(OUT_OUTPUT, "OUT");
+
for (int i = 0; i < maxChannels; ++i) {
_lastSemitones[i] = -1000.0f;
_lastInCV[i] = -1000.0f;
diff --git a/src/Sums.hpp b/src/Sums.hpp
@@ -30,6 +30,16 @@ struct Sums : DisableOutputLimitModule {
Sums() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(A_INPUT, "A");
+ configInput(B_INPUT, "B");
+ configInput(NEGATE_INPUT, "NEGATE");
+
+ configOutput(SUM_OUTPUT, "SUM");
+ configOutput(DIFFERENCE_OUTPUT, "DIFFERENCE");
+ configOutput(MAX_OUTPUT, "MAX");
+ configOutput(MIN_OUTPUT, "MIN");
+ configOutput(NEGATE_OUTPUT, "NEGATE");
}
void processAll(const ProcessArgs& args) override;
diff --git a/src/Switch.hpp b/src/Switch.hpp
@@ -49,6 +49,15 @@ struct Switch : SaveLatchToPatchModule {
configSwitch(LATCH_PARAM, 0.0f, 1.0f, 0.0f, "Latch", {"Disabled", "Enabled"});
configBypass(LOW1_INPUT, OUT1_OUTPUT);
configBypass(LOW2_INPUT, OUT2_OUTPUT);
+
+ configInput(GATE_INPUT, "GATE");
+ configInput(HIGH1_INPUT, "HIGH1");
+ configInput(LOW1_INPUT, "LOW1");
+ configInput(HIGH2_INPUT, "HIGH2");
+ configInput(LOW2_INPUT, "LOW2");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
}
void reset() override;
diff --git a/src/Switch1616.hpp b/src/Switch1616.hpp
@@ -582,6 +582,40 @@ struct Switch1616 : SwitchMatrixModule {
configSwitchParam(MIX_16_14_PARAM, "Mix 14P");
configSwitchParam(MIX_16_15_PARAM, "Mix 15P");
configSwitchParam(MIX_16_16_PARAM, "Mix 16P");
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+ configInput(IN9_INPUT, "IN9");
+ configInput(IN10_INPUT, "IN10");
+ configInput(IN11_INPUT, "IN11");
+ configInput(IN12_INPUT, "IN12");
+ configInput(IN13_INPUT, "IN13");
+ configInput(IN14_INPUT, "IN14");
+ configInput(IN15_INPUT, "IN15");
+ configInput(IN16_INPUT, "IN16");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
+ configOutput(OUT9_OUTPUT, "OUT9");
+ configOutput(OUT10_OUTPUT, "OUT10");
+ configOutput(OUT11_OUTPUT, "OUT11");
+ configOutput(OUT12_OUTPUT, "OUT12");
+ configOutput(OUT13_OUTPUT, "OUT13");
+ configOutput(OUT14_OUTPUT, "OUT14");
+ configOutput(OUT15_OUTPUT, "OUT15");
+ configOutput(OUT16_OUTPUT, "OUT16");
}
};
diff --git a/src/Switch18.hpp b/src/Switch18.hpp
@@ -47,6 +47,17 @@ struct Switch18 : SwitchMatrixModule {
configSwitchParam(MIX6_PARAM, "Route 6");
configSwitchParam(MIX7_PARAM, "Route 7");
configSwitchParam(MIX8_PARAM, "Route 8");
+
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
}
};
diff --git a/src/Switch44.hpp b/src/Switch44.hpp
@@ -62,6 +62,16 @@ struct Switch44 : SwitchMatrixModule {
configSwitchParam(MIX24_PARAM, "Mix 2D");
configSwitchParam(MIX34_PARAM, "Mix 3D");
configSwitchParam(MIX44_PARAM, "Mix 4D");
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
}
};
diff --git a/src/Switch81.hpp b/src/Switch81.hpp
@@ -47,6 +47,17 @@ struct Switch81 : SwitchMatrixModule {
configSwitchParam(MIX6_PARAM, "Mix 6");
configSwitchParam(MIX7_PARAM, "Mix 7");
configSwitchParam(MIX8_PARAM, "Mix 8");
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
};
diff --git a/src/Switch88.hpp b/src/Switch88.hpp
@@ -166,6 +166,24 @@ struct Switch88 : SwitchMatrixModule {
configSwitchParam(MIX68_PARAM, "Mix 6H");
configSwitchParam(MIX78_PARAM, "Mix 7H");
configSwitchParam(MIX88_PARAM, "Mix 8H");
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+ configOutput(OUT3_OUTPUT, "OUT3");
+ configOutput(OUT4_OUTPUT, "OUT4");
+ configOutput(OUT5_OUTPUT, "OUT5");
+ configOutput(OUT6_OUTPUT, "OUT6");
+ configOutput(OUT7_OUTPUT, "OUT7");
+ configOutput(OUT8_OUTPUT, "OUT8");
}
};
diff --git a/src/Test2.hpp b/src/Test2.hpp
@@ -90,6 +90,17 @@ struct Test2 : BGModule {
configParam(PARAM1B_PARAM, 0.0f, 1.0f, 0.0f, "param1b");
configParam(PARAM2B_PARAM, 0.0f, 1.0f, 0.0f, "param2b");
configParam(PARAM3B_PARAM, 0.0f, 1.0f, 0.0f, "param3b");
+
+ configInput(CV1A_INPUT, "CV1A");
+ configInput(CV2A_INPUT, "CV2A");
+ configInput(CV3A_INPUT, "CV3A");
+ configInput(CV1B_INPUT, "CV1B");
+ configInput(CV2B_INPUT, "CV2B");
+ configInput(CV3B_INPUT, "CV3B");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
+ configOutput(OUT2_OUTPUT, "OUT2");
}
void reset() override;
diff --git a/src/UMix.hpp b/src/UMix.hpp
@@ -36,6 +36,17 @@ struct UMix : MatrixBaseModule {
UMix() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(IN5_INPUT, "IN5");
+ configInput(IN6_INPUT, "IN6");
+ configInput(IN7_INPUT, "IN7");
+ configInput(IN8_INPUT, "IN8");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
bool active() override;
diff --git a/src/Unison.hpp b/src/Unison.hpp
@@ -35,6 +35,13 @@ struct Unison : BGModule {
configParam(CHANNELS_PARAM, 1.0f, 16.0f, 1.0f, "Channels");
paramQuantities[CHANNELS_PARAM]->snapEnabled = true;
configParam(DETUNE_PARAM, 0.0f, maxDetuneCents, 0.0f, "Detune");
+
+ configInput(DETUNE_INPUT, "DETUNE");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(GATE_INPUT, "GATE");
+
+ configOutput(PITCH_OUTPUT, "PITCH");
+ configOutput(GATE_OUTPUT, "GATE");
}
void modulate() override;
diff --git a/src/VCA.hpp b/src/VCA.hpp
@@ -48,6 +48,14 @@ struct VCA : BGModule {
configBypass(IN1_INPUT, OUT1_OUTPUT);
configBypass(IN2_INPUT, OUT2_OUTPUT);
+ configInput(CV1_INPUT, "CV1");
+ configInput(IN1_INPUT, "IN1");
+ configInput(CV2_INPUT, "CV2");
+ configInput(IN2_INPUT, "IN2");
+
+ configOutput(OUT1_OUTPUT, "OUT1");
+ configOutput(OUT2_OUTPUT, "OUT2");
+
sampleRateChange();
}
diff --git a/src/VCAmp.hpp b/src/VCAmp.hpp
@@ -40,6 +40,11 @@ struct VCAmp : BGModule {
configParam(LEVEL_PARAM, 0.0f, 1.0f, fabs(minDecibels) / (maxDecibels - minDecibels), "Level", " dB", 0.0f, maxDecibels - minDecibels, minDecibels);
configBypass(IN_INPUT, OUT_OUTPUT);
+ configInput(CV_INPUT, "CV");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
+
sampleRateChange();
for (int c = 0; c < maxChannels; ++c) {
_rms[c].setSensitivity(0.05f);
diff --git a/src/VCF.hpp b/src/VCF.hpp
@@ -79,6 +79,15 @@ struct VCF : BGModule {
paramQuantities[MODE_PARAM]->snapEnabled = true;
configParam<ScaledSquaringParamQuantity<Engine::maxPoles - Engine::minPoles>>(SLOPE_PARAM, 0.0f, 1.0f, 0.522233f, "Slope", " poles", 0.0f, 1.0f, Engine::minPoles);
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(FREQUENCY_CV_INPUT, "FREQUENCY_CV");
+ configInput(FM_INPUT, "FM");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(IN_INPUT, "IN");
+ configInput(Q_INPUT, "Q");
+ configInput(SLOPE_INPUT, "SLOPE");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
json_t* saveToJson(json_t* root) override;
diff --git a/src/VCM.hpp b/src/VCM.hpp
@@ -56,6 +56,18 @@ struct VCM : DisableOutputLimitModule {
configParam<LevelParamQuantity>(LEVEL4_PARAM, 0.0f, 1.0f, 0.8f, "Level 4");
configParam<LevelParamQuantity>(MIX_PARAM, 0.0f, 1.0f, 0.8f, "Mix level");
configParam(LINEAR_PARAM, 0.0f, 1.0f, 0.0f, "Linear");
+
+ configInput(IN1_INPUT, "IN1");
+ configInput(CV1_INPUT, "CV1");
+ configInput(IN2_INPUT, "IN2");
+ configInput(CV2_INPUT, "CV2");
+ configInput(IN3_INPUT, "IN3");
+ configInput(CV3_INPUT, "CV3");
+ configInput(IN4_INPUT, "IN4");
+ configInput(CV4_INPUT, "CV4");
+ configInput(MIX_CV_INPUT, "MIX_CV");
+
+ configOutput(MIX_OUTPUT, "MIX");
}
inline bool isLinear() { return params[LINEAR_PARAM].getValue() > 0.5f; }
diff --git a/src/VCO.hpp b/src/VCO.hpp
@@ -52,6 +52,16 @@ struct VCO : VCOBase {
configParam(FM_PARAM, 0.0f, 1.0f, 0.0f, "FM depth", "%", 0.0f, 100.0f);
configSwitch(FM_TYPE_PARAM, 0.0f, 1.0f, 1.0f, "FM mode", {"Linear FM", "Exponential FM"});
configButton(LINEAR_PARAM, "Linear frequency");
+
+ configInput(PITCH_INPUT, "Pitch (1V/octave)");
+ configInput(SYNC_INPUT, "Sync");
+ configInput(PW_INPUT, "Pulse width");
+ configInput(FM_INPUT, "Frequency modulation");
+
+ configOutput(SQUARE_OUTPUT, "Square wave");
+ configOutput(SAW_OUTPUT, "Saw wave");
+ configOutput(TRIANGLE_OUTPUT, "Triangle wave");
+ configOutput(SINE_OUTPUT, "Sine wave");
}
bool active() override;
diff --git a/src/VU.hpp b/src/VU.hpp
@@ -45,6 +45,13 @@ struct VU : BGModule {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configBypass(L_INPUT, L_OUTPUT);
configBypass(R_INPUT, R_OUTPUT);
+
+ configInput(L_INPUT, "L");
+ configInput(R_INPUT, "R");
+
+ configOutput(L_OUTPUT, "L");
+ configOutput(R_OUTPUT, "R");
+
sampleRateChange();
_lRms.setSensitivity(1.0f);
_rRms.setSensitivity(1.0f);
diff --git a/src/Velo.hpp b/src/Velo.hpp
@@ -50,6 +50,13 @@ struct Velo : BGModule {
configParam<ScaledSquaringParamQuantity<-60>>(VELOCITY_PARAM, 0.0f, 1.0f, 0.3162278f, "Velocity range", " dB");
configSwitch(LINEAR_PARAM, 0.0f, 1.0f, 0.0f, "Linear", {"Disabled", "Enabled"});
configBypass(IN_INPUT, OUT_OUTPUT);
+
+ configInput(LEVEL_INPUT, "LEVEL");
+ configInput(CV_INPUT, "CV");
+ configInput(VELOCITY_INPUT, "VELOCITY");
+ configInput(IN_INPUT, "IN");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
inline bool isLinear() { return params[LINEAR_PARAM].getValue() > 0.5f; }
diff --git a/src/Vish.hpp b/src/Vish.hpp
@@ -57,6 +57,14 @@ struct Vish : LPGEnvBaseModule {
configParam<TimeParamQuantity<1>>(MINIMUM_GATE_PARAM, 0.0f, 1.0f, 0.3162278f, "Minimum gate", " s");
configSwitch(GATE_TO_TRIGGER_PARAM, 0.0f, 1.0f, 1.0f, "Gate to trigger mode", {"Disabled (input pass-through)", "Enabled"});
configSwitch(TIMES_10X_PARAM, 0.0f, 1.0f, 0.0f, "Timings 10X mode", {"Disabled (normal)", "Enabled"});
+
+ configInput(RISE_INPUT, "RISE");
+ configInput(MINIMUM_GATE_INPUT, "MINIMUM_GATE");
+ configInput(FALL_INPUT, "FALL");
+ configInput(SHAPE_INPUT, "SHAPE");
+ configInput(GATE_INPUT, "GATE");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void reset() override;
diff --git a/src/Walk.hpp b/src/Walk.hpp
@@ -51,6 +51,13 @@ struct Walk : BGModule {
configParam(RATE_PARAM, 0.0f, 1.0f, 0.1f, "Rate", "%", 0.0f, 100.0f);
configParam(OFFSET_PARAM, -1.0f, 1.0f, 0.0f, "Offset", " V", 0.0f, 5.0f);
configParam(SCALE_PARAM, 0.0f, 1.0f, 1.0f, "Scale", "%", 0.0f, 100.0f);
+
+ configInput(RATE_INPUT, "RATE");
+ configInput(OFFSET_INPUT, "OFFSET");
+ configInput(SCALE_INPUT, "SCALE");
+ configInput(JUMP_INPUT, "JUMP");
+
+ configOutput(OUT_OUTPUT, "OUT");
}
void reset() override;
diff --git a/src/Walk2.hpp b/src/Walk2.hpp
@@ -89,6 +89,18 @@ struct Walk2 : BGModule {
configParam(SCALE_X_PARAM, 0.0f, 1.0f, 1.0f, "Scale X", "%", 0.0f, 100.0f);
configParam(SCALE_Y_PARAM, 0.0f, 1.0f, 1.0f, "Scale Y", "%", 0.0f, 100.0f);
configSwitch(JUMP_MODE_PARAM, 0.0f, 2.0f, 0.0f, "TRIG action", {"Jump", "Sample & hold", "Track & hold"});
+
+ configInput(OFFSET_X_INPUT, "OFFSET_X");
+ configInput(SCALE_X_INPUT, "SCALE_X");
+ configInput(RATE_X_INPUT, "RATE_X");
+ configInput(OFFSET_Y_INPUT, "OFFSET_Y");
+ configInput(SCALE_Y_INPUT, "SCALE_Y");
+ configInput(RATE_Y_INPUT, "RATE_Y");
+ configInput(JUMP_INPUT, "JUMP");
+
+ configOutput(OUT_X_OUTPUT, "OUT_X");
+ configOutput(OUT_Y_OUTPUT, "OUT_Y");
+ configOutput(DISTANCE_OUTPUT, "DISTANCE");
}
void reset() override;
diff --git a/src/XCO.hpp b/src/XCO.hpp
@@ -149,6 +149,29 @@ struct XCO : BGModule {
configParam(SINE_FEEDBACK_PARAM, 0.0f, 1.0f, 0.0f, "Sine wave feedback", "%", 0.0f, 100.0f);
configParam(SINE_PHASE_PARAM, -1.0f, 1.0f, 0.0f, "Sine wave phase", "º", 0.0f, 180.0f);
configParam(SINE_MIX_PARAM, 0.0f, 1.0f, 1.0f, "Sine wave mix", "%", 0.0f, 100.0f);
+
+ configInput(FM_INPUT, "FM");
+ configInput(FM_DEPTH_INPUT, "FM_DEPTH");
+ configInput(SQUARE_PW_INPUT, "SQUARE_PW");
+ configInput(SQUARE_PHASE_INPUT, "SQUARE_PHASE");
+ configInput(SQUARE_MIX_INPUT, "SQUARE_MIX");
+ configInput(SAW_SATURATION_INPUT, "SAW_SATURATION");
+ configInput(SAW_PHASE_INPUT, "SAW_PHASE");
+ configInput(SAW_MIX_INPUT, "SAW_MIX");
+ configInput(TRIANGLE_SAMPLE_INPUT, "TRIANGLE_SAMPLE");
+ configInput(TRIANGLE_PHASE_INPUT, "TRIANGLE_PHASE");
+ configInput(TRIANGLE_MIX_INPUT, "TRIANGLE_MIX");
+ configInput(SINE_FEEDBACK_INPUT, "SINE_FEEDBACK");
+ configInput(SINE_PHASE_INPUT, "SINE_PHASE");
+ configInput(SINE_MIX_INPUT, "SINE_MIX");
+ configInput(PITCH_INPUT, "PITCH");
+ configInput(SYNC_INPUT, "SYNC");
+
+ configOutput(SQUARE_OUTPUT, "SQUARE");
+ configOutput(SAW_OUTPUT, "SAW");
+ configOutput(TRIANGLE_OUTPUT, "TRIANGLE");
+ configOutput(SINE_OUTPUT, "SINE");
+ configOutput(MIX_OUTPUT, "MIX");
}
void reset() override;
diff --git a/src/XFade.hpp b/src/XFade.hpp
@@ -41,6 +41,12 @@ struct XFade : BGModule {
configParam(CURVE_PARAM, 0.0f, 1.0f, 0.5f, "Curve");
configSwitch(LINEAR_PARAM, 0.0f, 1.0f, 0.0f, "Linear", {"Decibels", "Amplitude"});
+ configInput(MIX_INPUT, "MIX");
+ configInput(A_INPUT, "A");
+ configInput(B_INPUT, "B");
+
+ configOutput(OUT_OUTPUT, "OUT");
+
sampleRateChange();
for (int c = 0; c < maxChannels; ++c) {
_curveIn[c] = -1.0f;