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