BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit 0daf784cb4a8aa89f2da63698284d40432d78181
parent 0d3498fb6803819eabf55c09269174c4f67e3ea4
Author: Matt Demanett <matt@demanett.net>
Date:   Thu, 29 Mar 2018 23:03:59 -0400

Manual: add trigger-on-load option.

Diffstat:
Msrc/Manual.cpp | 13++++++++++++-
Msrc/Manual.hpp | 9+++++++--
2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/Manual.cpp b/src/Manual.cpp @@ -7,7 +7,7 @@ void Manual::onReset() { } void Manual::step() { - bool high = _trigger.process(params[TRIGGER_PARAM].value) || _trigger.isHigh(); + bool high = _trigger.process(params[TRIGGER_PARAM].value) || _trigger.isHigh() || (_firstStep && _triggerOnLoad && _shouldTriggerOnLoad); if (high) { _pulse.trigger(0.001); _pulse.process(engineGetSampleTime()); @@ -25,6 +25,8 @@ void Manual::step() { outputs[OUT6_OUTPUT].value = out; outputs[OUT7_OUTPUT].value = out; outputs[OUT8_OUTPUT].value = out; + + _firstStep = false; } struct ManualWidget : ModuleWidget { @@ -65,6 +67,15 @@ struct ManualWidget : ModuleWidget { addOutput(Port::create<Port24>(out7OutputPosition, Port::OUTPUT, module, Manual::OUT7_OUTPUT)); addOutput(Port::create<Port24>(out8OutputPosition, Port::OUTPUT, module, Manual::OUT8_OUTPUT)); } + + virtual Menu* createContextMenu() override { + Manual* manual = dynamic_cast<Manual*>(module); + assert(manual); + Menu* menu = ModuleWidget::createContextMenu(); + menu->addChild(new MenuLabel()); + menu->addChild(new TriggerOnLoadMenuItem(manual, "Trigger on Load")); + return menu; + } }; Model* modelManual = Model::create<Manual, ManualWidget>("Bogaudio", "Bogaudio-Manual", "Manual", UTILITY_TAG); diff --git a/src/Manual.hpp b/src/Manual.hpp @@ -6,7 +6,7 @@ extern Model* modelManual; namespace bogaudio { -struct Manual : Module { +struct Manual : TriggerOnLoadModule { enum ParamsIds { TRIGGER_PARAM, NUM_PARAMS @@ -32,15 +32,20 @@ struct Manual : Module { NUM_LIGHTS }; + bool _firstStep = true; SchmittTrigger _trigger; PulseGenerator _pulse; - Manual() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { + Manual() : TriggerOnLoadModule(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { + _triggerOnLoad = false; onReset(); } virtual void onReset() override; virtual void step() override; + virtual bool shouldTriggerOnNextLoad() override { + return true; + } }; } // namespace bogaudio