@@ -21,7 +21,7 @@ struct _8vert : Module { | |||
_8vert() { | |||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |||
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() { | |||
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 { | |||
@@ -34,10 +34,10 @@ struct Delay : Module { | |||
Delay() { | |||
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); | |||
assert(src); | |||
@@ -98,13 +98,13 @@ struct LFO : Module { | |||
LFO() { | |||
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 { | |||
@@ -194,11 +194,11 @@ struct LFO2 : Module { | |||
LFO2() { | |||
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 { | |||
@@ -25,7 +25,7 @@ struct Mutes : Module { | |||
Mutes() { | |||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |||
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(); | |||
@@ -49,15 +49,15 @@ struct SEQ3 : Module { | |||
SEQ3() { | |||
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++) { | |||
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() { | |||
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 { | |||
@@ -132,11 +137,6 @@ struct Scope : Module { | |||
if (extJ) | |||
external = json_integer_value(extJ); | |||
} | |||
void onReset() override { | |||
lissajous = false; | |||
external = false; | |||
} | |||
}; | |||
@@ -31,7 +31,7 @@ struct SequentialSwitch : Module { | |||
SequentialSwitch() { | |||
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++) { | |||
clickFilters[i].rise = 400.f; // Hz | |||
@@ -26,7 +26,7 @@ struct Sum : Module { | |||
Sum() { | |||
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; | |||
vuCounter.setPeriod(16); | |||
@@ -29,8 +29,8 @@ struct Unity : Module { | |||
Unity() { | |||
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); | |||
} | |||
@@ -24,8 +24,8 @@ struct VCA : Module { | |||
VCA() { | |||
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) { | |||
@@ -151,8 +151,8 @@ struct VCA_1 : Module { | |||
VCA_1() { | |||
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 { | |||
@@ -80,11 +80,11 @@ struct VCF : Module { | |||
VCF() { | |||
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 { | |||
@@ -22,12 +22,12 @@ struct VCMixer : Module { | |||
VCMixer() { | |||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); | |||
// 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 | |||
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 { | |||
@@ -195,13 +195,13 @@ struct VCO : Module { | |||
VCO() { | |||
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 { | |||
@@ -301,11 +301,11 @@ struct VCO2 : Module { | |||
VCO2() { | |||
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 { | |||