BogaudioModules

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

shaper_core.hpp (2737B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 
      5 namespace bogaudio {
      6 
      7 struct ShaperCore {
      8 	enum Stage {
      9 		STOPPED_STAGE,
     10 		ATTACK_STAGE,
     11 		ON_STAGE,
     12 		DECAY_STAGE,
     13 		OFF_STAGE
     14 	};
     15 
     16 	Param& _attackParam;
     17 	Param& _onParam;
     18 	Param& _decayParam;
     19 	Param& _offParam;
     20 	Param& _envParam;
     21 	Param& _signalParam;
     22 	Param& _triggerParam;
     23 	Param& _speedParam;
     24 	Param& _loopParam;
     25 
     26 	Input& _signalInput;
     27 	Input& _triggerInput;
     28 	Input* _attackInput;
     29 	Input* _onInput;
     30 	Input* _decayInput;
     31 	Input* _offInput;
     32 	Input* _envInput;
     33 	Input* _signalCVInput;
     34 
     35 	Output& _signalOutput;
     36 	Output& _envOutput;
     37 	Output& _invOutput;
     38 	Output& _triggerOutput;
     39 	Output* _attackOutput;
     40 	Output* _onOutput;
     41 	Output* _decayOutput;
     42 	Output* _offOutput;
     43 
     44 	float* _attackLights;
     45 	float* _onLights;
     46 	float* _decayLights;
     47 	float* _offLights;
     48 
     49 	bool _firstStep = true;
     50 	bool& _triggerOnLoad;
     51 	bool& _shouldTriggerOnLoad;
     52 	Trigger _trigger;
     53 	rack::dsp::PulseGenerator _triggerOuptutPulseGen;
     54 	Stage _stage;
     55 	float _stageProgress;
     56 
     57 	ShaperCore(
     58 		Param& attackParam,
     59 		Param& onParam,
     60 		Param& decayParam,
     61 		Param& offParam,
     62 		Param& envParam,
     63 		Param& signalParam,
     64 		Param& triggerParam,
     65 		Param& speedParam,
     66 		Param& loopParam,
     67 
     68 		Input& signalInput,
     69 		Input& triggerInput,
     70 		Input* attackInput,
     71 		Input* onInput,
     72 		Input* decayInput,
     73 		Input* offInput,
     74 		Input* envInput,
     75 		Input* signalCVInput,
     76 
     77 		Output& signalOutput,
     78 		Output& envOutput,
     79 		Output& invOutput,
     80 		Output& triggerOutput,
     81 		Output* attackOutput,
     82 		Output* onOutput,
     83 		Output* decayOutput,
     84 		Output* offOutput,
     85 
     86 		float* attackLights,
     87 		float* onLights,
     88 		float* decayLights,
     89 		float* offLights,
     90 
     91 		bool& triggerOnLoad,
     92 		bool& shouldTriggerOnLoad
     93 	) : _attackParam(attackParam)
     94 	, _onParam(onParam)
     95 	, _decayParam(decayParam)
     96 	, _offParam(offParam)
     97 	, _envParam(envParam)
     98 	, _signalParam(signalParam)
     99 	, _triggerParam(triggerParam)
    100 	, _speedParam(speedParam)
    101 	, _loopParam(loopParam)
    102 
    103 	, _signalInput(signalInput)
    104 	, _triggerInput(triggerInput)
    105 	, _attackInput(attackInput)
    106 	, _onInput(onInput)
    107 	, _decayInput(decayInput)
    108 	, _offInput(offInput)
    109 	, _envInput(envInput)
    110 	, _signalCVInput(signalCVInput)
    111 
    112 	, _signalOutput(signalOutput)
    113 	, _envOutput(envOutput)
    114 	, _invOutput(invOutput)
    115 	, _triggerOutput(triggerOutput)
    116 	, _attackOutput(attackOutput)
    117 	, _onOutput(onOutput)
    118 	, _decayOutput(decayOutput)
    119 	, _offOutput(offOutput)
    120 
    121 	, _attackLights(attackLights)
    122 	, _onLights(onLights)
    123 	, _decayLights(decayLights)
    124 	, _offLights(offLights)
    125 
    126 	, _triggerOnLoad(triggerOnLoad)
    127 	, _shouldTriggerOnLoad(shouldTriggerOnLoad)
    128 	{
    129 		reset();
    130 	}
    131 
    132 	void reset();
    133 	void step(int c, int channels);
    134 
    135 	bool stepStage(Param& knob, Input* cv, bool slow, int c);
    136 	float levelParam(Param& knob, Input* cv, int c) const;
    137 };
    138 
    139 } // namespace bogaudio