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:
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