|
- #pragma once
-
- namespace rack_plugin_TheXOR {
-
- struct Spiralone : Module
- {
- enum ParamIds
- {
- M_RESET,
- VOLTAGE_1,
- MODE_1 = VOLTAGE_1 + TOTAL_STEPS,
- LENGHT_1 = MODE_1 + NUM_SEQUENCERS,
- STRIDE_1 = LENGHT_1 + NUM_SEQUENCERS,
- XPOSE_1 = STRIDE_1 + NUM_SEQUENCERS,
- NUM_PARAMS = XPOSE_1 + NUM_SEQUENCERS
- };
-
- enum InputIds
- {
- RESET_1,
- INLENGHT_1 = RESET_1 + NUM_SEQUENCERS,
- INSTRIDE_1 = INLENGHT_1 + NUM_SEQUENCERS,
- INXPOSE_1 = INSTRIDE_1 + NUM_SEQUENCERS,
- CLOCK_1 = INXPOSE_1 + NUM_SEQUENCERS,
- NUM_INPUTS = CLOCK_1 + NUM_SEQUENCERS
- };
-
- enum OutputIds
- {
- CV_1,
- GATE_1 = CV_1 + NUM_SEQUENCERS,
- NUM_OUTPUTS = GATE_1 + NUM_SEQUENCERS
- };
-
- enum LightIds
- {
- LED_SEQUENCE_1,
- NUM_LIGHTS = (LED_SEQUENCE_1 + TOTAL_STEPS) * NUM_SEQUENCERS
- };
-
- Spiralone() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
- {
- #ifdef LAUNCHPAD
- drv = new LaunchpadBindingDriver(this, Scene5, 1);
- #endif
- #ifdef OSCTEST_MODULE
- oscDrv = new OSCDriver(this, 5);
- #endif
-
- on_loaded();
- }
-
- #ifdef DIGITAL_EXT
- ~Spiralone()
- {
- #if defined(LAUNCHPAD)
- delete drv;
- #endif
- #if defined(OSCTEST_MODULE)
- delete oscDrv;
- #endif
- }
- #endif
-
- void step() override;
- void reset() override { load(); }
-
- void fromJson(json_t *root) override { Module::fromJson(root); on_loaded(); }
- json_t *toJson() override
- {
- json_t *rootJ = json_object();
- return rootJ;
- }
-
- #ifdef DIGITAL_EXT
- float connected;
- #endif
- #ifdef LAUNCHPAD
- LaunchpadBindingDriver *drv;
- #endif
- #if defined(OSCTEST_MODULE)
- OSCDriver *oscDrv;
- #endif
-
- private:
- void on_loaded();
- void load();
-
- spiraloneSequencer sequencer[NUM_SEQUENCERS];
- SchmittTrigger masterReset;
- };
-
- } // namespace rack_plugin_TheXOR
|