BogaudioModules

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

VU.hpp (1260B)


      1 #pragma once
      2 
      3 #include "bogaudio.hpp"
      4 #include "dsp/filters/utility.hpp"
      5 #include "dsp/signal.hpp"
      6 
      7 using namespace bogaudio::dsp;
      8 
      9 extern Model* modelVU;
     10 
     11 namespace bogaudio {
     12 
     13 struct VU : BGModule {
     14 	enum ParamsIds {
     15 		NUM_PARAMS
     16 	};
     17 
     18 	enum InputsIds {
     19 		L_INPUT,
     20 		R_INPUT,
     21 		NUM_INPUTS
     22 	};
     23 
     24 	enum OutputsIds {
     25 		L_OUTPUT,
     26 		R_OUTPUT,
     27 		NUM_OUTPUTS
     28 	};
     29 
     30 	RootMeanSquare _lRms;
     31 	RootMeanSquare _rRms;
     32 	float _lLevel = 0.0f;
     33 	float _rLevel = 0.0f;
     34 
     35 	RunningAverage _lPeakRms;
     36 	RunningAverage _rPeakRms;
     37 	bogaudio::dsp::SlewLimiter _lPeakSlew;
     38 	bogaudio::dsp::SlewLimiter _rPeakSlew;
     39 	float _lPeakFalling = 0.0f;
     40 	float _rPeakFalling = 0.0f;
     41 	float _lPeakLevel = 0.0f;
     42 	float _rPeakLevel = 0.0f;
     43 
     44 	VU() {
     45 		config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
     46 		configBypass(L_INPUT, L_OUTPUT);
     47 		configBypass(R_INPUT, R_OUTPUT);
     48 
     49 		configInput(L_INPUT, "Left signal");
     50 		configInput(R_INPUT, "Right signal");
     51 
     52 		configOutput(L_OUTPUT, "Left signal");
     53 		configOutput(R_OUTPUT, "Right signal");
     54 
     55 		sampleRateChange();
     56 		_lRms.setSensitivity(1.0f);
     57 		_rRms.setSensitivity(1.0f);
     58 		_lPeakRms.setSensitivity(0.025f);
     59 		_rPeakRms.setSensitivity(0.025f);
     60 	}
     61 
     62 	void sampleRateChange() override;
     63 	void processAll(const ProcessArgs& args) override;
     64 };
     65 
     66 } // namespace bogaudio