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:
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
};