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

Method FilterControl

Source/Components/FilterControl.cpp:16–66  ·  view source on GitHub ↗

==============================================================================

Source from the content-addressed store, hash-verified

14
15//==============================================================================
16FilterControl::FilterControl(Parameters& parameters)
17 : mParameters(parameters),
18 mSliderCutoff(parameters, mParameters.global.filterCutoff),
19 mSliderResonance(parameters, mParameters.global.filterRes),
20 mPathStroke(3, juce::PathStrokeType::JointStyle::mitered, juce::PathStrokeType::EndCapStyle::rounded) {
21 juce::Colour colour = Utils::Colour::GLOBAL;
22
23 // Default slider settings
24 std::vector<std::reference_wrapper<juce::Slider>> sliders = { mSliderCutoff, mSliderResonance };
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, Utils::Colour::GLOBAL);
29 addAndMakeVisible(slider.get());
30 }
31 mSliderCutoff.setRange(ParamRanges::FILT_CUTOFF.start, ParamRanges::FILT_CUTOFF.end, 0.01);
32 mSliderCutoff.setTextValueSuffix("hz");
33 mSliderCutoff.setDoubleClickReturnValue(true, ParamDefaults::FILTER_LP_CUTOFF_DEFAULT_HZ);
34 mSliderResonance.setRange(ParamRanges::FILT_RESONANCE.start, ParamRanges::FILT_RESONANCE.end, 0.01);
35 mSliderResonance.setDoubleClickReturnValue(true, ParamDefaults::FILTER_RESONANCE_DEFAULT);
36
37 // Default label settings
38 std::vector<std::reference_wrapper<juce::Label>> labels = { mLabelCutoff, mLabelResonance };
39 for (auto& label : labels) {
40 label.get().setColour(juce::Label::ColourIds::textColourId, Utils::Colour::GLOBAL);
41 label.get().setJustificationType(juce::Justification::centredTop);
42 label.get().setFont(juce::Font(14));
43 addAndMakeVisible(label.get());
44 }
45 mLabelCutoff.setText("cutoff", juce::dontSendNotification);
46 mLabelResonance.setText("resonance", juce::dontSendNotification);
47
48 mFilterType.setJustificationType(juce::Justification::centred);
49 mFilterType.setColour(juce::ComboBox::ColourIds::backgroundColourId, colour);
50 for (int i = 0; i < FILTER_TYPE_NAMES.size(); ++i) {
51 mFilterType.addItem(FILTER_TYPE_NAMES[i], i + 1);
52 }
53 mFilterType.onChange = [this]() {
54 int type = mFilterType.getSelectedId() - 1;
55 ParamHelper::setParam(mParameters.global.filterType, type);
56 };
57 addAndMakeVisible(mFilterType);
58
59 mParameters.global.filterType->addListener(this);
60 mParameters.global.filterCutoff->addListener(this);
61 mParameters.global.filterRes->addListener(this);
62
63 mParamHasChanged.store(true); // Init param values
64
65 startTimer(Utils::UI_REFRESH_INTERVAL);
66}
67
68FilterControl::~FilterControl() {
69 mParameters.global.filterType->removeListener(this);

Callers

nothing calls this directly

Calls 2

setParamFunction · 0.85
addListenerMethod · 0.80

Tested by

no test coverage detected