EQS.hpp (1461B)
1 #pragma once 2 3 #include "bogaudio.hpp" 4 #include "dsp/filters/equalizer.hpp" 5 6 extern Model* modelEQS; 7 8 namespace bogaudio { 9 10 struct EQS : BGModule { 11 enum ParamsIds { 12 LOW_PARAM, 13 MID_PARAM, 14 HIGH_PARAM, 15 NUM_PARAMS 16 }; 17 18 enum InputsIds { 19 LEFT_INPUT, 20 RIGHT_INPUT, 21 NUM_INPUTS 22 }; 23 24 enum OutputsIds { 25 LEFT_OUTPUT, 26 RIGHT_OUTPUT, 27 NUM_OUTPUTS 28 }; 29 30 struct Engine { 31 bogaudio::dsp::Equalizer _left; 32 bogaudio::dsp::Equalizer _right; 33 }; 34 35 float _lowDb = 0.0f; 36 float _midDb = 0.0f; 37 float _highDb = 0.0f; 38 Engine* _engines[maxChannels] {}; 39 40 EQS() { 41 config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); 42 configParam<EQParamQuantity>(LOW_PARAM, -1.0f, 1.0f, 0.0f, "Low", " dB"); 43 configParam<EQParamQuantity>(MID_PARAM, -1.0f, 1.0f, 0.0f, "Mid", " dB"); 44 configParam<EQParamQuantity>(HIGH_PARAM, -1.0f, 1.0f, 0.0f, "High", " dB"); 45 configBypass(LEFT_INPUT, LEFT_OUTPUT); 46 configBypass(RIGHT_INPUT, RIGHT_OUTPUT); 47 48 configInput(LEFT_INPUT, "Left signal"); 49 configInput(RIGHT_INPUT, "Right signal"); 50 51 configOutput(LEFT_OUTPUT, "Left signal"); 52 configOutput(RIGHT_OUTPUT, "Right signal"); 53 } 54 55 bool active() override; 56 int channels() override; 57 void addChannel(int c) override; 58 void removeChannel(int c) override; 59 float knobToDb(Param& p); 60 void modulate() override; 61 void modulateChannel(int c) override; 62 void processAll(const ProcessArgs& args) override; 63 void processChannel(const ProcessArgs& args, int c) override; 64 }; 65 66 } // namespace bogaudio