BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

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:
Msrc/Mix4.cpp | 6+++++-
Msrc/Mix8.cpp | 6+++++-
Msrc/mixer.cpp | 12++++++++++++
Msrc/mixer.hpp | 5+++++
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; };