| @@ -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 { | ||||