You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
786B

  1. #pragma once
  2. #include "bogaudio.hpp"
  3. #include "dsp/signal.hpp"
  4. using namespace bogaudio::dsp;
  5. extern Model* modelVCAmp;
  6. namespace bogaudio {
  7. struct VCAmp : Module {
  8. enum ParamsIds {
  9. LEVEL_PARAM,
  10. NUM_PARAMS
  11. };
  12. enum InputsIds {
  13. CV_INPUT,
  14. IN_INPUT,
  15. NUM_INPUTS
  16. };
  17. enum OutputsIds {
  18. OUT_OUTPUT,
  19. NUM_OUTPUTS
  20. };
  21. enum LightsIds {
  22. NUM_LIGHTS
  23. };
  24. const float maxDecibels = 12.0f;
  25. const float minDecibels = Amplifier::minDecibels;
  26. Amplifier _amplifier;
  27. SlewLimiter _levelSL;
  28. Saturator _saturator;
  29. RootMeanSquare _rms;
  30. float _rmsLevel = 0.0f;
  31. VCAmp() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
  32. onSampleRateChange();
  33. _rms.setSensitivity(0.05f);
  34. }
  35. void onSampleRateChange() override;
  36. void step() override;
  37. };
  38. } // namespace bogaudio