|
- #pragma once
-
- #include "bogaudio.hpp"
- #include "shaper_core.hpp"
-
- extern Model* modelShaper;
-
- namespace bogaudio {
-
- struct Shaper : TriggerOnLoadModule {
- enum ParamIds {
- ATTACK_PARAM,
- ON_PARAM,
- DECAY_PARAM,
- OFF_PARAM,
- ENV_PARAM,
- SIGNAL_PARAM,
- TRIGGER_PARAM,
- SPEED_PARAM,
- LOOP_PARAM,
- NUM_PARAMS
- };
-
- enum InputIds {
- SIGNAL_INPUT,
- TRIGGER_INPUT,
- NUM_INPUTS
- };
-
- enum OutputIds {
- SIGNAL_OUTPUT,
- ENV_OUTPUT,
- INV_OUTPUT,
- TRIGGER_OUTPUT,
- NUM_OUTPUTS
- };
-
- enum LightIds {
- ATTACK_LIGHT,
- ON_LIGHT,
- DECAY_LIGHT,
- OFF_LIGHT,
- NUM_LIGHTS
- };
-
- ShaperCore _core;
-
- Shaper() : TriggerOnLoadModule(
- NUM_PARAMS,
- NUM_INPUTS,
- NUM_OUTPUTS,
- NUM_LIGHTS
- )
- , _core(
- params[ATTACK_PARAM],
- params[ON_PARAM],
- params[DECAY_PARAM],
- params[OFF_PARAM],
- params[ENV_PARAM],
- params[SIGNAL_PARAM],
- params[TRIGGER_PARAM],
- params[SPEED_PARAM],
- params[LOOP_PARAM],
-
- inputs[SIGNAL_INPUT],
- inputs[TRIGGER_INPUT],
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-
- outputs[SIGNAL_OUTPUT],
- outputs[ENV_OUTPUT],
- outputs[INV_OUTPUT],
- outputs[TRIGGER_OUTPUT],
- NULL,
- NULL,
- NULL,
- NULL,
-
- lights[ATTACK_LIGHT],
- lights[ON_LIGHT],
- lights[DECAY_LIGHT],
- lights[OFF_LIGHT],
-
- _triggerOnLoad,
- _shouldTriggerOnLoad
- )
- {
- onReset();
- }
-
- void onReset() override {
- _core.reset();
- }
-
- void step() override {
- _core.step();
- }
-
- bool shouldTriggerOnNextLoad() override {
- return _core._stage != _core.STOPPED_STAGE;
- }
- };
-
- } // namespace bogaudio
|