BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

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:
Msrc/AD.hpp | 7+++++++
Msrc/ADSR.hpp | 4++++
Msrc/AMRM.hpp | 8++++++++
Msrc/ASR.hpp | 7+++++++
Msrc/Additator.hpp | 13+++++++++++++
Msrc/AddrSeq.hpp | 8+++++++-
Msrc/Analyzer.hpp | 10++++++++++
Msrc/AnalyzerXL.hpp | 9+++++++++
Msrc/Arp.hpp | 8++++++++
Msrc/Assign.hpp | 7+++++++
Msrc/Blank3.hpp | 3+++
Msrc/Blank6.hpp | 3+++
Msrc/Bool.hpp | 9+++++++++
Msrc/CVD.hpp | 6++++++
Msrc/Chirp.hpp | 8++++++++
Msrc/Clpr.hpp | 8++++++++
Msrc/Cmp.hpp | 10++++++++++
Msrc/CmpDist.hpp | 14++++++++++++++
Msrc/DADSRH.hpp | 6++++++
Msrc/DADSRHPlus.hpp | 17+++++++++++++++++
Msrc/DGate.hpp | 5+++++
Msrc/Detune.hpp | 7+++++++
Msrc/EQ.hpp | 4++++
Msrc/EQS.hpp | 6++++++
Msrc/Edge.hpp | 6++++++
Msrc/EightFO.hpp | 24++++++++++++++++++++++++
Msrc/EightOne.hpp | 14++++++++++++++
Msrc/FFB.hpp | 7+++++++
Msrc/FMOp.hpp | 10++++++++++
Msrc/FlipFlop.hpp | 10++++++++++
Msrc/Follow.hpp | 6++++++
Msrc/FourFO.hpp | 16++++++++++++++++
Msrc/FourMan.hpp | 6++++++
Msrc/Inv.hpp | 8++++++++
Msrc/LFO.hpp | 14++++++++++++++
Msrc/LLFO.hpp | 5+++++
Msrc/LLPG.hpp | 5+++++
Msrc/LPG.hpp | 8++++++++
Msrc/LVCF.hpp | 5+++++
Msrc/LVCO.hpp | 6++++++
Msrc/Lag.hpp | 6++++++
Msrc/Lgsw.hpp | 8++++++++
Msrc/Lmtr.hpp | 8++++++++
Msrc/Manual.hpp | 10++++++++++
Msrc/Matrix18.hpp | 11+++++++++++
Msrc/Matrix44.hpp | 11+++++++++++
Msrc/Matrix44Cvm.hpp | 17+++++++++++++++++
Msrc/Matrix81.hpp | 11+++++++++++
Msrc/Matrix88.hpp | 18++++++++++++++++++
Msrc/Matrix88Cv.hpp | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/MegaGate.hpp | 20++++++++++++++++++++
Msrc/Mix1.hpp | 6++++++
Msrc/Mix2.hpp | 8++++++++
Msrc/Mix4.hpp | 17+++++++++++++++++
Msrc/Mix4x.hpp | 17+++++++++++++++++
Msrc/Mix8.hpp | 29+++++++++++++++++++++++++++++
Msrc/Mix8x.hpp | 25+++++++++++++++++++++++++
Msrc/Mono.hpp | 4++++
Msrc/Mult.hpp | 10++++++++++
Msrc/Mumix.hpp | 11+++++++++++
Msrc/Mute8.hpp | 26++++++++++++++++++++++++++
Msrc/Noise.hpp | 9+++++++++
Msrc/Nsgt.hpp | 8++++++++
Msrc/Offset.hpp | 12+++++++++---
Msrc/OneEight.hpp | 14++++++++++++++
Msrc/PEQ.hpp | 14++++++++++++++
Msrc/PEQ14.hpp | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/PEQ14XF.hpp | 18++++++++++++++++++
Msrc/PEQ14XR.hpp | 5+++++
Msrc/PEQ14XV.hpp | 9+++++++++
Msrc/PEQ6.hpp | 24++++++++++++++++++++++++
Msrc/PEQ6XF.hpp | 7+++++++
Msrc/Pan.hpp | 8++++++++
Msrc/Pgmr.hpp | 17+++++++++++++++++
Msrc/PgmrX.hpp | 10++++++++++
Msrc/PolyCon16.hpp | 4++++
Msrc/PolyCon8.hpp | 2++
Msrc/PolyMult.hpp | 8++++++++
Msrc/PolyOff16.hpp | 20++++++++++++++++++++
Msrc/PolyOff8.hpp | 12++++++++++++
Msrc/Pressor.hpp | 14++++++++++++++
Msrc/Pulse.hpp | 6++++++
Msrc/RGate.hpp | 8++++++++
Msrc/Ranalyzer.hpp | 8++++++++
Msrc/Reftone.hpp | 3+++
Msrc/SampleHold.hpp | 5+++++
Msrc/Shaper.hpp | 16++++++++++++----
Msrc/ShaperPlus.hpp | 26++++++++++++++++++++++----
Msrc/Sine.hpp | 7+++++++
Msrc/Slew.hpp | 6++++++
Msrc/Stack.hpp | 6++++++
Msrc/Sums.hpp | 10++++++++++
Msrc/Switch.hpp | 9+++++++++
Msrc/Switch1616.hpp | 34++++++++++++++++++++++++++++++++++
Msrc/Switch18.hpp | 11+++++++++++
Msrc/Switch44.hpp | 10++++++++++
Msrc/Switch81.hpp | 11+++++++++++
Msrc/Switch88.hpp | 18++++++++++++++++++
Msrc/Test2.hpp | 11+++++++++++
Msrc/UMix.hpp | 11+++++++++++
Msrc/Unison.hpp | 7+++++++
Msrc/VCA.hpp | 8++++++++
Msrc/VCAmp.hpp | 5+++++
Msrc/VCF.hpp | 9+++++++++
Msrc/VCM.hpp | 12++++++++++++
Msrc/VCO.hpp | 10++++++++++
Msrc/VU.hpp | 7+++++++
Msrc/Velo.hpp | 7+++++++
Msrc/Vish.hpp | 8++++++++
Msrc/Walk.hpp | 7+++++++
Msrc/Walk2.hpp | 12++++++++++++
Msrc/XCO.hpp | 23+++++++++++++++++++++++
Msrc/XFade.hpp | 6++++++
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;