MCPcopy Create free account
hub / github.com/StrangeLoopsAudio/gRainbow / EnvPanel

Method EnvPanel

Source/Components/Modulators/EnvPanel.cpp:15–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13#include "Utils/Colour.h"
14
15EnvPanel::EnvPanel(int modIdx, Parameters& parameters)
16 : mParameters(parameters),
17 mModEnv(mParameters.global.modEnvs[modIdx]),
18 mSliderAttack(mParameters, mModEnv.attack),
19 mSliderDecay(mParameters, mModEnv.decay),
20 mSliderSustain(mParameters, mModEnv.sustain),
21 mSliderRelease(mParameters, mModEnv.release),
22 mBtnMap(mParameters, mModEnv) {
23 // Default slider settings
24 std::vector<std::reference_wrapper<juce::Slider>> sliders = { mSliderAttack, mSliderDecay, mSliderSustain, mSliderRelease };
25 for (auto& slider : sliders) {
26 slider.get().setNumDecimalPlacesToDisplay(2);
27 slider.get().setPopupDisplayEnabled(true, true, this);
28 slider.get().setColour(juce::Slider::ColourIds::rotarySliderOutlineColourId, mModEnv.colour);
29 addAndMakeVisible(slider.get());
30 }
31 mSliderAttack.setRange(ParamRanges::ATTACK.start, ParamRanges::ATTACK.end, 0.01);
32 mSliderAttack.setDoubleClickReturnValue(true, ParamDefaults::ATTACK_DEFAULT_SEC);
33 mSliderAttack.setTextValueSuffix(" s");
34 mSliderDecay.setRange(ParamRanges::DECAY.start, ParamRanges::DECAY.end, 0.01);
35 mSliderDecay.setDoubleClickReturnValue(true, ParamDefaults::DECAY_DEFAULT_SEC);
36 mSliderDecay.setTextValueSuffix(" s");
37 mSliderSustain.setRange(ParamRanges::SUSTAIN.start, ParamRanges::SUSTAIN.end, 0.01);
38 mSliderSustain.setDoubleClickReturnValue(true, ParamDefaults::SUSTAIN_DEFAULT);
39 mSliderSustain.setTextValueSuffix(" dB");
40 mSliderRelease.setRange(ParamRanges::RELEASE.start, ParamRanges::RELEASE.end, 0.01);
41 mSliderRelease.setDoubleClickReturnValue(true, ParamDefaults::RELEASE_DEFAULT_SEC);
42 mSliderRelease.setTextValueSuffix(" s");
43
44 // Default button settings
45 std::vector<std::reference_wrapper<juce::TextButton>> buttons = { mBtnMap };
46 for (auto& button : buttons) {
47 button.get().setToggleable(true);
48 button.get().setColour(juce::TextButton::textColourOffId, mModEnv.colour);
49 button.get().setColour(juce::TextButton::textColourOnId, juce::Colours::black);
50 button.get().setColour(juce::TextButton::buttonColourId, mModEnv.colour);
51 button.get().setColour(juce::TextButton::buttonOnColourId, mModEnv.colour);
52 addAndMakeVisible(button.get());
53 }
54
55 // Default label settings
56 std::vector<std::reference_wrapper<juce::Label>> labels = { mLabelAttack, mLabelDecay, mLabelSustain, mLabelRelease };
57 for (auto& label : labels) {
58 label.get().setColour(juce::Label::ColourIds::textColourId, mModEnv.colour);
59 label.get().setJustificationType(juce::Justification::centredTop);
60 label.get().setFont(Utils::getFont());
61 addAndMakeVisible(label.get());
62 }
63 mLabelAttack.setText("attack", juce::dontSendNotification);
64 mLabelDecay.setText("decay", juce::dontSendNotification);
65 mLabelSustain.setText("sustain", juce::dontSendNotification);
66 mLabelRelease.setText("release", juce::dontSendNotification);
67
68 mModEnv.attack->addListener(this);
69 mModEnv.decay->addListener(this);
70 mModEnv.sustain->addListener(this);
71 mModEnv.release->addListener(this);
72 mParamHasChanged.store(true); // Init param values

Callers

nothing calls this directly

Calls 2

getFontFunction · 0.85
addListenerMethod · 0.80

Tested by

no test coverage detected