#pragma once #include "bogaudio.hpp" #include "dsp/signal.hpp" using namespace bogaudio::dsp; extern Model* modelVCAmp; namespace bogaudio { struct VCAmp : Module { enum ParamsIds { LEVEL_PARAM, NUM_PARAMS }; enum InputsIds { CV_INPUT, IN_INPUT, NUM_INPUTS }; enum OutputsIds { OUT_OUTPUT, NUM_OUTPUTS }; enum LightsIds { NUM_LIGHTS }; const float maxDecibels = 12.0f; const float minDecibels = Amplifier::minDecibels; Amplifier _amplifier; SlewLimiter _levelSL; Saturator _saturator; RootMeanSquare _rms; float _rmsLevel = 0.0f; VCAmp() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { onSampleRateChange(); _rms.setSensitivity(0.05f); } void onSampleRateChange() override; void step() override; }; } // namespace bogaudio