|
@@ -124,6 +124,69 @@ struct Peaks : Module { |
|
|
size_t io_block_ = 0; |
|
|
size_t io_block_ = 0; |
|
|
size_t render_block_ = kNumBlocks / 2; |
|
|
size_t render_block_ = kNumBlocks / 2; |
|
|
|
|
|
|
|
|
|
|
|
struct EditModeParam : ParamQuantity { |
|
|
|
|
|
std::string getDisplayValueString() override { |
|
|
|
|
|
if (module != nullptr) { |
|
|
|
|
|
Peaks* modulePeaks = static_cast<Peaks*>(module); |
|
|
|
|
|
|
|
|
|
|
|
if (paramId == BUTTON_1_PARAM) { |
|
|
|
|
|
int editMode = modulePeaks->settings_.edit_mode; |
|
|
|
|
|
switch (editMode) { |
|
|
|
|
|
case EDIT_MODE_SPLIT: return "Split"; |
|
|
|
|
|
case EDIT_MODE_TWIN: return "Twin"; |
|
|
|
|
|
case EDIT_MODE_FIRST: return "Expert (Out 1)"; |
|
|
|
|
|
case EDIT_MODE_SECOND: return "Expert (Out 2)"; |
|
|
|
|
|
default: return ""; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
assert(false); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
return ""; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
static std::string functionLabelFromEnum(int function) { |
|
|
|
|
|
switch (function) { |
|
|
|
|
|
case FUNCTION_ENVELOPE: return "Envelope"; |
|
|
|
|
|
case FUNCTION_LFO: return "LFO"; |
|
|
|
|
|
case FUNCTION_TAP_LFO: return "Tap LFO"; |
|
|
|
|
|
case FUNCTION_DRUM_GENERATOR: return "Drum generator"; |
|
|
|
|
|
case FUNCTION_MINI_SEQUENCER: return "Sequencer (easter egg)"; |
|
|
|
|
|
case FUNCTION_PULSE_SHAPER: return "Pulse Shaper (easter egg"; |
|
|
|
|
|
case FUNCTION_PULSE_RANDOMIZER: return "Pulse randomizer (easter egg)"; |
|
|
|
|
|
case FUNCTION_FM_DRUM_GENERATOR: return "Drum generate FM (easter egg)"; |
|
|
|
|
|
default: return ""; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
struct FunctionParam : ParamQuantity { |
|
|
|
|
|
std::string getDisplayValueString() override { |
|
|
|
|
|
if (module != nullptr) { |
|
|
|
|
|
Peaks* modulePeaks = static_cast<Peaks*>(module); |
|
|
|
|
|
|
|
|
|
|
|
if (paramId == BUTTON_2_PARAM) { |
|
|
|
|
|
int function1 = modulePeaks->settings_.function[0]; |
|
|
|
|
|
int function2 = modulePeaks->settings_.function[1]; |
|
|
|
|
|
if (function1 == function2) { |
|
|
|
|
|
return functionLabelFromEnum(function1); |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
return "1: " + functionLabelFromEnum(function1) + ", 2: " + functionLabelFromEnum(function2); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
assert(false); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
return ""; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
Peaks() { |
|
|
Peaks() { |
|
|
|
|
|
|
|
@@ -133,8 +196,8 @@ struct Peaks : Module { |
|
|
configParam(KNOB_2_PARAM, 0.0f, 65535.0f, 32678.0f, "Knob 2", "", 0.f, 1.f / 65535.f); |
|
|
configParam(KNOB_2_PARAM, 0.0f, 65535.0f, 32678.0f, "Knob 2", "", 0.f, 1.f / 65535.f); |
|
|
configParam(KNOB_3_PARAM, 0.0f, 65535.0f, 32678.0f, "Knob 3", "", 0.f, 1.f / 65535.f); |
|
|
configParam(KNOB_3_PARAM, 0.0f, 65535.0f, 32678.0f, "Knob 3", "", 0.f, 1.f / 65535.f); |
|
|
configParam(KNOB_4_PARAM, 0.0f, 65535.0f, 32678.0f, "Knob 4", "", 0.f, 1.f / 65535.f); |
|
|
configParam(KNOB_4_PARAM, 0.0f, 65535.0f, 32678.0f, "Knob 4", "", 0.f, 1.f / 65535.f); |
|
|
configButton(BUTTON_1_PARAM, "Split"); |
|
|
|
|
|
configButton(BUTTON_2_PARAM, "Mode"); |
|
|
|
|
|
|
|
|
configButton<EditModeParam>(BUTTON_1_PARAM, "Edit Mode"); |
|
|
|
|
|
configButton<FunctionParam>(BUTTON_2_PARAM, "Function"); |
|
|
configButton(TRIG_1_PARAM, "Trigger 1"); |
|
|
configButton(TRIG_1_PARAM, "Trigger 1"); |
|
|
configButton(TRIG_2_PARAM, "Trigger 2"); |
|
|
configButton(TRIG_2_PARAM, "Trigger 2"); |
|
|
|
|
|
|
|
@@ -637,11 +700,11 @@ struct PeaksWidget : ModuleWidget { |
|
|
addParam(createParam<TL1105>((Vec(8.5, 52)), module, Peaks::BUTTON_1_PARAM)); |
|
|
addParam(createParam<TL1105>((Vec(8.5, 52)), module, Peaks::BUTTON_1_PARAM)); |
|
|
addParam(createParam<TL1105>((Vec(8.5, 89)), module, Peaks::BUTTON_2_PARAM)); |
|
|
addParam(createParam<TL1105>((Vec(8.5, 89)), module, Peaks::BUTTON_2_PARAM)); |
|
|
|
|
|
|
|
|
addParam(createParamCentered<LEDBezel>(Vec(21, 200), module, Peaks::TRIG_1_PARAM)); |
|
|
|
|
|
addParam(createParamCentered<LEDBezel>(Vec(21, 285), module, Peaks::TRIG_2_PARAM)); |
|
|
|
|
|
|
|
|
addParam(createParamCentered<LEDBezel>(Vec(22, 200), module, Peaks::TRIG_1_PARAM)); |
|
|
|
|
|
addParam(createParamCentered<LEDBezel>(Vec(22, 285), module, Peaks::TRIG_2_PARAM)); |
|
|
|
|
|
|
|
|
addChild(createLightCentered<LEDBezelLight<GreenLight>>(Vec(21, 200), module, Peaks::TRIG_1_LIGHT)); |
|
|
|
|
|
addChild(createLightCentered<LEDBezelLight<GreenLight>>(Vec(21, 285), module, Peaks::TRIG_2_LIGHT)); |
|
|
|
|
|
|
|
|
addChild(createLightCentered<LEDBezelLight<GreenLight>>(Vec(22, 200), module, Peaks::TRIG_1_LIGHT)); |
|
|
|
|
|
addChild(createLightCentered<LEDBezelLight<GreenLight>>(Vec(22, 285), module, Peaks::TRIG_2_LIGHT)); |
|
|
addChild(createLight<MediumLight<GreenLight>>(Vec(11.88, 74), module, Peaks::TWIN_MODE_LIGHT)); |
|
|
addChild(createLight<MediumLight<GreenLight>>(Vec(11.88, 74), module, Peaks::TWIN_MODE_LIGHT)); |
|
|
addChild(createLight<MediumLight<GreenLight>>(Vec(11.88, 111), module, Peaks::FUNC_1_LIGHT)); |
|
|
addChild(createLight<MediumLight<GreenLight>>(Vec(11.88, 111), module, Peaks::FUNC_1_LIGHT)); |
|
|
addChild(createLight<MediumLight<GreenLight>>(Vec(11.88, 126.75), module, Peaks::FUNC_2_LIGHT)); |
|
|
addChild(createLight<MediumLight<GreenLight>>(Vec(11.88, 126.75), module, Peaks::FUNC_2_LIGHT)); |
|
|