Vital
Loading...
Searching...
No Matches
modulation_interface.h
Go to the documentation of this file.
1#pragma once
2
3#include "JuceHeader.h"
5#include "synth_constants.h"
6#include "synth_section.h"
7
9class RandomSection;
10class LineGenerator;
11class LfoSection;
12struct SynthGuiData;
13
29public:
33 static constexpr int kMinEnvelopeModulationsToShow = 3;
34 static constexpr int kMinLfoModulationsToShow = 4;
35 static constexpr int kMinRandomModulationsToShow = 2;
36 static constexpr int kMinTotalModulations =
38
45
50
56 void paintBackground(Graphics& g) override;
57
63 void paintBackgroundShadow(Graphics& g) override;
64
71 void resized() override;
72
76 void reset() override;
77
82 void checkNumShown();
83
92 void modulationSelected(ModulationTabSelector* selector, int index) override;
93
97 void setFocus() { grabKeyboardFocus(); }
98
99private:
103 std::unique_ptr<EnvelopeSection> envelopes_[vital::kNumEnvelopes];
104
108 std::unique_ptr<ModulationTabSelector> envelope_tab_selector_;
109
113 std::unique_ptr<LfoSection> lfos_[vital::kNumLfos];
114
118 std::unique_ptr<ModulationTabSelector> lfo_tab_selector_;
119
123 std::unique_ptr<RandomSection> random_lfos_[vital::kNumRandomLfos];
124
128 std::unique_ptr<ModulationTabSelector> random_tab_selector_;
129
133 std::unique_ptr<ModulationTabSelector> keyboard_modulations_top_;
134
138 std::unique_ptr<ModulationTabSelector> keyboard_modulations_bottom_;
139
140 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ModulationInterface)
141};
A UI section for configuring and visualizing ADSR envelopes.
Definition envelope_section.h:66
A user interface section that displays and controls an LFO (Low Frequency Oscillator) in the synthesi...
Definition lfo_section.h:33
A class for generating and storing a line shape, defined by a series of points and associated powers.
Definition line_generator.h:20
A user interface section for managing and viewing various modulation sources like envelopes,...
Definition modulation_interface.h:28
~ModulationInterface()
Destructor.
Definition modulation_interface.cpp:105
static constexpr int kMinLfoModulationsToShow
Minimum LFOs to show.
Definition modulation_interface.h:34
static constexpr int kMinTotalModulations
Definition modulation_interface.h:36
void checkNumShown()
Checks and adjusts the number of shown modulations in each category to maintain consistency with the ...
Definition modulation_interface.cpp:220
void paintBackground(Graphics &g) override
Paints the background of the modulation interface.
Definition modulation_interface.cpp:107
void reset() override
Resets all visible modulation sections to their default states.
Definition modulation_interface.cpp:198
void setFocus()
Gives keyboard focus to this component.
Definition modulation_interface.h:97
void resized() override
Called when the component is resized.
Definition modulation_interface.cpp:146
void modulationSelected(ModulationTabSelector *selector, int index) override
Called when a modulation tab is selected.
Definition modulation_interface.cpp:228
void paintBackgroundShadow(Graphics &g) override
Paints shadows behind the modulation sections.
Definition modulation_interface.cpp:135
static constexpr int kMinEnvelopeModulationsToShow
The minimum number of envelopes, LFOs, and random modulations to show by default.
Definition modulation_interface.h:33
ModulationInterface(SynthGuiData *synth_data)
Constructs the ModulationInterface.
Definition modulation_interface.cpp:26
static constexpr int kMinRandomModulationsToShow
Minimum random modulations to show.
Definition modulation_interface.h:35
Interface for objects interested in ModulationTabSelector events.
Definition modulation_tab_selector.h:22
A section of the GUI providing multiple modulation sources as tabs.
Definition modulation_tab_selector.h:16
A section of the UI dedicated to controlling a random mod source, such as a random LFO.
Definition random_section.h:19
Base class for all synthesizer sections, providing UI layout, painting, and interaction logic.
Definition synth_section.h:193
constexpr int kNumRandomLfos
Number of random LFO sources (random modulation generators).
Definition synth_constants.h:25
constexpr int kNumEnvelopes
Number of envelope generators in Vital.
Definition synth_constants.h:22
constexpr int kNumLfos
Number of LFO sources available in the Vital synthesizer.
Definition synth_constants.h:13
A struct holding references and data used by the GUI to interact with the SynthBase.
Definition synth_gui_interface.h:27