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.

117 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. MIX_MUTE_PARAM,
  36. NUM_PARAMS
  37. };
  38. enum InputsIds {
  39. CV1_INPUT,
  40. PAN1_INPUT,
  41. IN1_INPUT,
  42. CV2_INPUT,
  43. PAN2_INPUT,
  44. IN2_INPUT,
  45. CV3_INPUT,
  46. PAN3_INPUT,
  47. IN3_INPUT,
  48. CV4_INPUT,
  49. PAN4_INPUT,
  50. IN4_INPUT,
  51. CV5_INPUT,
  52. PAN5_INPUT,
  53. IN5_INPUT,
  54. CV6_INPUT,
  55. PAN6_INPUT,
  56. IN6_INPUT,
  57. CV7_INPUT,
  58. PAN7_INPUT,
  59. IN7_INPUT,
  60. CV8_INPUT,
  61. PAN8_INPUT,
  62. IN8_INPUT,
  63. MIX_CV_INPUT,
  64. NUM_INPUTS
  65. };
  66. enum OutputsIds {
  67. L_OUTPUT,
  68. R_OUTPUT,
  69. NUM_OUTPUTS
  70. };
  71. enum LightsIds {
  72. NUM_LIGHTS
  73. };
  74. MixerChannel _channel1;
  75. MixerChannel _channel2;
  76. MixerChannel _channel3;
  77. MixerChannel _channel4;
  78. MixerChannel _channel5;
  79. MixerChannel _channel6;
  80. MixerChannel _channel7;
  81. MixerChannel _channel8;
  82. Amplifier _amplifier;
  83. SlewLimiter _slewLimiter;
  84. Saturator _saturator;
  85. RootMeanSquare _rms;
  86. float _rmsLevel = 0.0f;
  87. Mix8()
  88. : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
  89. , _channel1(params[LEVEL1_PARAM], params[PAN1_PARAM], params[MUTE1_PARAM], inputs[IN1_INPUT], inputs[CV1_INPUT], inputs[PAN1_INPUT])
  90. , _channel2(params[LEVEL2_PARAM], params[PAN2_PARAM], params[MUTE2_PARAM], inputs[IN2_INPUT], inputs[CV2_INPUT], inputs[PAN2_INPUT])
  91. , _channel3(params[LEVEL3_PARAM], params[PAN3_PARAM], params[MUTE3_PARAM], inputs[IN3_INPUT], inputs[CV3_INPUT], inputs[PAN3_INPUT])
  92. , _channel4(params[LEVEL4_PARAM], params[PAN4_PARAM], params[MUTE4_PARAM], inputs[IN4_INPUT], inputs[CV4_INPUT], inputs[PAN4_INPUT])
  93. , _channel5(params[LEVEL5_PARAM], params[PAN5_PARAM], params[MUTE5_PARAM], inputs[IN5_INPUT], inputs[CV5_INPUT], inputs[PAN5_INPUT])
  94. , _channel6(params[LEVEL6_PARAM], params[PAN6_PARAM], params[MUTE6_PARAM], inputs[IN6_INPUT], inputs[CV6_INPUT], inputs[PAN6_INPUT])
  95. , _channel7(params[LEVEL7_PARAM], params[PAN7_PARAM], params[MUTE7_PARAM], inputs[IN7_INPUT], inputs[CV7_INPUT], inputs[PAN7_INPUT])
  96. , _channel8(params[LEVEL8_PARAM], params[PAN8_PARAM], params[MUTE8_PARAM], inputs[IN8_INPUT], inputs[CV8_INPUT], inputs[PAN8_INPUT])
  97. {
  98. onSampleRateChange();
  99. _rms.setSensitivity(0.05f);
  100. }
  101. void onSampleRateChange() override;
  102. void step() override;
  103. };
  104. } // namespace bogaudio