|
- #pragma once
-
- #include "bogaudio.hpp"
- #include "mixer.hpp"
- #include "dsp/signal.hpp"
-
- using namespace bogaudio::dsp;
-
- extern Model* modelMix4;
-
- namespace bogaudio {
-
- struct Mix4 : Module {
- enum ParamsIds {
- LEVEL1_PARAM,
- PAN1_PARAM,
- MUTE1_PARAM,
- LEVEL2_PARAM,
- PAN2_PARAM,
- MUTE2_PARAM,
- LEVEL3_PARAM,
- PAN3_PARAM,
- MUTE3_PARAM,
- LEVEL4_PARAM,
- PAN4_PARAM,
- MUTE4_PARAM,
- MIX_PARAM,
- NUM_PARAMS
- };
-
- enum InputsIds {
- CV1_INPUT,
- PAN1_INPUT,
- IN1_INPUT,
- CV2_INPUT,
- PAN2_INPUT,
- IN2_INPUT,
- CV3_INPUT,
- PAN3_INPUT,
- IN3_INPUT,
- CV4_INPUT,
- PAN4_INPUT,
- IN4_INPUT,
- MIX_CV_INPUT,
- NUM_INPUTS
- };
-
- enum OutputsIds {
- L_OUTPUT,
- R_OUTPUT,
- NUM_OUTPUTS
- };
-
- enum LightsIds {
- NUM_LIGHTS
- };
-
- MixerChannel _channel1;
- MixerChannel _channel2;
- MixerChannel _channel3;
- MixerChannel _channel4;
- Amplifier _amplifier;
- SlewLimiter _slewLimiter;
- Saturator _saturator;
- RootMeanSquare _rms;
- float _rmsLevel = 0.0f;
-
- Mix4()
- : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS)
- , _channel1(params[LEVEL1_PARAM], params[PAN1_PARAM], params[MUTE1_PARAM], inputs[IN1_INPUT], inputs[CV1_INPUT], inputs[PAN1_INPUT])
- , _channel2(params[LEVEL2_PARAM], params[PAN2_PARAM], params[MUTE2_PARAM], inputs[IN2_INPUT], inputs[CV2_INPUT], inputs[PAN2_INPUT])
- , _channel3(params[LEVEL3_PARAM], params[PAN3_PARAM], params[MUTE3_PARAM], inputs[IN3_INPUT], inputs[CV3_INPUT], inputs[PAN3_INPUT])
- , _channel4(params[LEVEL4_PARAM], params[PAN4_PARAM], params[MUTE4_PARAM], inputs[IN4_INPUT], inputs[CV4_INPUT], inputs[PAN4_INPUT])
- {
- onSampleRateChange();
- _rms.setSensitivity(0.05f);
- }
-
- void onSampleRateChange() override;
- void step() override;
- };
-
- } // namespace bogaudio
|