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.

85 lines
1.7KB

  1. #pragma once
  2. #include "bogaudio.hpp"
  3. #include "mixer.hpp"
  4. #include "dsp/signal.hpp"
  5. using namespace bogaudio::dsp;
  6. extern Model* modelMix4;
  7. namespace bogaudio {
  8. struct Mix4 : Module {
  9. enum ParamsIds {
  10. LEVEL1_PARAM,
  11. PAN1_PARAM,
  12. MUTE1_PARAM,
  13. LEVEL2_PARAM,
  14. PAN2_PARAM,
  15. MUTE2_PARAM,
  16. LEVEL3_PARAM,
  17. PAN3_PARAM,
  18. MUTE3_PARAM,
  19. LEVEL4_PARAM,
  20. PAN4_PARAM,
  21. MUTE4_PARAM,
  22. MIX_PARAM,
  23. MIX_MUTE_PARAM,
  24. NUM_PARAMS
  25. };
  26. enum InputsIds {
  27. CV1_INPUT,
  28. PAN1_INPUT,
  29. IN1_INPUT,
  30. CV2_INPUT,
  31. PAN2_INPUT,
  32. IN2_INPUT,
  33. CV3_INPUT,
  34. PAN3_INPUT,
  35. IN3_INPUT,
  36. CV4_INPUT,
  37. PAN4_INPUT,
  38. IN4_INPUT,
  39. MIX_CV_INPUT,
  40. NUM_INPUTS
  41. };
  42. enum OutputsIds {
  43. L_OUTPUT,
  44. R_OUTPUT,
  45. NUM_OUTPUTS
  46. };
  47. enum LightsIds {
  48. NUM_LIGHTS
  49. };
  50. MixerChannel _channel1;
  51. MixerChannel _channel2;
  52. MixerChannel _channel3;
  53. MixerChannel _channel4;
  54. Amplifier _amplifier;
  55. SlewLimiter _slewLimiter;
  56. Saturator _saturator;
  57. RootMeanSquare _rms;
  58. float _rmsLevel = 0.0f;
  59. Mix4()
  60. : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
  61. , _channel1(params[LEVEL1_PARAM], params[PAN1_PARAM], params[MUTE1_PARAM], inputs[IN1_INPUT], inputs[CV1_INPUT], inputs[PAN1_INPUT])
  62. , _channel2(params[LEVEL2_PARAM], params[PAN2_PARAM], params[MUTE2_PARAM], inputs[IN2_INPUT], inputs[CV2_INPUT], inputs[PAN2_INPUT])
  63. , _channel3(params[LEVEL3_PARAM], params[PAN3_PARAM], params[MUTE3_PARAM], inputs[IN3_INPUT], inputs[CV3_INPUT], inputs[PAN3_INPUT])
  64. , _channel4(params[LEVEL4_PARAM], params[PAN4_PARAM], params[MUTE4_PARAM], inputs[IN4_INPUT], inputs[CV4_INPUT], inputs[PAN4_INPUT])
  65. {
  66. onSampleRateChange();
  67. _rms.setSensitivity(0.05f);
  68. }
  69. void onSampleRateChange() override;
  70. void step() override;
  71. };
  72. } // namespace bogaudio