BogaudioModules

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

dadsrh_core.hpp (4345B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 
      5 namespace bogaudio {
      6 
      7 struct DADSRHCore {
      8 	enum Stage {
      9 		STOPPED_STAGE,
     10 		DELAY_STAGE,
     11 		ATTACK_STAGE,
     12 		DECAY_STAGE,
     13 		SUSTAIN_STAGE,
     14 		RELEASE_STAGE
     15 	};
     16 
     17 	Param& _delayParam;
     18 	Param& _attackParam;
     19 	Param& _decayParam;
     20 	Param& _sustainParam;
     21 	Param& _releaseParam;
     22 	Param& _holdParam;
     23 	Param& _attackShapeParam;
     24 	Param& _decayShapeParam;
     25 	Param& _releaseShapeParam;
     26 	Param& _triggerParam;
     27 	Param& _modeParam;
     28 	Param& _loopParam;
     29 	Param& _speedParam;
     30 	Param& _retriggerParam;
     31 
     32 	Input* _delayInput;
     33 	Input* _attackInput;
     34 	Input* _decayInput;
     35 	Input* _sustainInput;
     36 	Input* _releaseInput;
     37 	Input* _holdInput;
     38 	Input& _triggerInput;
     39 
     40 	Output* _delayOutput;
     41 	Output* _attackOutput;
     42 	Output* _decayOutput;
     43 	Output* _sustainOutput;
     44 	Output* _releaseOutput;
     45 	Output& _envOutput;
     46 	Output& _invOutput;
     47 	Output& _triggerOutput;
     48 
     49 	float* _delayLights;
     50 	float* _attackLights;
     51 	float* _decayLights;
     52 	float* _sustainLights;
     53 	float* _releaseLights;
     54 	Light& _attackShape1Light;
     55 	Light& _attackShape2Light;
     56 	Light& _attackShape3Light;
     57 	Light& _decayShape1Light;
     58 	Light& _decayShape2Light;
     59 	Light& _decayShape3Light;
     60 	Light& _releaseShape1Light;
     61 	Light& _releaseShape2Light;
     62 	Light& _releaseShape3Light;
     63 
     64 	bool _firstStep = true;
     65 	bool& _triggerOnLoad;
     66 	bool& _shouldTriggerOnLoad;
     67 	Trigger _trigger;
     68 	rack::dsp::PulseGenerator _triggerOuptutPulseGen;
     69 	Stage _stage;
     70 	float _envelope, _stageProgress, _holdProgress, _releaseLevel;
     71 
     72 	DADSRHCore(
     73 		Param& delayParam,
     74 		Param& attackParam,
     75 		Param& decayParam,
     76 		Param& sustainParam,
     77 		Param& releaseParam,
     78 		Param& holdParam,
     79 		Param& attackShapeParam,
     80 		Param& decayShapeParam,
     81 		Param& releaseShapeParam,
     82 		Param& triggerParam,
     83 		Param& modeParam,
     84 		Param& loopParam,
     85 		Param& speedParam,
     86 		Param& retriggerParam,
     87 
     88 		Input* delayInput,
     89 		Input* attackInput,
     90 		Input* decayInput,
     91 		Input* sustainInput,
     92 		Input* releaseInput,
     93 		Input* holdInput,
     94 		Input& triggerInput,
     95 
     96 		Output* delayOutput,
     97 		Output* attackOutput,
     98 		Output* decayOutput,
     99 		Output* sustainOutput,
    100 		Output* releaseOutput,
    101 		Output& envOutput,
    102 		Output& invOutput,
    103 		Output& triggerOutput,
    104 
    105 		float* delayLights,
    106 		float* attackLights,
    107 		float* decayLights,
    108 		float* sustainLights,
    109 		float* releaseLights,
    110 		Light& attackShape1Light,
    111 		Light& attackShape2Light,
    112 		Light& attackShape3Light,
    113 		Light& decayShape1Light,
    114 		Light& decayShape2Light,
    115 		Light& decayShape3Light,
    116 		Light& releaseShape1Light,
    117 		Light& releaseShape2Light,
    118 		Light& releaseShape3Light,
    119 
    120 		bool& triggerOnLoad,
    121 		bool& shouldTriggerOnLoad
    122 	) : _delayParam(delayParam)
    123 	, _attackParam(attackParam)
    124 	, _decayParam(decayParam)
    125 	, _sustainParam(sustainParam)
    126 	, _releaseParam(releaseParam)
    127 	, _holdParam(holdParam)
    128 	, _attackShapeParam(attackShapeParam)
    129 	, _decayShapeParam(decayShapeParam)
    130 	, _releaseShapeParam(releaseShapeParam)
    131 	, _triggerParam(triggerParam)
    132 	, _modeParam(modeParam)
    133 	, _loopParam(loopParam)
    134 	, _speedParam(speedParam)
    135 	, _retriggerParam(retriggerParam)
    136 
    137 	, _delayInput(delayInput)
    138 	, _attackInput(attackInput)
    139 	, _decayInput(decayInput)
    140 	, _sustainInput(sustainInput)
    141 	, _releaseInput(releaseInput)
    142 	, _holdInput(holdInput)
    143 	, _triggerInput(triggerInput)
    144 
    145 	, _delayOutput(delayOutput)
    146 	, _attackOutput(attackOutput)
    147 	, _decayOutput(decayOutput)
    148 	, _sustainOutput(sustainOutput)
    149 	, _releaseOutput(releaseOutput)
    150 	, _envOutput(envOutput)
    151 	, _invOutput(invOutput)
    152 	, _triggerOutput(triggerOutput)
    153 
    154 	, _delayLights(delayLights)
    155 	, _attackLights(attackLights)
    156 	, _decayLights(decayLights)
    157 	, _sustainLights(sustainLights)
    158 	, _releaseLights(releaseLights)
    159 	, _attackShape1Light(attackShape1Light)
    160 	, _attackShape2Light(attackShape2Light)
    161 	, _attackShape3Light(attackShape3Light)
    162 	, _decayShape1Light(decayShape1Light)
    163 	, _decayShape2Light(decayShape2Light)
    164 	, _decayShape3Light(decayShape3Light)
    165 	, _releaseShape1Light(releaseShape1Light)
    166 	, _releaseShape2Light(releaseShape2Light)
    167 	, _releaseShape3Light(releaseShape3Light)
    168 
    169 	, _triggerOnLoad(triggerOnLoad)
    170 	, _shouldTriggerOnLoad(shouldTriggerOnLoad)
    171 	{
    172 		reset();
    173 	}
    174 
    175 	void reset();
    176 	void step(int c, int channels);
    177 
    178 	float stepAmount(int c, Param& knob, Input* cv, bool slow, bool allowZero = false);
    179 	float knobTime(int c, Param& knob, Input* cv, bool slow, bool allowZero = false);
    180 	float knobAmount(int c, Param& knob, Input* cv) const;
    181 };
    182 
    183 } // namespace bogaudio