@@ -21,7 +21,7 @@ struct _8vert : Module { | |||||
_8vert() { | _8vert() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
for (int i = 0; i < 8; i++) { | for (int i = 0; i < 8; i++) { | ||||
params[GAIN_PARAMS + i].config(-1.f, 1.f, 0.f, string::f("Ch %d gain", i + 1), "%", 0, 100); | |||||
configParam(GAIN_PARAMS + i, -1.f, 1.f, 0.f, string::f("Ch %d gain", i + 1), "%", 0, 100); | |||||
} | } | ||||
} | } | ||||
@@ -36,10 +36,10 @@ struct ADSR : Module { | |||||
ADSR() { | ADSR() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[ATTACK_PARAM].config(0.f, 1.f, 0.5f, "Attack"); | |||||
params[DECAY_PARAM].config(0.f, 1.f, 0.5f, "Decay"); | |||||
params[SUSTAIN_PARAM].config(0.f, 1.f, 0.5f, "Sustain"); | |||||
params[RELEASE_PARAM].config(0.f, 1.f, 0.5f, "Release"); | |||||
configParam(ATTACK_PARAM, 0.f, 1.f, 0.5f, "Attack"); | |||||
configParam(DECAY_PARAM, 0.f, 1.f, 0.5f, "Decay"); | |||||
configParam(SUSTAIN_PARAM, 0.f, 1.f, 0.5f, "Sustain"); | |||||
configParam(RELEASE_PARAM, 0.f, 1.f, 0.5f, "Release"); | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||
@@ -34,10 +34,10 @@ struct Delay : Module { | |||||
Delay() { | Delay() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | ||||
params[TIME_PARAM].config(0.f, 1.f, 0.5f, "Time"); | |||||
params[FEEDBACK_PARAM].config(0.f, 1.f, 0.5f, "Feedback"); | |||||
params[COLOR_PARAM].config(0.f, 1.f, 0.5f, "Color"); | |||||
params[MIX_PARAM].config(0.f, 1.f, 0.5f, "Mix", "%", 0, 100); | |||||
configParam(TIME_PARAM, 0.f, 1.f, 0.5f, "Time"); | |||||
configParam(FEEDBACK_PARAM, 0.f, 1.f, 0.5f, "Feedback"); | |||||
configParam(COLOR_PARAM, 0.f, 1.f, 0.5f, "Color"); | |||||
configParam(MIX_PARAM, 0.f, 1.f, 0.5f, "Mix", "%", 0, 100); | |||||
src = src_new(SRC_SINC_FASTEST, 1, NULL); | src = src_new(SRC_SINC_FASTEST, 1, NULL); | ||||
assert(src); | assert(src); | ||||
@@ -98,13 +98,13 @@ struct LFO : Module { | |||||
LFO() { | LFO() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[OFFSET_PARAM].config(0.f, 1.f, 1.f); | |||||
params[INVERT_PARAM].config(0.f, 1.f, 1.f); | |||||
params[FREQ_PARAM].config(-8.f, 10.f, 1.f); | |||||
params[FM1_PARAM].config(0.f, 1.f, 0.f); | |||||
params[PW_PARAM].config(0.f, 1.f, 0.5f); | |||||
params[FM2_PARAM].config(0.f, 1.f, 0.f); | |||||
params[PWM_PARAM].config(0.f, 1.f, 0.f); | |||||
configParam(OFFSET_PARAM, 0.f, 1.f, 1.f); | |||||
configParam(INVERT_PARAM, 0.f, 1.f, 1.f); | |||||
configParam(FREQ_PARAM, -8.f, 10.f, 1.f); | |||||
configParam(FM1_PARAM, 0.f, 1.f, 0.f); | |||||
configParam(PW_PARAM, 0.f, 1.f, 0.5f); | |||||
configParam(FM2_PARAM, 0.f, 1.f, 0.f); | |||||
configParam(PWM_PARAM, 0.f, 1.f, 0.f); | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||
@@ -194,11 +194,11 @@ struct LFO2 : Module { | |||||
LFO2() { | LFO2() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[OFFSET_PARAM].config(0.f, 1.f, 1.f); | |||||
params[INVERT_PARAM].config(0.f, 1.f, 1.f); | |||||
params[FREQ_PARAM].config(-8.f, 10.f, 1.f); | |||||
params[WAVE_PARAM].config(0.f, 3.f, 1.5f); | |||||
params[FM_PARAM].config(0.f, 1.f, 0.5f); | |||||
configParam(OFFSET_PARAM, 0.f, 1.f, 1.f); | |||||
configParam(INVERT_PARAM, 0.f, 1.f, 1.f); | |||||
configParam(FREQ_PARAM, -8.f, 10.f, 1.f); | |||||
configParam(WAVE_PARAM, 0.f, 3.f, 1.5f); | |||||
configParam(FM_PARAM, 0.f, 1.f, 0.5f); | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||
@@ -25,7 +25,7 @@ struct Mutes : Module { | |||||
Mutes() { | Mutes() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
for (int i = 0; i < 10; i++) { | for (int i = 0; i < 10; i++) { | ||||
params[MUTE_PARAM + i].config(0.0, 1.0, 0.0, string::f("Ch %d mute", i+1)); | |||||
configParam(MUTE_PARAM + i, 0.0, 1.0, 0.0, string::f("Ch %d mute", i+1)); | |||||
} | } | ||||
onReset(); | onReset(); | ||||
@@ -49,15 +49,15 @@ struct SEQ3 : Module { | |||||
SEQ3() { | SEQ3() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[CLOCK_PARAM].config(-2.f, 6.f, 2.f); | |||||
params[RUN_PARAM].config(0.f, 1.f, 0.f); | |||||
params[RESET_PARAM].config(0.f, 1.f, 0.f); | |||||
params[STEPS_PARAM].config(1.f, 8.f, 8.f); | |||||
configParam(CLOCK_PARAM, -2.f, 6.f, 2.f); | |||||
configParam(RUN_PARAM, 0.f, 1.f, 0.f); | |||||
configParam(RESET_PARAM, 0.f, 1.f, 0.f); | |||||
configParam(STEPS_PARAM, 1.f, 8.f, 8.f); | |||||
for (int i = 0; i < 8; i++) { | for (int i = 0; i < 8; i++) { | ||||
params[ROW1_PARAM + i].config(0.f, 10.f, 0.f); | |||||
params[ROW2_PARAM + i].config(0.f, 10.f, 0.f); | |||||
params[ROW3_PARAM + i].config(0.f, 10.f, 0.f); | |||||
params[GATE_PARAM + i].config(0.f, 1.f, 0.f); | |||||
configParam(ROW1_PARAM + i, 0.f, 10.f, 0.f); | |||||
configParam(ROW2_PARAM + i, 0.f, 10.f, 0.f); | |||||
configParam(ROW3_PARAM + i, 0.f, 10.f, 0.f); | |||||
configParam(GATE_PARAM + i, 0.f, 1.f, 0.f); | |||||
} | } | ||||
@@ -47,14 +47,19 @@ struct Scope : Module { | |||||
Scope() { | Scope() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[X_SCALE_PARAM].config(-2.f, 8.f, 0.f); | |||||
params[X_POS_PARAM].config(-10.f, 10.f, 0.f); | |||||
params[Y_SCALE_PARAM].config(-2.f, 8.f, 0.f); | |||||
params[Y_POS_PARAM].config(-10.f, 10.f, 0.f); | |||||
params[TIME_PARAM].config(6.f, 16.f, 14.f); | |||||
params[LISSAJOUS_PARAM].config(0.f, 1.f, 0.f); | |||||
params[TRIG_PARAM].config(-10.f, 10.f, 0.f); | |||||
params[EXTERNAL_PARAM].config(0.f, 1.f, 0.f); | |||||
configParam(X_SCALE_PARAM, -2.f, 8.f, 0.f); | |||||
configParam(X_POS_PARAM, -10.f, 10.f, 0.f); | |||||
configParam(Y_SCALE_PARAM, -2.f, 8.f, 0.f); | |||||
configParam(Y_POS_PARAM, -10.f, 10.f, 0.f); | |||||
configParam(TIME_PARAM, 6.f, 16.f, 14.f); | |||||
configParam(LISSAJOUS_PARAM, 0.f, 1.f, 0.f); | |||||
configParam(TRIG_PARAM, -10.f, 10.f, 0.f); | |||||
configParam(EXTERNAL_PARAM, 0.f, 1.f, 0.f); | |||||
} | |||||
void onReset() override { | |||||
lissajous = false; | |||||
external = false; | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||
@@ -132,11 +137,6 @@ struct Scope : Module { | |||||
if (extJ) | if (extJ) | ||||
external = json_integer_value(extJ); | external = json_integer_value(extJ); | ||||
} | } | ||||
void onReset() override { | |||||
lissajous = false; | |||||
external = false; | |||||
} | |||||
}; | }; | ||||
@@ -31,7 +31,7 @@ struct SequentialSwitch : Module { | |||||
SequentialSwitch() { | SequentialSwitch() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[STEPS_PARAM].config(0.0, 2.0, 0.0, "Steps", "", 0, -1, 4); | |||||
configParam(STEPS_PARAM, 0.0, 2.0, 0.0, "Steps", "", 0, -1, 4); | |||||
for (int i = 0; i < OUTPUTS; i++) { | for (int i = 0; i < OUTPUTS; i++) { | ||||
clickFilters[i].rise = 400.f; // Hz | clickFilters[i].rise = 400.f; // Hz | ||||
@@ -26,7 +26,7 @@ struct Sum : Module { | |||||
Sum() { | Sum() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[LEVEL_PARAM].config(0.f, 1.f, 1.f, "Level", "%", 0.f, 100.f); | |||||
configParam(LEVEL_PARAM, 0.f, 1.f, 1.f, "Level", "%", 0.f, 100.f); | |||||
vuMeter.lambda = 1 / 0.1f; | vuMeter.lambda = 1 / 0.1f; | ||||
vuCounter.setPeriod(16); | vuCounter.setPeriod(16); | ||||
@@ -29,8 +29,8 @@ struct Unity : Module { | |||||
Unity() { | Unity() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[AVG1_PARAM].config(0.0, 1.0, 0.0, "Ch 1 average mode"); | |||||
params[AVG2_PARAM].config(0.0, 1.0, 0.0, "Ch 2 average mode"); | |||||
configParam(AVG1_PARAM, 0.0, 1.0, 0.0, "Ch 1 average mode"); | |||||
configParam(AVG2_PARAM, 0.0, 1.0, 0.0, "Ch 2 average mode"); | |||||
lightCounter.setPeriod(256); | lightCounter.setPeriod(256); | ||||
} | } | ||||
@@ -24,8 +24,8 @@ struct VCA : Module { | |||||
VCA() { | VCA() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | ||||
params[LEVEL1_PARAM].config(0.0, 1.0, 1.0, "Ch 1 level", "%", 0, 100); | |||||
params[LEVEL2_PARAM].config(0.0, 1.0, 1.0, "Ch 2 level", "%", 0, 100); | |||||
configParam(LEVEL1_PARAM, 0.0, 1.0, 1.0, "Ch 1 level", "%", 0, 100); | |||||
configParam(LEVEL2_PARAM, 0.0, 1.0, 1.0, "Ch 2 level", "%", 0, 100); | |||||
} | } | ||||
void processChannel(Input &in, Param &level, Input &lin, Input &exp, Output &out) { | void processChannel(Input &in, Param &level, Input &lin, Input &exp, Output &out) { | ||||
@@ -151,8 +151,8 @@ struct VCA_1 : Module { | |||||
VCA_1() { | VCA_1() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[LEVEL_PARAM].config(0.0, 1.0, 1.0, "Level", "%", 0, 100); | |||||
params[EXP_PARAM].config(0.0, 1.0, 1.0, "Response mode"); | |||||
configParam(LEVEL_PARAM, 0.0, 1.0, 1.0, "Level", "%", 0, 100); | |||||
configParam(EXP_PARAM, 0.0, 1.0, 1.0, "Response mode"); | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||
@@ -80,11 +80,11 @@ struct VCF : Module { | |||||
VCF() { | VCF() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | ||||
params[FREQ_PARAM].config(0.f, 1.f, 0.5f, "Frequency"); | |||||
params[FINE_PARAM].config(0.f, 1.f, 0.5f, "Fine frequency"); | |||||
params[RES_PARAM].config(0.f, 1.f, 0.f, "Resonance"); | |||||
params[FREQ_CV_PARAM].config(-1.f, 1.f, 0.f, "Frequency modulation"); | |||||
params[DRIVE_PARAM].config(0.f, 1.f, 0.f, "Drive"); | |||||
configParam(FREQ_PARAM, 0.f, 1.f, 0.5f, "Frequency"); | |||||
configParam(FINE_PARAM, 0.f, 1.f, 0.5f, "Fine frequency"); | |||||
configParam(RES_PARAM, 0.f, 1.f, 0.f, "Resonance"); | |||||
configParam(FREQ_CV_PARAM, -1.f, 1.f, 0.f, "Frequency modulation"); | |||||
configParam(DRIVE_PARAM, 0.f, 1.f, 0.f, "Drive"); | |||||
} | } | ||||
void onReset() override { | void onReset() override { | ||||
@@ -22,12 +22,12 @@ struct VCMixer : Module { | |||||
VCMixer() { | VCMixer() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | ||||
// x^1 scaling up to 6 dB | // x^1 scaling up to 6 dB | ||||
params[MIX_LVL_PARAM].config(0.0, 2.0, 1.0, "Master level", " dB", -10, 20); | |||||
configParam(MIX_LVL_PARAM, 0.0, 2.0, 1.0, "Master level", " dB", -10, 20); | |||||
// x^2 scaling up to 6 dB | // x^2 scaling up to 6 dB | ||||
params[LVL_PARAM + 0].config(0.0, M_SQRT2, 1.0, "Ch 1 level", " dB", -10, 40); | |||||
params[LVL_PARAM + 1].config(0.0, M_SQRT2, 1.0, "Ch 2 level", " dB", -10, 40); | |||||
params[LVL_PARAM + 2].config(0.0, M_SQRT2, 1.0, "Ch 3 level", " dB", -10, 40); | |||||
params[LVL_PARAM + 3].config(0.0, M_SQRT2, 1.0, "Ch 4 level", " dB", -10, 40); | |||||
configParam(LVL_PARAM + 0, 0.0, M_SQRT2, 1.0, "Ch 1 level", " dB", -10, 40); | |||||
configParam(LVL_PARAM + 1, 0.0, M_SQRT2, 1.0, "Ch 2 level", " dB", -10, 40); | |||||
configParam(LVL_PARAM + 2, 0.0, M_SQRT2, 1.0, "Ch 3 level", " dB", -10, 40); | |||||
configParam(LVL_PARAM + 3, 0.0, M_SQRT2, 1.0, "Ch 4 level", " dB", -10, 40); | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||
@@ -195,13 +195,13 @@ struct VCO : Module { | |||||
VCO() { | VCO() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[MODE_PARAM].config(0.f, 1.f, 1.f, "Analog mode"); | |||||
params[SYNC_PARAM].config(0.f, 1.f, 1.f, "Hard sync"); | |||||
params[FREQ_PARAM].config(-54.f, 54.f, 0.f, "Frequency", "Hz", std::pow(2, 1/12.f), dsp::FREQ_C4); | |||||
params[FINE_PARAM].config(-1.f, 1.f, 0.f, "Fine frequency"); | |||||
params[FM_PARAM].config(0.f, 1.f, 0.f, "Frequency modulation"); | |||||
params[PW_PARAM].config(0.f, 1.f, 0.5f, "Pulse width", "%", 0.f, 100.f); | |||||
params[PWM_PARAM].config(0.f, 1.f, 0.f, "Pulse width modulation", "%", 0.f, 100.f); | |||||
configParam(MODE_PARAM, 0.f, 1.f, 1.f, "Analog mode"); | |||||
configParam(SYNC_PARAM, 0.f, 1.f, 1.f, "Hard sync"); | |||||
configParam(FREQ_PARAM, -54.f, 54.f, 0.f, "Frequency", "Hz", std::pow(2, 1/12.f), dsp::FREQ_C4); | |||||
configParam(FINE_PARAM, -1.f, 1.f, 0.f, "Fine frequency"); | |||||
configParam(FM_PARAM, 0.f, 1.f, 0.f, "Frequency modulation"); | |||||
configParam(PW_PARAM, 0.f, 1.f, 0.5f, "Pulse width", "%", 0.f, 100.f); | |||||
configParam(PWM_PARAM, 0.f, 1.f, 0.f, "Pulse width modulation", "%", 0.f, 100.f); | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||
@@ -301,11 +301,11 @@ struct VCO2 : Module { | |||||
VCO2() { | VCO2() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
params[MODE_PARAM].config(0.f, 1.f, 1.f, "Analog mode"); | |||||
params[SYNC_PARAM].config(0.f, 1.f, 1.f, "Hard sync"); | |||||
params[FREQ_PARAM].config(-54.f, 54.f, 0.f, "Frequency", "Hz", std::pow(2, 1/12.f), dsp::FREQ_C4); | |||||
params[WAVE_PARAM].config(0.f, 3.f, 1.5f, "Wave"); | |||||
params[FM_PARAM].config(0.f, 1.f, 0.f, "Frequency modulation"); | |||||
configParam(MODE_PARAM, 0.f, 1.f, 1.f, "Analog mode"); | |||||
configParam(SYNC_PARAM, 0.f, 1.f, 1.f, "Hard sync"); | |||||
configParam(FREQ_PARAM, -54.f, 54.f, 0.f, "Frequency", "Hz", std::pow(2, 1/12.f), dsp::FREQ_C4); | |||||
configParam(WAVE_PARAM, 0.f, 3.f, 1.5f, "Wave"); | |||||
configParam(FM_PARAM, 0.f, 1.f, 0.f, "Frequency modulation"); | |||||
} | } | ||||
void process(const ProcessArgs &args) override { | void process(const ProcessArgs &args) override { | ||||