commit 250e9143b01e4191b3e59a0c5a54d3f27fbd1b3a
parent 2e6f0b3ce4a15af359031b4242a696da10cda068
Author: Matt Demanett <matt@demanett.net>
Date: Wed, 17 Jun 2020 18:02:14 -0400
Fix randomization on MUMIX, and for mute buttons on MIX4/8.
Diffstat:
4 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/Mix4.cpp b/src/Mix4.cpp
@@ -218,7 +218,11 @@ struct Mix4Widget : ModuleWidget {
addParam(createParam<Knob16>(pan4ParamPosition, module, Mix4::PAN4_PARAM));
addParam(createParam<SoloMuteButton>(mute4ParamPosition, module, Mix4::MUTE4_PARAM));
addSlider(mixParamPosition, module, Mix4::MIX_PARAM, module ? &module->_rmsLevel : NULL);
- addParam(createParam<MuteButton>(mixMuteParamPosition, module, Mix4::MIX_MUTE_PARAM));
+ {
+ auto b = createParam<MuteButton>(mixMuteParamPosition, module, Mix4::MIX_MUTE_PARAM);
+ b->setRandomize(false);
+ addParam(b);
+ }
addInput(createInput<Port24>(cv1InputPosition, module, Mix4::CV1_INPUT));
addInput(createInput<Port24>(pan1InputPosition, module, Mix4::PAN1_INPUT));
diff --git a/src/Mix8.cpp b/src/Mix8.cpp
@@ -262,7 +262,11 @@ struct Mix8Widget : ModuleWidget {
addParam(createParam<SoloMuteButton>(mute8ParamPosition, module, Mix8::MUTE8_PARAM));
addParam(createParam<Knob16>(pan8ParamPosition, module, Mix8::PAN8_PARAM));
addSlider(mixParamPosition, module, Mix8::MIX_PARAM, module ? &module->_rmsLevel : NULL);
- addParam(createParam<MuteButton>(mixMuteParamPosition, module, Mix8::MIX_MUTE_PARAM));
+ {
+ auto b = createParam<MuteButton>(mixMuteParamPosition, module, Mix8::MIX_MUTE_PARAM);
+ b->setRandomize(false);
+ addParam(b);
+ }
addInput(createInput<Port24>(cv1InputPosition, module, Mix8::CV1_INPUT));
addInput(createInput<Port24>(pan1InputPosition, module, Mix8::PAN1_INPUT));
diff --git a/src/mixer.cpp b/src/mixer.cpp
@@ -38,6 +38,12 @@ void MixerChannel::next(float sample, bool solo, int c) {
}
+void MuteButton::randomize() {
+ if (_randomize) {
+ ToggleButton::randomize();
+ }
+}
+
void MuteButton::onButton(const event::Button& e) {
if (!(e.action == GLFW_PRESS && (e.mods & RACK_MOD_MASK) == 0)) {
return;
@@ -72,6 +78,12 @@ SoloMuteButton::SoloMuteButton() {
shadow->box.pos = Vec(0.0, 1.0);
}
+void SoloMuteButton::randomize() {
+ if (paramQuantity) {
+ paramQuantity->setValue(random::uniform() > 0.5f ? 1.0f : 0.0f);
+ }
+}
+
void SoloMuteButton::onButton(const event::Button& e) {
if (!paramQuantity || !(e.action == GLFW_PRESS && (e.mods & RACK_MOD_MASK) == 0)) {
ParamWidget::onButton(e);
diff --git a/src/mixer.hpp b/src/mixer.hpp
@@ -48,11 +48,15 @@ struct MixerChannel {
};
struct MuteButton : ToggleButton {
+ bool _randomize = true;
+
MuteButton() {
addFrame(APP->window->loadSvg(asset::plugin(pluginInstance, "res/button_18px_0.svg")));
addFrame(APP->window->loadSvg(asset::plugin(pluginInstance, "res/button_18px_1_orange.svg")));
}
+ inline void setRandomize(bool randomize) { _randomize = randomize; }
+ void randomize() override;
void onButton(const event::Button& e) override;
};
@@ -62,6 +66,7 @@ struct SoloMuteButton : ParamWidget {
CircularShadow* shadow = NULL;
SoloMuteButton();
+ void randomize() override;
void onButton(const event::Button& e) override;
void onChange(const event::Change& e) override;
};