|
@@ -77,7 +77,6 @@ struct Elements : Module { |
|
|
|
|
|
|
|
|
uint16_t reverb_buffer[32768] = {}; |
|
|
uint16_t reverb_buffer[32768] = {}; |
|
|
elements::Part* part; |
|
|
elements::Part* part; |
|
|
bool easterEgg = false; |
|
|
|
|
|
|
|
|
|
|
|
Elements() { |
|
|
Elements() { |
|
|
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); |
|
|
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); |
|
@@ -216,7 +215,6 @@ struct Elements : Module { |
|
|
json_t* dataToJson() override { |
|
|
json_t* dataToJson() override { |
|
|
json_t* rootJ = json_object(); |
|
|
json_t* rootJ = json_object(); |
|
|
json_object_set_new(rootJ, "model", json_integer(getModel())); |
|
|
json_object_set_new(rootJ, "model", json_integer(getModel())); |
|
|
json_object_set_new(rootJ, "easterEgg", json_boolean(easterEgg)); |
|
|
|
|
|
return rootJ; |
|
|
return rootJ; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@@ -225,23 +223,25 @@ struct Elements : Module { |
|
|
if (modelJ) { |
|
|
if (modelJ) { |
|
|
setModel(json_integer_value(modelJ)); |
|
|
setModel(json_integer_value(modelJ)); |
|
|
} |
|
|
} |
|
|
json_t* easterEggJ = json_object_get(rootJ, "easterEgg"); |
|
|
|
|
|
if (easterEggJ) { |
|
|
|
|
|
easterEgg = json_boolean_value(easterEggJ); |
|
|
|
|
|
setEasterEgg(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int getModel() { |
|
|
int getModel() { |
|
|
return (int)part->resonator_model(); |
|
|
|
|
|
|
|
|
if (part->easter_egg()) |
|
|
|
|
|
return -1; |
|
|
|
|
|
return (int) part->resonator_model(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** Sets the resonator model. |
|
|
|
|
|
-1 means easter egg (Ominous voice) |
|
|
|
|
|
*/ |
|
|
void setModel(int model) { |
|
|
void setModel(int model) { |
|
|
part->set_resonator_model((elements::ResonatorModel)model); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void setEasterEgg() { |
|
|
|
|
|
part->set_easter_egg(easterEgg); |
|
|
|
|
|
|
|
|
if (model < 0) { |
|
|
|
|
|
part->set_easter_egg(true); |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
part->set_easter_egg(false); |
|
|
|
|
|
part->set_resonator_model((elements::ResonatorModel) model); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
@@ -258,18 +258,6 @@ struct ElementsModalItem : MenuItem { |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
struct ElementsEasterEggItem : MenuItem { |
|
|
|
|
|
Elements* elements; |
|
|
|
|
|
void onAction(const event::Action& e) override { |
|
|
|
|
|
elements->easterEgg = !elements->easterEgg; |
|
|
|
|
|
elements->setEasterEgg(); |
|
|
|
|
|
} |
|
|
|
|
|
void step() override { |
|
|
|
|
|
rightText = (elements->easterEgg) ? "✔" : ""; |
|
|
|
|
|
MenuItem::step(); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct ElementsWidget : ModuleWidget { |
|
|
struct ElementsWidget : ModuleWidget { |
|
|
ElementsWidget(Elements* module) { |
|
|
ElementsWidget(Elements* module) { |
|
@@ -358,8 +346,7 @@ struct ElementsWidget : ModuleWidget { |
|
|
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Original", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 0)); |
|
|
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Original", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 0)); |
|
|
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Non-linear string", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 1)); |
|
|
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Non-linear string", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 1)); |
|
|
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Chords", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 2)); |
|
|
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Chords", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 2)); |
|
|
menu->addChild(new MenuSeparator); |
|
|
|
|
|
menu->addChild(construct<ElementsEasterEggItem>(&MenuItem::text, "Easter egg", &ElementsEasterEggItem::elements, elements)); |
|
|
|
|
|
|
|
|
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Ominous voice", &ElementsModalItem::elements, elements, &ElementsModalItem::model, -1)); |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|