|
- #pragma once
-
- #include "bogaudio.hpp"
- #include "dadsrh_core.hpp"
-
- extern Model* modelDADSRHPlus;
-
- namespace bogaudio {
-
- struct DADSRHPlus : TriggerOnLoadModule {
- enum ParamsIds {
- DELAY_PARAM,
- ATTACK_PARAM,
- DECAY_PARAM,
- SUSTAIN_PARAM,
- RELEASE_PARAM,
- HOLD_PARAM,
- ATTACK_SHAPE_PARAM,
- DECAY_SHAPE_PARAM,
- RELEASE_SHAPE_PARAM,
- TRIGGER_PARAM,
- MODE_PARAM,
- LOOP_PARAM,
- SPEED_PARAM,
- RETRIGGER_PARAM,
- NUM_PARAMS
- };
-
- enum InputsIds {
- DELAY_INPUT,
- ATTACK_INPUT,
- DECAY_INPUT,
- SUSTAIN_INPUT,
- RELEASE_INPUT,
- HOLD_INPUT,
- TRIGGER_INPUT,
- NUM_INPUTS
- };
-
- enum OutputsIds {
- DELAY_OUTPUT,
- ATTACK_OUTPUT,
- DECAY_OUTPUT,
- SUSTAIN_OUTPUT,
- RELEASE_OUTPUT,
- ENV_OUTPUT,
- INV_OUTPUT,
- TRIGGER_OUTPUT,
- NUM_OUTPUTS
- };
-
- enum LightsIds {
- DELAY_LIGHT,
- ATTACK_LIGHT,
- DECAY_LIGHT,
- SUSTAIN_LIGHT,
- RELEASE_LIGHT,
- ATTACK_SHAPE1_LIGHT,
- ATTACK_SHAPE2_LIGHT,
- ATTACK_SHAPE3_LIGHT,
- DECAY_SHAPE1_LIGHT,
- DECAY_SHAPE2_LIGHT,
- DECAY_SHAPE3_LIGHT,
- RELEASE_SHAPE1_LIGHT,
- RELEASE_SHAPE2_LIGHT,
- RELEASE_SHAPE3_LIGHT,
- NUM_LIGHTS
- };
-
- DADSRHCore _core;
-
- DADSRHPlus() : TriggerOnLoadModule(
- NUM_PARAMS,
- NUM_INPUTS,
- NUM_OUTPUTS,
- NUM_LIGHTS
- )
- , _core(
- params[DELAY_PARAM],
- params[ATTACK_PARAM],
- params[DECAY_PARAM],
- params[SUSTAIN_PARAM],
- params[RELEASE_PARAM],
- params[HOLD_PARAM],
- params[ATTACK_SHAPE_PARAM],
- params[DECAY_SHAPE_PARAM],
- params[RELEASE_SHAPE_PARAM],
- params[TRIGGER_PARAM],
- params[MODE_PARAM],
- params[LOOP_PARAM],
- params[SPEED_PARAM],
- params[RETRIGGER_PARAM],
-
- &inputs[DELAY_INPUT],
- &inputs[ATTACK_INPUT],
- &inputs[DECAY_INPUT],
- &inputs[SUSTAIN_INPUT],
- &inputs[RELEASE_INPUT],
- &inputs[HOLD_INPUT],
- inputs[TRIGGER_INPUT],
-
- &outputs[DELAY_OUTPUT],
- &outputs[ATTACK_OUTPUT],
- &outputs[DECAY_OUTPUT],
- &outputs[SUSTAIN_OUTPUT],
- &outputs[RELEASE_OUTPUT],
- outputs[ENV_OUTPUT],
- outputs[INV_OUTPUT],
- outputs[TRIGGER_OUTPUT],
-
- lights[DELAY_LIGHT],
- lights[ATTACK_LIGHT],
- lights[DECAY_LIGHT],
- lights[SUSTAIN_LIGHT],
- lights[RELEASE_LIGHT],
- lights[ATTACK_SHAPE1_LIGHT],
- lights[ATTACK_SHAPE2_LIGHT],
- lights[ATTACK_SHAPE3_LIGHT],
- lights[DECAY_SHAPE1_LIGHT],
- lights[DECAY_SHAPE2_LIGHT],
- lights[DECAY_SHAPE3_LIGHT],
- lights[RELEASE_SHAPE1_LIGHT],
- lights[RELEASE_SHAPE2_LIGHT],
- lights[RELEASE_SHAPE3_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
|