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.

116 lines
2.6KB

  1. #pragma once
  2. #include "bogaudio.hpp"
  3. #include "mixer.hpp"
  4. #include "dsp/signal.hpp"
  5. using namespace bogaudio::dsp;
  6. extern Model* modelMix8;
  7. namespace bogaudio {
  8. struct Mix8 : Module {
  9. enum ParamsIds {
  10. LEVEL1_PARAM,
  11. MUTE1_PARAM,
  12. PAN1_PARAM,
  13. LEVEL2_PARAM,
  14. MUTE2_PARAM,
  15. PAN2_PARAM,
  16. LEVEL3_PARAM,
  17. MUTE3_PARAM,
  18. PAN3_PARAM,
  19. LEVEL4_PARAM,
  20. MUTE4_PARAM,
  21. PAN4_PARAM,
  22. LEVEL5_PARAM,
  23. MUTE5_PARAM,
  24. PAN5_PARAM,
  25. LEVEL6_PARAM,
  26. MUTE6_PARAM,
  27. PAN6_PARAM,
  28. LEVEL7_PARAM,
  29. MUTE7_PARAM,
  30. PAN7_PARAM,
  31. LEVEL8_PARAM,
  32. MUTE8_PARAM,
  33. PAN8_PARAM,
  34. MIX_PARAM,
  35. NUM_PARAMS
  36. };
  37. enum InputsIds {
  38. CV1_INPUT,
  39. PAN1_INPUT,
  40. IN1_INPUT,
  41. CV2_INPUT,
  42. PAN2_INPUT,
  43. IN2_INPUT,
  44. CV3_INPUT,
  45. PAN3_INPUT,
  46. IN3_INPUT,
  47. CV4_INPUT,
  48. PAN4_INPUT,
  49. IN4_INPUT,
  50. CV5_INPUT,
  51. PAN5_INPUT,
  52. IN5_INPUT,
  53. CV6_INPUT,
  54. PAN6_INPUT,
  55. IN6_INPUT,
  56. CV7_INPUT,
  57. PAN7_INPUT,
  58. IN7_INPUT,
  59. CV8_INPUT,
  60. PAN8_INPUT,
  61. IN8_INPUT,
  62. MIX_CV_INPUT,
  63. NUM_INPUTS
  64. };
  65. enum OutputsIds {
  66. L_OUTPUT,
  67. R_OUTPUT,
  68. NUM_OUTPUTS
  69. };
  70. enum LightsIds {
  71. NUM_LIGHTS
  72. };
  73. MixerChannel _channel1;
  74. MixerChannel _channel2;
  75. MixerChannel _channel3;
  76. MixerChannel _channel4;
  77. MixerChannel _channel5;
  78. MixerChannel _channel6;
  79. MixerChannel _channel7;
  80. MixerChannel _channel8;
  81. Amplifier _amplifier;
  82. SlewLimiter _slewLimiter;
  83. Saturator _saturator;
  84. RootMeanSquare _rms;
  85. float _rmsLevel = 0.0f;
  86. Mix8()
  87. : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
  88. , _channel1(params[LEVEL1_PARAM], params[PAN1_PARAM], params[MUTE1_PARAM], inputs[IN1_INPUT], inputs[CV1_INPUT], inputs[PAN1_INPUT])
  89. , _channel2(params[LEVEL2_PARAM], params[PAN2_PARAM], params[MUTE2_PARAM], inputs[IN2_INPUT], inputs[CV2_INPUT], inputs[PAN2_INPUT])
  90. , _channel3(params[LEVEL3_PARAM], params[PAN3_PARAM], params[MUTE3_PARAM], inputs[IN3_INPUT], inputs[CV3_INPUT], inputs[PAN3_INPUT])
  91. , _channel4(params[LEVEL4_PARAM], params[PAN4_PARAM], params[MUTE4_PARAM], inputs[IN4_INPUT], inputs[CV4_INPUT], inputs[PAN4_INPUT])
  92. , _channel5(params[LEVEL5_PARAM], params[PAN5_PARAM], params[MUTE5_PARAM], inputs[IN5_INPUT], inputs[CV4_INPUT], inputs[PAN5_INPUT])
  93. , _channel6(params[LEVEL6_PARAM], params[PAN6_PARAM], params[MUTE6_PARAM], inputs[IN6_INPUT], inputs[CV4_INPUT], inputs[PAN6_INPUT])
  94. , _channel7(params[LEVEL7_PARAM], params[PAN7_PARAM], params[MUTE7_PARAM], inputs[IN7_INPUT], inputs[CV4_INPUT], inputs[PAN7_INPUT])
  95. , _channel8(params[LEVEL8_PARAM], params[PAN8_PARAM], params[MUTE8_PARAM], inputs[IN8_INPUT], inputs[CV4_INPUT], inputs[PAN8_INPUT])
  96. {
  97. onSampleRateChange();
  98. _rms.setSensitivity(0.05f);
  99. }
  100. void onSampleRateChange() override;
  101. void step() override;
  102. };
  103. } // namespace bogaudio