@@ -45,14 +45,13 @@ struct Blinds : Module { | |||||
Blinds() { | Blinds() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(GAIN1_PARAM, -1.0, 1.0, 0.0, "Polarity and gain 1"); | |||||
configParam(GAIN2_PARAM, -1.0, 1.0, 0.0, "Polarity and gain 2"); | |||||
configParam(GAIN3_PARAM, -1.0, 1.0, 0.0, "Polarity and gain 3"); | |||||
configParam(GAIN4_PARAM, -1.0, 1.0, 0.0, "Polarity and gain 4"); | |||||
configParam(MOD1_PARAM, -1.0, 1.0, 0.0, "Modulation 1"); | |||||
configParam(MOD2_PARAM, -1.0, 1.0, 0.0, "Modulation 2"); | |||||
configParam(MOD3_PARAM, -1.0, 1.0, 0.0, "Modulation 3"); | |||||
configParam(MOD4_PARAM, -1.0, 1.0, 0.0, "Modulation 4"); | |||||
for (int c = 0; c < 4; c++) { | |||||
configParam(GAIN1_PARAM + c, -1.0, 1.0, 0.0, string::f("Channel %d gain", c + 1), "%", 0, 100); | |||||
configParam(MOD1_PARAM + c, -1.0, 1.0, 0.0, string::f("Channel %d CV amount", c + 1)); | |||||
configInput(IN1_INPUT + c, string::f("Channel %d", c + 1)); | |||||
configInput(CV1_INPUT + c, string::f("Channel %d CV", c + 1)); | |||||
configOutput(OUT1_OUTPUT + c, string::f("Channel %d", c + 1)); | |||||
} | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||
@@ -47,6 +47,12 @@ struct Braids : Module { | |||||
configParam(TIMBRE_PARAM, 0.0, 1.0, 0.5, "Timbre", "%", 0.f, 100.f); | configParam(TIMBRE_PARAM, 0.0, 1.0, 0.5, "Timbre", "%", 0.f, 100.f); | ||||
configParam(MODULATION_PARAM, -1.0, 1.0, 0.0, "Modulation"); | configParam(MODULATION_PARAM, -1.0, 1.0, 0.0, "Modulation"); | ||||
configParam(COLOR_PARAM, 0.0, 1.0, 0.5, "Color", "%", 0.f, 100.f); | configParam(COLOR_PARAM, 0.0, 1.0, 0.5, "Color", "%", 0.f, 100.f); | ||||
configInput(TRIG_INPUT, "Trigger"); | |||||
configInput(PITCH_INPUT, "Pitch (1V/oct)"); | |||||
configInput(FM_INPUT, "FM"); | |||||
configInput(TIMBRE_INPUT, "Timbre"); | |||||
configInput(COLOR_INPUT, "Color"); | |||||
configOutput(OUT_OUTPUT, "Audio"); | |||||
memset(&osc, 0, sizeof(osc)); | memset(&osc, 0, sizeof(osc)); | ||||
osc.Init(); | osc.Init(); | ||||
@@ -35,10 +35,14 @@ struct Branches : Module { | |||||
Branches() { | Branches() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(THRESHOLD1_PARAM, 0.0, 1.0, 0.5, "Channel 1 probability", "%", 0, 100); | |||||
configParam(MODE1_PARAM, 0.0, 1.0, 0.0, "Channel 1 mode"); | |||||
configParam(THRESHOLD2_PARAM, 0.0, 1.0, 0.5, "Channel 2 probability", "%", 0, 100); | |||||
configParam(MODE2_PARAM, 0.0, 1.0, 0.0, "Channel 2 mode"); | |||||
for (int c = 0; c < 2; c++) { | |||||
configParam(THRESHOLD1_PARAM + c, 0.0, 1.0, 0.5, string::f("Channel %d probability", c + 1), "%", 0, 100); | |||||
configParam(MODE1_PARAM + c, 0.0, 1.0, 0.0, string::f("Channel %d mode", c + 1)); | |||||
configInput(IN1_INPUT + c, string::f("Channel %d", c + 1)); | |||||
configInput(P1_INPUT + c, string::f("Channel %d probability", c + 1)); | |||||
configOutput(OUT1A_OUTPUT + c, string::f("Channel %d A", c + 1)); | |||||
configOutput(OUT1B_OUTPUT + c, string::f("Channel %d B", c + 1)); | |||||
} | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||
@@ -77,9 +77,21 @@ struct Clouds : Module { | |||||
configParam(SPREAD_PARAM, 0.0, 1.0, 0.0, "Stereo spread"); | configParam(SPREAD_PARAM, 0.0, 1.0, 0.0, "Stereo spread"); | ||||
configParam(FEEDBACK_PARAM, 0.0, 1.0, 0.0, "Feedback amount"); | configParam(FEEDBACK_PARAM, 0.0, 1.0, 0.0, "Feedback amount"); | ||||
configParam(REVERB_PARAM, 0.0, 1.0, 0.0, "Reverb amount"); | configParam(REVERB_PARAM, 0.0, 1.0, 0.0, "Reverb amount"); | ||||
configParam(FREEZE_PARAM, 0.0, 1.0, 0.0, "Freeze"); | |||||
configParam(MODE_PARAM, 0.0, 1.0, 0.0, "Mode"); | |||||
configParam(LOAD_PARAM, 0.0, 1.0, 0.0, "Load/save"); | |||||
configButton(FREEZE_PARAM, "Freeze"); | |||||
configButton(MODE_PARAM, "Mode"); | |||||
configButton(LOAD_PARAM, "Load/save"); | |||||
configInput(FREEZE_INPUT, "Freeze"); | |||||
configInput(TRIG_INPUT, "Trigger"); | |||||
configInput(POSITION_INPUT, "Position"); | |||||
configInput(SIZE_INPUT, "Size"); | |||||
configInput(PITCH_INPUT, "Pitch (1V/oct)"); | |||||
configInput(BLEND_INPUT, "Blend"); | |||||
configInput(IN_L_INPUT, "Left"); | |||||
configInput(IN_R_INPUT, "Right"); | |||||
configInput(DENSITY_INPUT, "Density"); | |||||
configInput(TEXTURE_INPUT, "Texture"); | |||||
configOutput(OUT_L_OUTPUT, "Left"); | |||||
configOutput(OUT_R_OUTPUT, "Right"); | |||||
const int memLen = 118784; | const int memLen = 118784; | ||||
const int ccmLen = 65536 - 128; | const int ccmLen = 65536 - 128; | ||||
@@ -97,17 +97,37 @@ struct Elements : Module { | |||||
configParam(DAMPING_PARAM, 0.0, 1.0, 0.5, "Energy dissipation speed"); | configParam(DAMPING_PARAM, 0.0, 1.0, 0.5, "Energy dissipation speed"); | ||||
configParam(POSITION_PARAM, 0.0, 1.0, 0.5, "Excitation position"); | configParam(POSITION_PARAM, 0.0, 1.0, 0.5, "Excitation position"); | ||||
configParam(SPACE_PARAM, 0.0, 2.0, 0.0, "Reverb space"); | configParam(SPACE_PARAM, 0.0, 2.0, 0.0, "Reverb space"); | ||||
configParam(BOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0, "Bow timbre attenuverter"); | |||||
configParam(FLOW_MOD_PARAM, -1.0, 1.0, 0.0, "Air flow noise attenuverter"); | |||||
configParam(BLOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0, "Blow timbre attenuverter"); | |||||
configParam(MALLET_MOD_PARAM, -1.0, 1.0, 0.0, "Percussive noise attenuverter"); | |||||
configParam(STRIKE_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0, "Strike timbre attenuverter"); | |||||
configParam(DAMPING_MOD_PARAM, -1.0, 1.0, 0.0, "Energy dissipation speed attenuverter"); | |||||
configParam(GEOMETRY_MOD_PARAM, -1.0, 1.0, 0.0, "Resonator geometry attenuverter"); | |||||
configParam(POSITION_MOD_PARAM, -1.0, 1.0, 0.0, "Excitation position attenuverter"); | |||||
configParam(BRIGHTNESS_MOD_PARAM, -1.0, 1.0, 0.0, "Brightness attenuverter"); | |||||
configParam(SPACE_MOD_PARAM, -2.0, 2.0, 0.0, "Reverb space attenuverter"); | |||||
configParam(PLAY_PARAM, 0.0, 1.0, 0.0, "Play"); | |||||
configParam(BOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0, "Bow timbre CV"); | |||||
configParam(FLOW_MOD_PARAM, -1.0, 1.0, 0.0, "Air flow noise CV"); | |||||
configParam(BLOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0, "Blow timbre CV"); | |||||
configParam(MALLET_MOD_PARAM, -1.0, 1.0, 0.0, "Percussive noise CV"); | |||||
configParam(STRIKE_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0, "Strike timbre CV"); | |||||
configParam(DAMPING_MOD_PARAM, -1.0, 1.0, 0.0, "Energy dissipation speed CV"); | |||||
configParam(GEOMETRY_MOD_PARAM, -1.0, 1.0, 0.0, "Resonator geometry CV"); | |||||
configParam(POSITION_MOD_PARAM, -1.0, 1.0, 0.0, "Excitation position CV"); | |||||
configParam(BRIGHTNESS_MOD_PARAM, -1.0, 1.0, 0.0, "Brightness CV"); | |||||
configParam(SPACE_MOD_PARAM, -2.0, 2.0, 0.0, "Reverb space CV"); | |||||
configButton(PLAY_PARAM, "Play"); | |||||
configInput(NOTE_INPUT, "Pitch (1V/oct)"); | |||||
configInput(FM_INPUT, "FM"); | |||||
configInput(GATE_INPUT, "Gate"); | |||||
configInput(STRENGTH_INPUT, "Strength"); | |||||
configInput(BLOW_INPUT, "External blow"); | |||||
configInput(STRIKE_INPUT, "External strike"); | |||||
configInput(BOW_TIMBRE_MOD_INPUT, "Bow timbre"); | |||||
configInput(FLOW_MOD_INPUT, "Air flow noise"); | |||||
configInput(BLOW_TIMBRE_MOD_INPUT, "Blow timbre"); | |||||
configInput(MALLET_MOD_INPUT, "Percussive noise"); | |||||
configInput(STRIKE_TIMBRE_MOD_INPUT, "Strike timbre"); | |||||
configInput(DAMPING_MOD_INPUT, "Energy dissipation speed"); | |||||
configInput(GEOMETRY_MOD_INPUT, "Resonator geometry"); | |||||
configInput(POSITION_MOD_INPUT, "Excitation position"); | |||||
configInput(BRIGHTNESS_MOD_INPUT, "Brightness"); | |||||
configInput(SPACE_MOD_INPUT, "Reverb space"); | |||||
configOutput(AUX_OUTPUT, "Left"); | |||||
configOutput(MAIN_OUTPUT, "Right"); | |||||
for (int c = 0; c < 16; c++) { | for (int c = 0; c < 16; c++) { | ||||
parts[c] = new elements::Part(); | parts[c] = new elements::Part(); | ||||
@@ -51,15 +51,29 @@ struct Frames : Module { | |||||
Frames() { | Frames() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(GAIN1_PARAM, 0.0, 1.0, 0.0, "Gain 1"); | |||||
configParam(GAIN2_PARAM, 0.0, 1.0, 0.0, "Gain 2"); | |||||
configParam(GAIN3_PARAM, 0.0, 1.0, 0.0, "Gain 3"); | |||||
configParam(GAIN4_PARAM, 0.0, 1.0, 0.0, "Gain 4"); | |||||
configParam(GAIN1_PARAM, 0.0, 1.0, 0.0, "Channel 1 gain"); | |||||
configParam(GAIN2_PARAM, 0.0, 1.0, 0.0, "Channel 2 gain"); | |||||
configParam(GAIN3_PARAM, 0.0, 1.0, 0.0, "Channel 3 gain"); | |||||
configParam(GAIN4_PARAM, 0.0, 1.0, 0.0, "Channel 4 gain"); | |||||
configParam(FRAME_PARAM, 0.0, 1.0, 0.0, "Frame"); | configParam(FRAME_PARAM, 0.0, 1.0, 0.0, "Frame"); | ||||
configParam(MODULATION_PARAM, -1.0, 1.0, 0.0, "Animation attenuverter"); | configParam(MODULATION_PARAM, -1.0, 1.0, 0.0, "Animation attenuverter"); | ||||
configParam(ADD_PARAM, 0.0, 1.0, 0.0, "Add keyframe"); | |||||
configParam(DEL_PARAM, 0.0, 1.0, 0.0, "Delete keyframe"); | |||||
configParam(OFFSET_PARAM, 0.0, 1.0, 0.0, "+10V offset"); | |||||
configButton(ADD_PARAM, "Add keyframe"); | |||||
configButton(DEL_PARAM, "Delete keyframe"); | |||||
configSwitch(OFFSET_PARAM, 0.0, 1.0, 0.0, "Offset", {"+0V", "+10V"}); | |||||
configInput(ALL_INPUT, "All"); | |||||
configInput(IN1_INPUT, "Channel 1"); | |||||
configInput(IN2_INPUT, "Channel 2"); | |||||
configInput(IN3_INPUT, "Channel 3"); | |||||
configInput(IN4_INPUT, "Channel 4"); | |||||
configInput(FRAME_INPUT, "Frame"); | |||||
configOutput(MIX_OUTPUT, "Mix"); | |||||
configOutput(OUT1_OUTPUT, "Channel 1"); | |||||
configOutput(OUT2_OUTPUT, "Channel 2"); | |||||
configOutput(OUT3_OUTPUT, "Channel 3"); | |||||
configOutput(OUT4_OUTPUT, "Channel 4"); | |||||
configOutput(FRAME_STEP_OUTPUT, "Frame step"); | |||||
memset(&keyframer, 0, sizeof(keyframer)); | memset(&keyframer, 0, sizeof(keyframer)); | ||||
keyframer.Init(); | keyframer.Init(); | ||||
@@ -35,6 +35,20 @@ struct Kinks : Module { | |||||
Kinks() { | Kinks() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configInput(SIGN_INPUT, "Sign"); | |||||
configInput(LOGIC_A_INPUT, "Logic A"); | |||||
configInput(LOGIC_B_INPUT, "Logic B"); | |||||
configInput(SH_INPUT, "Sample & hold"); | |||||
configInput(TRIG_INPUT, "S&H trigger"); | |||||
configOutput(INVERT_OUTPUT, "Invert"); | |||||
configOutput(HALF_RECTIFY_OUTPUT, "Half rectified"); | |||||
configOutput(FULL_RECTIFY_OUTPUT, "Full rectified"); | |||||
configOutput(MAX_OUTPUT, "Maximum"); | |||||
configOutput(MIN_OUTPUT, "Minimum"); | |||||
configOutput(NOISE_OUTPUT, "Noise"); | |||||
configOutput(SH_OUTPUT, "Sample & hold"); | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||
@@ -32,6 +32,18 @@ struct Links : Module { | |||||
Links() { | Links() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configInput(A1_INPUT, "A1"); | |||||
configInput(B1_INPUT, "B1"); | |||||
configInput(B2_INPUT, "B2"); | |||||
configInput(C1_INPUT, "C1"); | |||||
configInput(C2_INPUT, "C2"); | |||||
configInput(C3_INPUT, "C3"); | |||||
configOutput(A1_OUTPUT, "A1"); | |||||
configOutput(A2_OUTPUT, "A2"); | |||||
configOutput(A3_OUTPUT, "A3"); | |||||
configOutput(B1_OUTPUT, "B1"); | |||||
configOutput(B2_OUTPUT, "B2"); | |||||
configOutput(C1_OUTPUT, "C1"); | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||
@@ -225,22 +225,40 @@ struct Marbles : Module { | |||||
Marbles() { | Marbles() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(T_DEJA_VU_PARAM, 0.0, 1.0, 0.0, "t deja vu"); | |||||
configParam(X_DEJA_VU_PARAM, 0.0, 1.0, 0.0, "X deja vu"); | |||||
configButton(T_DEJA_VU_PARAM, "T deja vu"); | |||||
configButton(X_DEJA_VU_PARAM, "X deja vu"); | |||||
configParam(DEJA_VU_PARAM, 0.0, 1.0, 0.5, "Deja vu probability"); | configParam(DEJA_VU_PARAM, 0.0, 1.0, 0.5, "Deja vu probability"); | ||||
configParam(T_RATE_PARAM, -1.0, 1.0, 0.0, "Clock rate"); | configParam(T_RATE_PARAM, -1.0, 1.0, 0.0, "Clock rate"); | ||||
configParam(X_SPREAD_PARAM, 0.0, 1.0, 0.5, "Probability distribution"); | configParam(X_SPREAD_PARAM, 0.0, 1.0, 0.5, "Probability distribution"); | ||||
configParam(T_MODE_PARAM, 0.0, 1.0, 0.0, "t mode"); | |||||
configParam(X_MODE_PARAM, 0.0, 1.0, 0.0, "X mode"); | |||||
configButton(T_MODE_PARAM, "T mode"); | |||||
configButton(X_MODE_PARAM, "X mode"); | |||||
configParam(DEJA_VU_LENGTH_PARAM, 0.0, 1.0, 0.0, "Loop length"); | configParam(DEJA_VU_LENGTH_PARAM, 0.0, 1.0, 0.0, "Loop length"); | ||||
configParam(T_BIAS_PARAM, 0.0, 1.0, 0.5, "Gate bias"); | configParam(T_BIAS_PARAM, 0.0, 1.0, 0.5, "Gate bias"); | ||||
configParam(X_BIAS_PARAM, 0.0, 1.0, 0.5, "Distribution bias"); | configParam(X_BIAS_PARAM, 0.0, 1.0, 0.5, "Distribution bias"); | ||||
configParam(T_RANGE_PARAM, 0.0, 1.0, 0.0, "Clock range mode"); | |||||
configParam(X_RANGE_PARAM, 0.0, 1.0, 0.0, "Output voltage range mode"); | |||||
configParam(EXTERNAL_PARAM, 0.0, 1.0, 0.0, "External processing mode"); | |||||
configButton(T_RANGE_PARAM, "Clock range mode"); | |||||
configButton(X_RANGE_PARAM, "Output voltage range mode"); | |||||
configButton(EXTERNAL_PARAM, "External processing mode"); | |||||
configParam(T_JITTER_PARAM, 0.0, 1.0, 0.0, "Randomness amount"); | configParam(T_JITTER_PARAM, 0.0, 1.0, 0.0, "Randomness amount"); | ||||
configParam(X_STEPS_PARAM, 0.0, 1.0, 0.5, "Smoothness"); | configParam(X_STEPS_PARAM, 0.0, 1.0, 0.5, "Smoothness"); | ||||
configInput(T_BIAS_INPUT, "T bias"); | |||||
configInput(X_BIAS_INPUT, "X bias"); | |||||
configInput(T_CLOCK_INPUT, "T clock"); | |||||
configInput(T_RATE_INPUT, "T rate"); | |||||
configInput(T_JITTER_INPUT, "T jitter"); | |||||
configInput(DEJA_VU_INPUT, "Deja vu"); | |||||
configInput(X_STEPS_INPUT, "X steps"); | |||||
configInput(X_SPREAD_INPUT, "X spread"); | |||||
configInput(X_CLOCK_INPUT, "X clock"); | |||||
configOutput(T1_OUTPUT, "T₁"); | |||||
configOutput(T2_OUTPUT, "T₂"); | |||||
configOutput(T3_OUTPUT, "T₃"); | |||||
configOutput(Y_OUTPUT, "Y"); | |||||
configOutput(X1_OUTPUT, "X₁"); | |||||
configOutput(X2_OUTPUT, "X₂"); | |||||
configOutput(X3_OUTPUT, "X₃"); | |||||
random_generator.Init(1); | random_generator.Init(1); | ||||
random_stream.Init(&random_generator); | random_stream.Init(&random_generator); | ||||
note_filter.Init(); | note_filter.Init(); | ||||
@@ -591,7 +609,7 @@ struct MarblesWidget : ModuleWidget { | |||||
menu->addChild(new MenuSeparator); | menu->addChild(new MenuSeparator); | ||||
menu->addChild(createIndexPtrSubmenuItem("t mode", { | |||||
menu->addChild(createIndexPtrSubmenuItem("T mode", { | |||||
"Complementary Bernoulli", | "Complementary Bernoulli", | ||||
"Clusters", | "Clusters", | ||||
"Drums", | "Drums", | ||||
@@ -601,7 +619,7 @@ struct MarblesWidget : ModuleWidget { | |||||
"Markov", | "Markov", | ||||
}, &module->t_mode)); | }, &module->t_mode)); | ||||
menu->addChild(createIndexPtrSubmenuItem("t range", { | |||||
menu->addChild(createIndexPtrSubmenuItem("T range", { | |||||
"1/4x", | "1/4x", | ||||
"1x", | "1x", | ||||
"4x", | "4x", | ||||
@@ -58,8 +58,8 @@ struct Plaits : Module { | |||||
Plaits() { | Plaits() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(MODEL1_PARAM, 0.0, 1.0, 0.0, "Model selection 1"); | |||||
configParam(MODEL2_PARAM, 0.0, 1.0, 0.0, "Model selection 2"); | |||||
configButton(MODEL1_PARAM, "Pitched models"); | |||||
configButton(MODEL2_PARAM, "Noise/percussive models"); | |||||
configParam(FREQ_PARAM, -4.0, 4.0, 0.0, "Frequency", " semitones", 0.f, 12.f); | configParam(FREQ_PARAM, -4.0, 4.0, 0.0, "Frequency", " semitones", 0.f, 12.f); | ||||
configParam(HARMONICS_PARAM, 0.0, 1.0, 0.5, "Harmonics", "%", 0.f, 100.f); | configParam(HARMONICS_PARAM, 0.0, 1.0, 0.5, "Harmonics", "%", 0.f, 100.f); | ||||
configParam(TIMBRE_PARAM, 0.0, 1.0, 0.5, "Timbre", "%", 0.f, 100.f); | configParam(TIMBRE_PARAM, 0.0, 1.0, 0.5, "Timbre", "%", 0.f, 100.f); | ||||
@@ -70,6 +70,18 @@ struct Plaits : Module { | |||||
configParam(FREQ_CV_PARAM, -1.0, 1.0, 0.0, "Frequency CV"); | configParam(FREQ_CV_PARAM, -1.0, 1.0, 0.0, "Frequency CV"); | ||||
configParam(MORPH_CV_PARAM, -1.0, 1.0, 0.0, "Morph CV"); | configParam(MORPH_CV_PARAM, -1.0, 1.0, 0.0, "Morph CV"); | ||||
configInput(ENGINE_INPUT, "Model"); | |||||
configInput(TIMBRE_INPUT, "Timbre"); | |||||
configInput(FREQ_INPUT, "FM"); | |||||
configInput(MORPH_INPUT, "Morph"); | |||||
configInput(HARMONICS_INPUT, "Harmonics"); | |||||
configInput(TRIGGER_INPUT, "Trigger"); | |||||
configInput(LEVEL_INPUT, "Level"); | |||||
configInput(NOTE_INPUT, "Pitch (1V/oct)"); | |||||
configOutput(OUT_OUTPUT, "Main"); | |||||
configOutput(AUX_OUTPUT, "Auxiliary"); | |||||
for (int i = 0; i < 16; i++) { | for (int i = 0; i < 16; i++) { | ||||
stmlib::BufferAllocator allocator(shared_buffer[i], sizeof(shared_buffer[i])); | stmlib::BufferAllocator allocator(shared_buffer[i], sizeof(shared_buffer[i])); | ||||
voice[i].Init(&allocator); | voice[i].Init(&allocator); | ||||
@@ -65,18 +65,30 @@ struct Rings : Module { | |||||
Rings() { | Rings() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(POLYPHONY_PARAM, 0.0, 1.0, 0.0, "Polyphony"); | |||||
configParam(RESONATOR_PARAM, 0.0, 1.0, 0.0, "Resonator type"); | |||||
configParam(FREQUENCY_PARAM, 0.0, 60.0, 30.0, "Coarse frequency adjustment"); | |||||
configParam(STRUCTURE_PARAM, 0.0, 1.0, 0.5, "Harmonic structure"); | |||||
configButton(POLYPHONY_PARAM, "Polyphony"); | |||||
configButton(RESONATOR_PARAM, "Resonator type"); | |||||
configParam(FREQUENCY_PARAM, 0.0, 60.0, 30.0, "Frequency"); | |||||
configParam(STRUCTURE_PARAM, 0.0, 1.0, 0.5, "Structure"); | |||||
configParam(BRIGHTNESS_PARAM, 0.0, 1.0, 0.5, "Brightness"); | configParam(BRIGHTNESS_PARAM, 0.0, 1.0, 0.5, "Brightness"); | ||||
configParam(DAMPING_PARAM, 0.0, 1.0, 0.5, "Decay time"); | |||||
configParam(POSITION_PARAM, 0.0, 1.0, 0.5, "Excitation position"); | |||||
configParam(BRIGHTNESS_MOD_PARAM, -1.0, 1.0, 0.0, "Brightness attenuverter"); | |||||
configParam(FREQUENCY_MOD_PARAM, -1.0, 1.0, 0.0, "Frequency attenuverter"); | |||||
configParam(DAMPING_MOD_PARAM, -1.0, 1.0, 0.0, "Damping attenuverter"); | |||||
configParam(STRUCTURE_MOD_PARAM, -1.0, 1.0, 0.0, "Structure attenuverter"); | |||||
configParam(POSITION_MOD_PARAM, -1.0, 1.0, 0.0, "Position attenuverter"); | |||||
configParam(DAMPING_PARAM, 0.0, 1.0, 0.5, "Damping"); | |||||
configParam(POSITION_PARAM, 0.0, 1.0, 0.5, "Position"); | |||||
configParam(BRIGHTNESS_MOD_PARAM, -1.0, 1.0, 0.0, "Brightness CV"); | |||||
configParam(FREQUENCY_MOD_PARAM, -1.0, 1.0, 0.0, "Frequency CV"); | |||||
configParam(DAMPING_MOD_PARAM, -1.0, 1.0, 0.0, "Damping CV"); | |||||
configParam(STRUCTURE_MOD_PARAM, -1.0, 1.0, 0.0, "Structure CV"); | |||||
configParam(POSITION_MOD_PARAM, -1.0, 1.0, 0.0, "Position CV"); | |||||
configInput(BRIGHTNESS_MOD_INPUT, "Brightness"); | |||||
configInput(FREQUENCY_MOD_INPUT, "Frequency"); | |||||
configInput(DAMPING_MOD_INPUT, "Damping"); | |||||
configInput(STRUCTURE_MOD_INPUT, "Structure"); | |||||
configInput(POSITION_MOD_INPUT, "Position"); | |||||
configInput(STRUM_INPUT, "Strum"); | |||||
configInput(PITCH_INPUT, "Pitch (1V/oct)"); | |||||
configInput(IN_INPUT, "Audio"); | |||||
configOutput(ODD_OUTPUT, "Odd"); | |||||
configOutput(EVEN_OUTPUT, "Even"); | |||||
strummer.Init(0.01, 44100.0 / 24); | strummer.Init(0.01, 44100.0 / 24); | ||||
part.Init(reverb_buffer); | part.Init(reverb_buffer); | ||||
@@ -36,6 +36,17 @@ struct Ripples : Module { | |||||
configParam(FREQ_PARAM, std::log2(ripples::kFreqKnobMin), std::log2(ripples::kFreqKnobMax), std::log2(ripples::kFreqKnobMax), "Frequency", " Hz", 2.f); | configParam(FREQ_PARAM, std::log2(ripples::kFreqKnobMin), std::log2(ripples::kFreqKnobMax), std::log2(ripples::kFreqKnobMax), "Frequency", " Hz", 2.f); | ||||
configParam(FM_PARAM, -1.f, 1.f, 0.f, "Frequency modulation", "%", 0, 100); | configParam(FM_PARAM, -1.f, 1.f, 0.f, "Frequency modulation", "%", 0, 100); | ||||
configInput(RES_INPUT, "Resonance"); | |||||
configInput(FREQ_INPUT, "Frequency"); | |||||
configInput(FM_INPUT, "FM"); | |||||
configInput(IN_INPUT, "Audio"); | |||||
configInput(GAIN_INPUT, "Gain"); | |||||
configOutput(BP2_OUTPUT, "Band-pass 2-pole (12 dB/oct)"); | |||||
configOutput(LP2_OUTPUT, "Low-pass 2-pole (12 dB/oct)"); | |||||
configOutput(LP4_OUTPUT, "Low-pass 4-pole (24 dB/oct)"); | |||||
configOutput(LP4VCA_OUTPUT, "Low-pass 4-pole (24 dB/oct) VCA"); | |||||
onSampleRateChange(); | onSampleRateChange(); | ||||
} | } | ||||
@@ -32,12 +32,12 @@ struct Shades : Module { | |||||
Shades() { | Shades() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(GAIN1_PARAM, 0.0, 1.0, 0.5, "Gain 1"); | |||||
configParam(GAIN2_PARAM, 0.0, 1.0, 0.5, "Gain 2"); | |||||
configParam(GAIN3_PARAM, 0.0, 1.0, 0.5, "Gain 3"); | |||||
configParam(MODE1_PARAM, 0.0, 1.0, 1.0, "Attenuverter/Attenuator mode 1"); | |||||
configParam(MODE2_PARAM, 0.0, 1.0, 1.0, "Attenuverter/Attenuator mode 2"); | |||||
configParam(MODE3_PARAM, 0.0, 1.0, 1.0, "Attenuverter/Attenuator mode 3"); | |||||
for (int c = 0; c < 3; c++) { | |||||
configParam(GAIN1_PARAM + c, 0.0, 1.0, 0.5, string::f("Channel %d gain", c + 1)); | |||||
configSwitch(MODE1_PARAM + c, 0.0, 1.0, 1.0, string::f("Channel %d mode", c + 1), {"Attenuator", "Attenuverter"}); | |||||
configInput(IN1_INPUT + c, string::f("Channel %d", c + 1)); | |||||
configOutput(OUT1_OUTPUT + c, string::f("Channel %d", c + 1)); | |||||
} | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||
@@ -76,6 +76,28 @@ struct Shelves : Module { | |||||
configParam(P1_Q_PARAM, qMin, qMax, qInit, "Parametric 1 quality", "", 2.f); | configParam(P1_Q_PARAM, qMin, qMax, qInit, "Parametric 1 quality", "", 2.f); | ||||
configParam(P2_Q_PARAM, qMin, qMax, qInit, "Parametric 2 quality", "", 2.f); | configParam(P2_Q_PARAM, qMin, qMax, qInit, "Parametric 2 quality", "", 2.f); | ||||
configInput(HS_FREQ_INPUT, "High-shelf frequency"); | |||||
configInput(HS_GAIN_INPUT, "High-shelf gain"); | |||||
configInput(P1_FREQ_INPUT, "Parametric 1 frequency"); | |||||
configInput(P1_GAIN_INPUT, "Parametric 1 gain"); | |||||
configInput(P1_Q_INPUT, "Parametric 1 quality"); | |||||
configInput(P2_FREQ_INPUT, "Parametric 2 frequency"); | |||||
configInput(P2_GAIN_INPUT, "Parametric 2 gain"); | |||||
configInput(P2_Q_INPUT, "Parametric 2 quality"); | |||||
configInput(LS_FREQ_INPUT, "Low-shelf frequency"); | |||||
configInput(LS_GAIN_INPUT, "Low-shelf gain"); | |||||
configInput(FREQ_INPUT, "All frequency"); | |||||
configInput(GAIN_INPUT, "All gain"); | |||||
configInput(IN_INPUT, "Audio"); | |||||
configOutput(P1_HP_OUTPUT, "Parametric 1 high-pass"); | |||||
configOutput(P1_BP_OUTPUT, "Parametric 1 band-pass"); | |||||
configOutput(P1_LP_OUTPUT, "Parametric 1 low-pass"); | |||||
configOutput(P2_HP_OUTPUT, "Parametric 2 high-pass"); | |||||
configOutput(P2_BP_OUTPUT, "Parametric 2 band-pass"); | |||||
configOutput(P2_LP_OUTPUT, "Parametric 2 low-pass"); | |||||
configOutput(OUT_OUTPUT, "Audio"); | |||||
onReset(); | onReset(); | ||||
} | } | ||||
@@ -155,24 +155,14 @@ struct Stages : Module { | |||||
Stages() { | Stages() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(SHAPE_PARAMS + 0, 0.0, 1.0, 0.5, "Shape 1"); | |||||
configParam(SHAPE_PARAMS + 1, 0.0, 1.0, 0.5, "Shape 2"); | |||||
configParam(SHAPE_PARAMS + 2, 0.0, 1.0, 0.5, "Shape 3"); | |||||
configParam(SHAPE_PARAMS + 3, 0.0, 1.0, 0.5, "Shape 4"); | |||||
configParam(SHAPE_PARAMS + 4, 0.0, 1.0, 0.5, "Shape 5"); | |||||
configParam(SHAPE_PARAMS + 5, 0.0, 1.0, 0.5, "Shape 6"); | |||||
configParam(TYPE_PARAMS + 0, 0.0, 1.0, 0.0, "Type 1"); | |||||
configParam(TYPE_PARAMS + 1, 0.0, 1.0, 0.0, "Type 2"); | |||||
configParam(TYPE_PARAMS + 2, 0.0, 1.0, 0.0, "Type 3"); | |||||
configParam(TYPE_PARAMS + 3, 0.0, 1.0, 0.0, "Type 4"); | |||||
configParam(TYPE_PARAMS + 4, 0.0, 1.0, 0.0, "Type 5"); | |||||
configParam(TYPE_PARAMS + 5, 0.0, 1.0, 0.0, "Type 6"); | |||||
configParam(LEVEL_PARAMS + 0, 0.0, 1.0, 0.5, "Level 1"); | |||||
configParam(LEVEL_PARAMS + 1, 0.0, 1.0, 0.5, "Level 2"); | |||||
configParam(LEVEL_PARAMS + 2, 0.0, 1.0, 0.5, "Level 3"); | |||||
configParam(LEVEL_PARAMS + 3, 0.0, 1.0, 0.5, "Level 4"); | |||||
configParam(LEVEL_PARAMS + 4, 0.0, 1.0, 0.5, "Level 5"); | |||||
configParam(LEVEL_PARAMS + 5, 0.0, 1.0, 0.5, "Level 6"); | |||||
for (int c = 0; c < NUM_CHANNELS; c++) { | |||||
configParam(SHAPE_PARAMS + c, 0.0, 1.0, 0.5, string::f("Stage %d shape", c + 1), "%", 0, 100); | |||||
configButton(TYPE_PARAMS + c, string::f("Stage %d type", c + 1)); | |||||
configParam(LEVEL_PARAMS + c, 0.0, 1.0, 0.5, string::f("Stage %d level", c + 1), "%", 0, 100); | |||||
configInput(LEVEL_INPUTS + c, string::f("Stage %d level", c + 1)); | |||||
configInput(GATE_INPUTS + c, string::f("Stage %d gate", c + 1)); | |||||
configOutput(ENVELOPE_OUTPUTS + c, string::f("Stage %d envelope", c + 1)); | |||||
} | |||||
onReset(); | onReset(); | ||||
} | } | ||||
@@ -114,18 +114,28 @@ struct Streams : Module { | |||||
Streams() { | Streams() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(CH1_SHAPE_PARAM, 0.f, 1.f, 0.5f, "Ch 1 shape"); | |||||
configParam(CH1_MOD_PARAM, 0.f, 1.f, 0.5f, "Ch 1 mod"); | |||||
configParam(CH1_LEVEL_MOD_PARAM, 0.f, 1.f, 0.5f, "Ch 1 level mod"); | |||||
configParam(CH2_SHAPE_PARAM, 0.f, 1.f, 0.5f, "Ch 2 shape"); | |||||
configParam(CH2_MOD_PARAM, 0.f, 1.f, 0.5f, "Ch 2 mod"); | |||||
configParam(CH2_LEVEL_MOD_PARAM, 0.f, 1.f, 0.5f, "Ch 2 level mod"); | |||||
configParam(CH1_RESPONSE_PARAM, 0.f, 1.f, 0.5f, "Ch 1 response"); | |||||
configParam(CH2_RESPONSE_PARAM, 0.f, 1.f, 0.5f, "Ch 2 response"); | |||||
configParam(CH1_FUNCTION_BUTTON_PARAM, 0.f, 1.f, 0.f, "Ch 1 function"); | |||||
configParam(CH2_FUNCTION_BUTTON_PARAM, 0.f, 1.f, 0.f, "Ch 2 function"); | |||||
configParam(METERING_BUTTON_PARAM, 0.f, 1.f, 0.f, "Meter"); | |||||
configParam(CH1_SHAPE_PARAM, 0.f, 1.f, 0.5f, "Channel 1 shape", "%", 0, 100); | |||||
configParam(CH1_MOD_PARAM, 0.f, 1.f, 0.5f, "Channel 1 mod", "%", 0, 100); | |||||
configParam(CH1_LEVEL_MOD_PARAM, 0.f, 1.f, 0.5f, "Channel 1 level mod", "%", 0, 100); | |||||
configParam(CH2_SHAPE_PARAM, 0.f, 1.f, 0.5f, "Channel 2 shape", "%", 0, 100); | |||||
configParam(CH2_MOD_PARAM, 0.f, 1.f, 0.5f, "Channel 2 mod", "%", 0, 100); | |||||
configParam(CH2_LEVEL_MOD_PARAM, 0.f, 1.f, 0.5f, "Channel 2 level mod", "%", 0, 100); | |||||
configParam(CH1_RESPONSE_PARAM, 0.f, 1.f, 0.5f, "Channel 1 response", "%", 0, 100); | |||||
configParam(CH2_RESPONSE_PARAM, 0.f, 1.f, 0.5f, "Channel 2 response", "%", 0, 100); | |||||
configButton(CH1_FUNCTION_BUTTON_PARAM, "Channel 1 function"); | |||||
configButton(CH2_FUNCTION_BUTTON_PARAM, "Channel 2 function"); | |||||
configButton(METERING_BUTTON_PARAM, "Meter"); | |||||
configInput(CH1_EXCITE_INPUT, "Channel 1 excite"); | |||||
configInput(CH1_SIGNAL_INPUT, "Channel 1"); | |||||
configInput(CH1_LEVEL_INPUT, "Channel 1 level"); | |||||
configInput(CH2_EXCITE_INPUT, "Channel 2 excite"); | |||||
configInput(CH2_SIGNAL_INPUT, "Channel 2"); | |||||
configInput(CH2_LEVEL_INPUT, "Channel 2 level"); | |||||
configOutput(CH1_SIGNAL_OUTPUT, "Channel 1"); | |||||
configOutput(CH2_SIGNAL_OUTPUT, "Channel 2"); | |||||
onReset(); | onReset(); | ||||
} | } | ||||
@@ -52,14 +52,29 @@ struct Tides : Module { | |||||
Tides() { | Tides() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(MODE_PARAM, 0.0, 1.0, 0.0, "Output mode"); | |||||
configParam(RANGE_PARAM, 0.0, 1.0, 0.0, "Frequency range"); | |||||
configButton(MODE_PARAM, "Output mode"); | |||||
configButton(RANGE_PARAM, "Frequency range"); | |||||
configParam(FREQUENCY_PARAM, -48.0, 48.0, 0.0, "Main frequency"); | configParam(FREQUENCY_PARAM, -48.0, 48.0, 0.0, "Main frequency"); | ||||
configParam(FM_PARAM, -12.0, 12.0, 0.0, "FM input attenuverter"); | configParam(FM_PARAM, -12.0, 12.0, 0.0, "FM input attenuverter"); | ||||
configParam(SHAPE_PARAM, -1.0, 1.0, 0.0, "Shape"); | configParam(SHAPE_PARAM, -1.0, 1.0, 0.0, "Shape"); | ||||
configParam(SLOPE_PARAM, -1.0, 1.0, 0.0, "Slope"); | configParam(SLOPE_PARAM, -1.0, 1.0, 0.0, "Slope"); | ||||
configParam(SMOOTHNESS_PARAM, -1.0, 1.0, 0.0, "Smoothness"); | configParam(SMOOTHNESS_PARAM, -1.0, 1.0, 0.0, "Smoothness"); | ||||
configInput(SHAPE_INPUT, "Shape"); | |||||
configInput(SLOPE_INPUT, "Slope"); | |||||
configInput(SMOOTHNESS_INPUT, "Smoothness"); | |||||
configInput(TRIG_INPUT, "Trigger"); | |||||
configInput(FREEZE_INPUT, "Freeze"); | |||||
configInput(PITCH_INPUT, "Pitch (1V/oct)"); | |||||
configInput(FM_INPUT, "FM"); | |||||
configInput(LEVEL_INPUT, "Level"); | |||||
configInput(CLOCK_INPUT, "Clock"); | |||||
configOutput(HIGH_OUTPUT, "High tide"); | |||||
configOutput(LOW_OUTPUT, "Low tide"); | |||||
configOutput(UNI_OUTPUT, "Unipolar"); | |||||
configOutput(BI_OUTPUT, "Bipolar"); | |||||
memset(&generator, 0, sizeof(generator)); | memset(&generator, 0, sizeof(generator)); | ||||
generator.Init(); | generator.Init(); | ||||
generator.set_sync(false); | generator.set_sync(false); | ||||
@@ -101,19 +101,35 @@ struct Tides2 : Module { | |||||
Tides2() { | Tides2() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(RANGE_PARAM, 0.0, 1.0, 0.0, "Frequency range"); | |||||
configParam(MODE_PARAM, 0.0, 1.0, 0.0, "Output mode"); | |||||
configParam(FREQUENCY_PARAM, -48, 48, 0.0, "Frequency"); | |||||
configParam(SHAPE_PARAM, 0.0, 1.0, 0.5, "Shape"); | |||||
configParam(RAMP_PARAM, 0.0, 1.0, 0.0, "Ramp mode"); | |||||
configParam(SMOOTHNESS_PARAM, 0.0, 1.0, 0.5, "Waveshape transformation"); | |||||
configParam(SLOPE_PARAM, 0.0, 1.0, 0.5, "Ascending/descending ratio"); | |||||
configParam(SHIFT_PARAM, 0.0, 1.0, 0.5, "Output polarization and shifting"); | |||||
configParam(SLOPE_CV_PARAM, -1.0, 1.0, 0.0, "Slope CV"); | |||||
configParam(FREQUENCY_CV_PARAM, -1.0, 1.0, 0.0, "Frequency CV"); | |||||
configParam(SMOOTHNESS_CV_PARAM, -1.0, 1.0, 0.0, "Smoothness CV"); | |||||
configParam(SHAPE_CV_PARAM, -1.0, 1.0, 0.0, "Shape CV"); | |||||
configParam(SHIFT_CV_PARAM, -1.0, 1.0, 0.0, "Shift CV"); | |||||
configButton(RANGE_PARAM, "Frequency range"); | |||||
configButton(MODE_PARAM, "Output mode"); | |||||
configParam(FREQUENCY_PARAM, -48, 48, 0.0, "Frequency", " semitones"); | |||||
configParam(SHAPE_PARAM, 0.0, 1.0, 0.5, "Shape", "%", 0, 100); | |||||
configButton(RAMP_PARAM, "Ramp mode"); | |||||
configParam(SMOOTHNESS_PARAM, 0.0, 1.0, 0.5, "Smoothness", "%", 0, 100); | |||||
getParamQuantity(SMOOTHNESS_PARAM)->description = "Waveshape transformation"; | |||||
configParam(SLOPE_PARAM, 0.0, 1.0, 0.5, "Slope", "%", 0, 100); | |||||
getParamQuantity(SLOPE_PARAM)->description = "Ascending/descending ratio"; | |||||
configParam(SHIFT_PARAM, 0.0, 1.0, 0.5, "Shift", "%", 0, 100); | |||||
getParamQuantity(SHIFT_PARAM)->description = "Output polarization and shifting"; | |||||
configParam(SLOPE_CV_PARAM, -1.0, 1.0, 0.0, "Slope CV", "%", 0, 100); | |||||
configParam(FREQUENCY_CV_PARAM, -1.0, 1.0, 0.0, "Frequency CV", "%", 0, 100); | |||||
configParam(SMOOTHNESS_CV_PARAM, -1.0, 1.0, 0.0, "Smoothness CV", "%", 0, 100); | |||||
configParam(SHAPE_CV_PARAM, -1.0, 1.0, 0.0, "Shape CV", "%", 0, 100); | |||||
configParam(SHIFT_CV_PARAM, -1.0, 1.0, 0.0, "Shift CV", "%", 0, 100); | |||||
configInput(SLOPE_INPUT, "Slope"); | |||||
configInput(FREQUENCY_INPUT, "Frequency"); | |||||
configInput(V_OCT_INPUT, "Pitch (1V/oct)"); | |||||
configInput(SMOOTHNESS_INPUT, "Smoothness"); | |||||
configInput(SHAPE_INPUT, "Shape"); | |||||
configInput(SHIFT_INPUT, "Shift"); | |||||
configInput(TRIG_INPUT, "Trigger"); | |||||
configInput(CLOCK_INPUT, "Clock"); | |||||
for (int c = 0; c < 4; c++) { | |||||
configOutput(OUT_OUTPUTS + c, string::f("Channel %d", c + 1)); | |||||
} | |||||
poly_slope_generator.Init(); | poly_slope_generator.Init(); | ||||
ratio_index_quantizer.Init(); | ratio_index_quantizer.Init(); | ||||
@@ -41,14 +41,13 @@ struct Veils : Module { | |||||
Veils() { | Veils() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(GAIN1_PARAM, 0.0, 1.0, 0.0, "Gain 1"); | |||||
configParam(GAIN2_PARAM, 0.0, 1.0, 0.0, "Gain 2"); | |||||
configParam(GAIN3_PARAM, 0.0, 1.0, 0.0, "Gain 3"); | |||||
configParam(GAIN4_PARAM, 0.0, 1.0, 0.0, "Gain 4"); | |||||
configParam(RESPONSE1_PARAM, 0.0, 1.0, 1.0, "Response curve 1"); | |||||
configParam(RESPONSE2_PARAM, 0.0, 1.0, 1.0, "Response curve 2"); | |||||
configParam(RESPONSE3_PARAM, 0.0, 1.0, 1.0, "Response curve 3"); | |||||
configParam(RESPONSE4_PARAM, 0.0, 1.0, 1.0, "Response curve 4"); | |||||
for (int c = 0; c < 4; c++) { | |||||
configParam(GAIN1_PARAM + c, -1.0, 1.0, 0.0, string::f("Channel %d gain", c + 1), "%", 0, 100); | |||||
configParam(RESPONSE1_PARAM + c, -1.0, 1.0, 0.0, string::f("Channel %d response", c + 1)); | |||||
configInput(IN1_INPUT + c, string::f("Channel %d", c + 1)); | |||||
configInput(CV1_INPUT + c, string::f("Channel %d CV", c + 1)); | |||||
configOutput(OUT1_OUTPUT + c, string::f("Channel %d", c + 1)); | |||||
} | |||||
} | } | ||||
void process(const ProcessArgs& args) override { | void process(const ProcessArgs& args) override { | ||||
@@ -40,11 +40,21 @@ struct Warps : Module { | |||||
Warps() { | Warps() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
configParam(ALGORITHM_PARAM, 0.0, 8.0, 0.0, "Modulation algorithm"); | |||||
configParam(TIMBRE_PARAM, 0.0, 1.0, 0.5, "Modulation timbre"); | |||||
configParam(STATE_PARAM, 0.0, 1.0, 0.0, "Internal oscillator state"); | |||||
configParam(LEVEL1_PARAM, 0.0, 1.0, 1.0, "External oscillator amplitude/internal oscillator frequency"); | |||||
configParam(LEVEL2_PARAM, 0.0, 1.0, 1.0, "Modulator amplitude"); | |||||
configParam(ALGORITHM_PARAM, 0.0, 8.0, 0.0, "Algorithm"); | |||||
configParam(TIMBRE_PARAM, 0.0, 1.0, 0.5, "Timbre", "%", 0, 100); | |||||
configButton(STATE_PARAM, "Internal oscillator mode"); | |||||
configParam(LEVEL1_PARAM, 0.0, 1.0, 1.0, "External oscillator amplitude / internal oscillator frequency", "%", 0, 100); | |||||
configParam(LEVEL2_PARAM, 0.0, 1.0, 1.0, "Modulator amplitude", "%", 0, 100); | |||||
configInput(LEVEL1_INPUT, "Level 1"); | |||||
configInput(LEVEL2_INPUT, "Level 2"); | |||||
configInput(ALGORITHM_INPUT, "Algorithm"); | |||||
configInput(TIMBRE_INPUT, "Timbre"); | |||||
configInput(CARRIER_INPUT, "Carrier"); | |||||
configInput(MODULATOR_INPUT, "Modulator"); | |||||
configOutput(MODULATOR_OUTPUT, "Modulator"); | |||||
configOutput(AUX_OUTPUT, "Auxiliary"); | |||||
memset(&modulator, 0, sizeof(modulator)); | memset(&modulator, 0, sizeof(modulator)); | ||||
modulator.Init(96000.0f); | modulator.Init(96000.0f); | ||||