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.

84 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. NUM_PARAMS
  24. };
  25. enum InputsIds {
  26. CV1_INPUT,
  27. PAN1_INPUT,
  28. IN1_INPUT,
  29. CV2_INPUT,
  30. PAN2_INPUT,
  31. IN2_INPUT,
  32. CV3_INPUT,
  33. PAN3_INPUT,
  34. IN3_INPUT,
  35. CV4_INPUT,
  36. PAN4_INPUT,
  37. IN4_INPUT,
  38. MIX_CV_INPUT,
  39. NUM_INPUTS
  40. };
  41. enum OutputsIds {
  42. L_OUTPUT,
  43. R_OUTPUT,
  44. NUM_OUTPUTS
  45. };
  46. enum LightsIds {
  47. NUM_LIGHTS
  48. };
  49. MixerChannel _channel1;
  50. MixerChannel _channel2;
  51. MixerChannel _channel3;
  52. MixerChannel _channel4;
  53. Amplifier _amplifier;
  54. SlewLimiter _slewLimiter;
  55. Saturator _saturator;
  56. RootMeanSquare _rms;
  57. float _rmsLevel = 0.0f;
  58. Mix4()
  59. : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
  60. , _channel1(params[LEVEL1_PARAM], params[PAN1_PARAM], params[MUTE1_PARAM], inputs[IN1_INPUT], inputs[CV1_INPUT], inputs[PAN1_INPUT])
  61. , _channel2(params[LEVEL2_PARAM], params[PAN2_PARAM], params[MUTE2_PARAM], inputs[IN2_INPUT], inputs[CV2_INPUT], inputs[PAN2_INPUT])
  62. , _channel3(params[LEVEL3_PARAM], params[PAN3_PARAM], params[MUTE3_PARAM], inputs[IN3_INPUT], inputs[CV3_INPUT], inputs[PAN3_INPUT])
  63. , _channel4(params[LEVEL4_PARAM], params[PAN4_PARAM], params[MUTE4_PARAM], inputs[IN4_INPUT], inputs[CV4_INPUT], inputs[PAN4_INPUT])
  64. {
  65. onSampleRateChange();
  66. _rms.setSensitivity(0.05f);
  67. }
  68. void onSampleRateChange() override;
  69. void step() override;
  70. };
  71. } // namespace bogaudio