@@ -198,6 +198,10 @@ struct Burst : Module { | |||||
configInput(TIME_INPUT, "Time Division/Multiplication"); | configInput(TIME_INPUT, "Time Division/Multiplication"); | ||||
configInput(PROBABILITY_INPUT, "Probability"); | configInput(PROBABILITY_INPUT, "Probability"); | ||||
configInput(TRIGGER_INPUT, "Trigger"); | configInput(TRIGGER_INPUT, "Trigger"); | ||||
configOutput(TEMPO_OUTPUT, "Tempo"); | |||||
configOutput(EOC_OUTPUT, "End-of-cycle"); | |||||
configOutput(OUT_OUTPUT, "Burst"); | |||||
ledUpdate.setDivision(ledUpdateRate); | ledUpdate.setDivision(ledUpdateRate); | ||||
} | } | ||||
@@ -30,6 +30,12 @@ struct DualAtenuverter : Module { | |||||
configParam(OFFSET1_PARAM, -10.0, 10.0, 0.0, "Ch 1 offset", " V"); | configParam(OFFSET1_PARAM, -10.0, 10.0, 0.0, "Ch 1 offset", " V"); | ||||
configParam(ATEN2_PARAM, -1.0, 1.0, 0.0, "Ch 2 gain"); | configParam(ATEN2_PARAM, -1.0, 1.0, 0.0, "Ch 2 gain"); | ||||
configParam(OFFSET2_PARAM, -10.0, 10.0, 0.0, "Ch 2 offset", " V"); | configParam(OFFSET2_PARAM, -10.0, 10.0, 0.0, "Ch 2 offset", " V"); | ||||
configInput(IN1_INPUT, "In 1"); | |||||
configInput(IN2_INPUT, "In 2"); | |||||
configOutput(OUT1_OUTPUT, "Out 1"); | |||||
configOutput(OUT2_OUTPUT, "Out 2"); | |||||
configBypass(IN1_INPUT, OUT1_OUTPUT); | configBypass(IN1_INPUT, OUT1_OUTPUT); | ||||
configBypass(IN2_INPUT, OUT2_OUTPUT); | configBypass(IN2_INPUT, OUT2_OUTPUT); | ||||
} | } | ||||
@@ -36,6 +36,10 @@ struct Mixer : Module { | |||||
configParam(CH3_PARAM, 0.0, 1.0, 0.0, "Ch 3 level", "%", 0, 100); | configParam(CH3_PARAM, 0.0, 1.0, 0.0, "Ch 3 level", "%", 0, 100); | ||||
configParam(CH4_PARAM, 0.0, 1.0, 0.0, "Ch 4 level", "%", 0, 100); | configParam(CH4_PARAM, 0.0, 1.0, 0.0, "Ch 4 level", "%", 0, 100); | ||||
configInput(IN1_INPUT, "Ch 1"); | |||||
configInput(IN2_INPUT, "Ch 2"); | |||||
configInput(IN3_INPUT, "Ch 3"); | |||||
configInput(IN4_INPUT, "Ch 4"); | |||||
configOutput(OUT1_OUTPUT, "Main"); | configOutput(OUT1_OUTPUT, "Main"); | ||||
configOutput(OUT2_OUTPUT, "Inverted"); | configOutput(OUT2_OUTPUT, "Inverted"); | ||||
} | } | ||||
@@ -105,6 +105,9 @@ struct Morphader : Module { | |||||
configSwitch(MODE + i, AUDIO_MODE, CV_MODE, AUDIO_MODE, string::f("Mode %d", i + 1), {"Audio", "CV"}); | configSwitch(MODE + i, AUDIO_MODE, CV_MODE, AUDIO_MODE, string::f("Mode %d", i + 1), {"Audio", "CV"}); | ||||
configInput(CV_INPUT + i, string::f("CV channel %d", i + 1)); | configInput(CV_INPUT + i, string::f("CV channel %d", i + 1)); | ||||
} | } | ||||
for (int i = 0; i < NUM_MIXER_CHANNELS; i++) { | |||||
configOutput(OUT + i, string::f("Channel %d", i + 1)); | |||||
} | |||||
configParam(FADER_LAG_PARAM, 2.0f / slewMax, 2.0f / slewMin, 2.0f / slewMax, "Fader lag", "s"); | configParam(FADER_LAG_PARAM, 2.0f / slewMax, 2.0f / slewMin, 2.0f / slewMax, "Fader lag", "s"); | ||||
configParam(FADER_PARAM, -1.f, 1.f, 0.f, "Fader"); | configParam(FADER_PARAM, -1.f, 1.f, 0.f, "Fader"); | ||||
@@ -177,8 +177,8 @@ struct MultDivClock { | |||||
static const std::vector<int> clockOptionsQuadratic = {-16, -8, -4, -2, 1, 2, 4, 8, 16}; | static const std::vector<int> clockOptionsQuadratic = {-16, -8, -4, -2, 1, 2, 4, 8, 16}; | ||||
static const std::vector<int> clockOptionsAll = {-16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, 1, | static const std::vector<int> clockOptionsAll = {-16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, 1, | ||||
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 | |||||
}; | |||||
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 | |||||
}; | |||||
inline std::string getClockOptionString(const int clockOption) { | inline std::string getClockOptionString(const int clockOption) { | ||||
return (clockOption < 0) ? ("x 1/" + std::to_string(-clockOption)) : ("x " + std::to_string(clockOption)); | return (clockOption < 0) ? ("x 1/" + std::to_string(-clockOption)) : ("x " + std::to_string(clockOption)); | ||||
@@ -887,7 +887,7 @@ struct MuxlicerWidget : ModuleWidget { | |||||
for (int clockOption : module->quadraticGatesOnly ? clockOptionsQuadratic : clockOptionsAll) { | for (int clockOption : module->quadraticGatesOnly ? clockOptionsQuadratic : clockOptionsAll) { | ||||
std::string optionString = getClockOptionString(clockOption); | std::string optionString = getClockOptionString(clockOption); | ||||
OutputClockScalingChildItem* clockItem = createMenuItem<OutputClockScalingChildItem>(optionString, | OutputClockScalingChildItem* clockItem = createMenuItem<OutputClockScalingChildItem>(optionString, | ||||
CHECKMARK(module->outputClockMultDiv.multDiv == clockOption)); | |||||
CHECKMARK(module->outputClockMultDiv.multDiv == clockOption)); | |||||
clockItem->clockOutMulDiv = clockOption; | clockItem->clockOutMulDiv = clockOption; | ||||
clockItem->module = module; | clockItem->module = module; | ||||
menu->addChild(clockItem); | menu->addChild(clockItem); | ||||
@@ -1079,6 +1079,9 @@ struct Mex : Module { | |||||
for (int i = 0; i < 8; ++i) { | for (int i = 0; i < 8; ++i) { | ||||
configSwitch(STEP_PARAM + i, 0.f, 2.f, 0.f, string::f("Step %d", i + 1), {"Gate in/Clock Out", "Muted", "All Gates"}); | configSwitch(STEP_PARAM + i, 0.f, 2.f, 0.f, string::f("Step %d", i + 1), {"Gate in/Clock Out", "Muted", "All Gates"}); | ||||
} | } | ||||
configInput(GATE_IN_INPUT, "Gate"); | |||||
configOutput(OUT_OUTPUT, "Gate"); | |||||
} | } | ||||
Muxlicer* findHostModulePtr(Module* module) { | Muxlicer* findHostModulePtr(Module* module) { | ||||
@@ -47,6 +47,7 @@ struct Percall : Module { | |||||
configInput(CH_INPUTS + i, string::f("Channel %d", i + 1)); | configInput(CH_INPUTS + i, string::f("Channel %d", i + 1)); | ||||
configInput(TRIG_INPUTS + i, string::f("Channel %d trigger", i + 1)); | configInput(TRIG_INPUTS + i, string::f("Channel %d trigger", i + 1)); | ||||
configInput(CV_INPUTS + i, string::f("Channel %d CV", i + 1)); | configInput(CV_INPUTS + i, string::f("Channel %d CV", i + 1)); | ||||
configOutput(CH_OUTPUTS + i, string::f("Channel %d", i + 1)); | |||||
configOutput(ENV_OUTPUTS + i, string::f("Channel %d envelope", i + 1)); | configOutput(ENV_OUTPUTS + i, string::f("Channel %d envelope", i + 1)); | ||||
envs[i].attackTime = attackTime; | envs[i].attackTime = attackTime; | ||||
@@ -64,6 +64,14 @@ struct SamplingModulator : Module { | |||||
configParam(FINE_PARAM, 0.f, 1.f, 0.f, "Fine tune"); | configParam(FINE_PARAM, 0.f, 1.f, 0.f, "Fine tune"); | ||||
configSwitch(INT_EXT_PARAM, 0.f, 1.f, CLOCK_INTERNAL, "Clock", {"External", "Internal"}); | configSwitch(INT_EXT_PARAM, 0.f, 1.f, CLOCK_INTERNAL, "Clock", {"External", "Internal"}); | ||||
configInput(SYNC_INPUT, "Sync"); | |||||
configInput(VOCT_INPUT, "V/Oct"); | |||||
configInput(HOLD_INPUT, "Hold"); | |||||
configInput(IN_INPUT, "Raw"); | |||||
configOutput(CLOCK_OUTPUT, "Clock"); | |||||
configOutput(TRIGG_OUTPUT, "Trigger"); | |||||
configOutput(OUT_OUTPUT, "Sampled"); | |||||
for (int i = 0; i < numSteps; i++) { | for (int i = 0; i < numSteps; i++) { | ||||
configSwitch(STEP_PARAM + i, 0.f, 2.f, STATE_ON, string::f("Step %d", i + 1), {"Reset", "Off", "On"}); | configSwitch(STEP_PARAM + i, 0.f, 2.f, STATE_ON, string::f("Step %d", i + 1), {"Reset", "Off", "On"}); | ||||
} | } | ||||
@@ -31,6 +31,9 @@ struct SlewLimiter : Module { | |||||
configInput(RISE_INPUT, "Rise CV"); | configInput(RISE_INPUT, "Rise CV"); | ||||
configInput(FALL_INPUT, "Fall CV"); | configInput(FALL_INPUT, "Fall CV"); | ||||
configInput(IN_INPUT, "In"); | |||||
configOutput(OUT_OUTPUT, "Out"); | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||
@@ -66,6 +66,15 @@ struct SpringReverb : Module { | |||||
configParam(LEVEL2_PARAM, 0.0, 1.0, 0.0, "In 2 level", "%", 0, 100); | configParam(LEVEL2_PARAM, 0.0, 1.0, 0.0, "In 2 level", "%", 0, 100); | ||||
configParam(HPF_PARAM, 0.0, 1.0, 0.5, "High pass filter cutoff"); | configParam(HPF_PARAM, 0.0, 1.0, 0.5, "High pass filter cutoff"); | ||||
configInput(CV1_INPUT, "CV 1"); | |||||
configInput(CV2_INPUT, "CV 2"); | |||||
configInput(IN1_INPUT, "In 1"); | |||||
configInput(IN2_INPUT, "In 2"); | |||||
configInput(MIX_CV_INPUT, "Mix CV"); | |||||
configOutput(MIX_OUTPUT, "Mix"); | |||||
configOutput(WET_OUTPUT, "Wet"); | |||||
initIR(); | initIR(); | ||||
convolver = new dsp::RealTimeConvolver(BLOCK_SIZE); | convolver = new dsp::RealTimeConvolver(BLOCK_SIZE); | ||||
@@ -33,7 +33,7 @@ struct Voltio : Module { | |||||
semitonesParam->snapEnabled = true; | semitonesParam->snapEnabled = true; | ||||
configInput(SUM_INPUT, "Sum"); | configInput(SUM_INPUT, "Sum"); | ||||
configOutput(OUT_OUTPUT, ""); | |||||
configOutput(OUT_OUTPUT, "Main"); | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||