BogaudioModules

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

commit c019b0bd32d92495508dd1f2c7bbcab4bb70a34a
parent 4664d3520ccbc9a97755afef33a9214a13931037
Author: Matt Demanett <matt@demanett.net>
Date:   Mon, 17 Sep 2018 00:09:23 -0400

Mix4/8: add mute button for master channel. #19

Diffstat:
Mres-src/Mix4-src.svg | 2++
Mres-src/Mix8-src.svg | 2++
Mres/Mix4.svg | 0
Mres/Mix8.svg | 0
Msrc/Mix4.cpp | 15++++++++++-----
Msrc/Mix4.hpp | 1+
Msrc/Mix8.cpp | 15++++++++++-----
Msrc/Mix8.hpp | 1+
8 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/res-src/Mix4-src.svg b/res-src/Mix4-src.svg @@ -220,6 +220,8 @@ <text font-size="5pt" letter-spacing="2px" transform="translate(13.7 9)">MIX</text> <use xlink:href="#sliderguide-db" transform="translate(0 12)" /> <use id="MIX_PARAM" xlink:href="#slider" transform="translate(13.5 12)" /> + <use id="MIX_MUTE_PARAM" xlink:href="#button" transform="translate(12.5 165)" /> + <text font-size="5pt" letter-spacing="2px" transform="translate(10 192)">MUTE</text> <g transform="translate(5.5 229)"> <rect width="34" height="50" rx="5" fill="#fafafa" /> <use id="MIX_CV_INPUT" xlink:href="#input" transform="translate(5 3)" /> diff --git a/res-src/Mix8-src.svg b/res-src/Mix8-src.svg @@ -308,6 +308,8 @@ <text font-size="5pt" letter-spacing="2px" transform="translate(13.7 9)">MIX</text> <use xlink:href="#sliderguide-db" transform="translate(0 12)" /> <use id="MIX_PARAM" xlink:href="#slider" transform="translate(13.5 12)" /> + <use id="MIX_MUTE_PARAM" xlink:href="#button" transform="translate(12.5 165)" /> + <text font-size="5pt" letter-spacing="2px" transform="translate(10 192)">MUTE</text> <g transform="translate(5.5 229)"> <rect width="34" height="50" rx="5" fill="#fafafa" /> <use id="MIX_CV_INPUT" xlink:href="#input" transform="translate(5 3)" /> diff --git a/res/Mix4.svg b/res/Mix4.svg Binary files differ. diff --git a/res/Mix8.svg b/res/Mix8.svg Binary files differ. diff --git a/src/Mix4.cpp b/src/Mix4.cpp @@ -18,12 +18,15 @@ void Mix4::step() { _channel3.next(stereo); _channel4.next(stereo); - float level = params[MIX_PARAM].value; - if (inputs[MIX_CV_INPUT].active) { - level *= clamp(inputs[MIX_CV_INPUT].value / 10.0f, 0.0f, 1.0f); + float level = Amplifier::minDecibels; + if (params[MIX_MUTE_PARAM].value < 0.5f) { + level = params[MIX_PARAM].value; + if (inputs[MIX_CV_INPUT].active) { + level *= clamp(inputs[MIX_CV_INPUT].value / 10.0f, 0.0f, 1.0f); + } + level *= MixerChannel::maxDecibels - MixerChannel::minDecibels; + level += MixerChannel::minDecibels; } - level *= MixerChannel::maxDecibels - MixerChannel::minDecibels; - level += MixerChannel::minDecibels; _amplifier.setLevel(_slewLimiter.next(level)); float mono = 0.0f; @@ -91,6 +94,7 @@ struct Mix4Widget : ModuleWidget { auto mute4ParamPosition = Vec(146.2, 185.7); auto pan4ParamPosition = Vec(147.5, 223.0); auto mixParamPosition = Vec(189.5, 32.0); + auto mixMuteParamPosition = Vec(189.2, 185.7); auto cv1InputPosition = Vec(14.5, 255.0); auto pan1InputPosition = Vec(14.5, 290.0); @@ -123,6 +127,7 @@ struct Mix4Widget : ModuleWidget { addParam(ParamWidget::create<Knob16>(pan4ParamPosition, module, Mix4::PAN4_PARAM, -1.0, 1.0, 0.0)); addParam(ParamWidget::create<MuteButton>(mute4ParamPosition, module, Mix4::MUTE4_PARAM, 0.0, 1.0, 0.0)); addSlider(mixParamPosition, module, Mix4::MIX_PARAM, module->_rmsLevel); + addParam(ParamWidget::create<MuteButton>(mixMuteParamPosition, module, Mix4::MIX_MUTE_PARAM, 0.0, 1.0, 0.0)); addInput(Port::create<Port24>(cv1InputPosition, Port::INPUT, module, Mix4::CV1_INPUT)); addInput(Port::create<Port24>(pan1InputPosition, Port::INPUT, module, Mix4::PAN1_INPUT)); diff --git a/src/Mix4.hpp b/src/Mix4.hpp @@ -25,6 +25,7 @@ struct Mix4 : Module { PAN4_PARAM, MUTE4_PARAM, MIX_PARAM, + MIX_MUTE_PARAM, NUM_PARAMS }; diff --git a/src/Mix8.cpp b/src/Mix8.cpp @@ -26,12 +26,15 @@ void Mix8::step() { _channel7.next(stereo); _channel8.next(stereo); - float level = params[MIX_PARAM].value; - if (inputs[MIX_CV_INPUT].active) { - level *= clamp(inputs[MIX_CV_INPUT].value / 10.0f, 0.0f, 1.0f); + float level = Amplifier::minDecibels; + if (params[MIX_MUTE_PARAM].value < 0.5f) { + level = params[MIX_PARAM].value; + if (inputs[MIX_CV_INPUT].active) { + level *= clamp(inputs[MIX_CV_INPUT].value / 10.0f, 0.0f, 1.0f); + } + level *= MixerChannel::maxDecibels - MixerChannel::minDecibels; + level += MixerChannel::minDecibels; } - level *= MixerChannel::maxDecibels - MixerChannel::minDecibels; - level += MixerChannel::minDecibels; _amplifier.setLevel(_slewLimiter.next(level)); float mono = 0.0f; @@ -123,6 +126,7 @@ struct Mix8Widget : ModuleWidget { auto mute8ParamPosition = Vec(325.2, 185.7); auto pan8ParamPosition = Vec(326.5, 223.0); auto mixParamPosition = Vec(369.5, 32.0); + auto mixMuteParamPosition = Vec(369.2, 185.7); auto cv1InputPosition = Vec(14.5, 255.0); auto pan1InputPosition = Vec(14.5, 290.0); @@ -179,6 +183,7 @@ struct Mix8Widget : ModuleWidget { addParam(ParamWidget::create<MuteButton>(mute8ParamPosition, module, Mix8::MUTE8_PARAM, 0.0, 1.0, 0.0)); addParam(ParamWidget::create<Knob16>(pan8ParamPosition, module, Mix8::PAN8_PARAM, -1.0, 1.0, 0.0)); addSlider(mixParamPosition, module, Mix8::MIX_PARAM, module->_rmsLevel); + addParam(ParamWidget::create<MuteButton>(mixMuteParamPosition, module, Mix8::MIX_MUTE_PARAM, 0.0, 1.0, 0.0)); addInput(Port::create<Port24>(cv1InputPosition, Port::INPUT, module, Mix8::CV1_INPUT)); addInput(Port::create<Port24>(pan1InputPosition, Port::INPUT, module, Mix8::PAN1_INPUT)); diff --git a/src/Mix8.hpp b/src/Mix8.hpp @@ -37,6 +37,7 @@ struct Mix8 : Module { MUTE8_PARAM, PAN8_PARAM, MIX_PARAM, + MIX_MUTE_PARAM, NUM_PARAMS };