Browse Source

Added Rings Easter Egg

tags/v0.5.0
Michael Hetrick 7 years ago
parent
commit
d17ff40d02
2 changed files with 36 additions and 3 deletions
  1. +1
    -0
      src/AudibleInstruments.hpp
  2. +35
    -3
      src/Rings.cpp

+ 1
- 0
src/AudibleInstruments.hpp View File

@@ -42,6 +42,7 @@ struct WarpsWidget : ModuleWidget {

struct RingsWidget : ModuleWidget {
RingsWidget();
Menu *createContextMenu() override;
};

struct LinksWidget : ModuleWidget {


+ 35
- 3
src/Rings.cpp View File

@@ -65,6 +65,8 @@ struct Rings : Module {
int polyphonyMode = 0;
int model = 0;

bool easterEgg = false;

Rings();
void step() override;

@@ -73,6 +75,7 @@ struct Rings : Module {

json_object_set_new(rootJ, "polyphony", json_integer(polyphonyMode));
json_object_set_new(rootJ, "model", json_integer(model));
json_object_set_new(rootJ, "easterEgg", json_integer(int(easterEgg)));

return rootJ;
}
@@ -87,6 +90,11 @@ struct Rings : Module {
if (modelJ) {
model = json_integer_value(modelJ);
}

json_t *eggJ = json_object_get(rootJ, "easterEgg");
if (eggJ) {
easterEgg = json_integer_value(eggJ) != 0;
}
}

void reset() override {
@@ -193,9 +201,9 @@ void Rings::step() {
// Process audio
float out[24];
float aux[24];
if (0) {
// strummer.Process(NULL, 24, &performance_state);
// string_synth.Process(performance_state, patch, in, out, aux, 24);
if (easterEgg) {
strummer.Process(NULL, 24, &performance_state);
string_synth.Process(performance_state, patch, in, out, aux, 24);
}
else {
strummer.Process(in, 24, &performance_state);
@@ -283,3 +291,27 @@ RingsWidget::RingsWidget() {
addChild(createLight<SmallLight<GreenRedLight>>(Vec(38, 43.8), module, Rings::POLYPHONY_GREEN_LIGHT));
addChild(createLight<SmallLight<GreenRedLight>>(Vec(163, 43.8), module, Rings::RESONATOR_GREEN_LIGHT));
}


struct RingsEasterEggItem : MenuItem {
Rings *rings;
void onAction(EventAction &e) override {
rings->easterEgg = !rings->easterEgg;
}
void step() override {
rightText = (rings->easterEgg) ? "✔" : "";
}
};

Menu *RingsWidget::createContextMenu() {
Menu *menu = ModuleWidget::createContextMenu();

Rings *rings = dynamic_cast<Rings*>(module);
assert(rings);

menu->pushChild(construct<MenuLabel>());
menu->pushChild(construct<MenuLabel>(&MenuEntry::text, "Options"));
menu->pushChild(construct<RingsEasterEggItem>(&MenuEntry::text, "Easter Egg", &RingsEasterEggItem::rings, rings));

return menu;
}

Loading…
Cancel
Save