Vital
Loading...
Searching...
No Matches
modulation_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include "JuceHeader.h"
4
5#include "bar_renderer.h"
6#include "modulation_button.h"
7#include "open_gl_component.h"
9#include "synth_module.h"
10#include "synth_section.h"
11#include "synth_slider.h"
12
13#include <set>
14
17class ModulationMeter;
19
28 public:
39
44 class Listener {
45 public:
46 virtual ~Listener() {}
51 virtual void disconnectModulation(ModulationAmountKnob* modulation_knob) = 0;
52
58 virtual void setModulationBypass(ModulationAmountKnob* modulation_knob, bool bypass) = 0;
59
65 virtual void setModulationBipolar(ModulationAmountKnob* modulation_knob, bool bipolar) = 0;
66
72 virtual void setModulationStereo(ModulationAmountKnob* modulation_knob, bool stereo) = 0;
73 };
74
80 ModulationAmountKnob(String name, int index);
81
82 void mouseDown(const MouseEvent& e) override;
83 void mouseUp(const MouseEvent& e) override;
84 void mouseExit(const MouseEvent& e) override;
85
90 void handleModulationMenuCallback(int result);
91
96 void makeVisible(bool visible);
97
101 void hideImmediately();
102
107 void setCurrentModulator(bool current);
108
114 void setDestinationComponent(Component* component, const std::string& name);
115
120 Colour getInternalColor();
121
126 void setSource(const std::string& name);
127
128 Colour withBypassSaturation(Colour color) const {
129 if (bypass_)
130 return color.withSaturation(0.0f);
131 return color;
132 }
133
134 virtual Colour getUnselectedColor() const override {
136 }
137
138 virtual Colour getSelectedColor() const override {
140 }
141
142 virtual Colour getThumbColor() const override {
144 }
145
146 void setBypass(bool bypass) { bypass_ = bypass; setColors(); }
147 void setStereo(bool stereo) { stereo_ = stereo; }
148 void setBipolar(bool bipolar) { bipolar_ = bipolar; }
149 bool isBypass() { return bypass_; }
150 bool isStereo() { return stereo_; }
151 bool isBipolar() { return bipolar_; }
152 bool enteringValue() { return text_entry_ && text_entry_->isVisible(); }
153 bool isCurrentModulator() { return current_modulator_; }
154 int index() { return index_; }
155
160 void setAux(String name) {
161 aux_name_ = name;
162 setName(aux_name_);
164 }
165
170 bool hasAux() { return !aux_name_.isEmpty(); }
171
175 void removeAux() {
176 aux_name_ = "";
177 setName(name_);
179 }
180
185 String getOriginalName() { return name_; }
186
191 force_inline bool hovering() const {
192 return hovering_;
193 }
194
199 void addModulationAmountListener(Listener* listener) { listeners_.push_back(listener); }
200
201 private:
202 void toggleBypass();
203
204 std::vector<Listener*> listeners_;
205
206 Point<int> mouse_down_position_;
207 Component* color_component_;
208 String aux_name_;
209 String name_;
210 bool editing_;
211 int index_;
212 bool showing_;
213 bool hovering_;
214 bool current_modulator_;
215 bool bypass_;
216 bool stereo_;
217 bool bipolar_;
218 bool draw_background_;
219
220 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ModulationAmountKnob)
221};
222
232 public:
237 class Listener {
238 public:
239 virtual ~Listener() { }
240
244 virtual void expansionFocusLost() = 0;
245 };
246
247 ModulationExpansionBox() : OpenGlQuad(Shaders::kRoundedRectangleFragment) { }
248
249 void focusLost(FocusChangeType cause) override {
250 OpenGlQuad::focusLost(cause);
251
252 for (Listener* listener : listeners_)
253 listener->expansionFocusLost();
254 }
255
260 void setAmountControls(std::vector<ModulationAmountKnob*> amount_controls) { amount_controls_ = amount_controls; }
261
266 void addListener(Listener* listener) { listeners_.push_back(listener); }
267
268 private:
269 std::vector<ModulationAmountKnob*> amount_controls_;
270 std::vector<Listener*> listeners_;
271};
272
291 public:
292 static constexpr int kIndicesPerMeter = 6;
293 static constexpr float kDragImageWidthPercent = 0.018f;
294
302 ModulationManager(std::map<std::string, ModulationButton*> modulation_buttons,
303 std::map<std::string, SynthSlider*> sliders,
304 vital::output_map mono_modulations,
305 vital::output_map poly_modulations);
306
311
320 void createModulationMeter(const vital::Output* mono_total, const vital::Output* poly_total,
321 SynthSlider* slider, OpenGlMultiQuad* quads, int index);
322
329 void createModulationSlider(std::string name, SynthSlider* slider, bool poly);
330
336 void connectModulation(std::string source, std::string destination);
337
343 void removeModulation(std::string source, std::string destination);
344
350 void setModulationSliderValue(int index, float value);
351
357 void setModulationSliderBipolar(int index, bool bipolar);
358
364 void setModulationSliderValues(int index, float value);
365
370 void setModulationSliderScale(int index);
371
381 void setModulationValues(std::string source, std::string destination,
382 vital::mono_float amount, bool bipolar, bool stereo, bool bypass);
383 void reset() override;
384 void initAuxConnections();
385
386 void resized() override;
387 void parentHierarchyChanged() override;
389 void modulationAmountChanged(SynthSlider* slider) override;
390 void modulationRemoved(SynthSlider* slider) override;
391
392 void modulationDisconnected(vital::ModulationConnection* connection, bool last) override;
393 void modulationSelected(ModulationButton* source) override;
394 void modulationClicked(ModulationButton* source) override;
395 void modulationCleared() override;
396 bool hasFreeConnection();
397 void startModulationMap(ModulationButton* source, const MouseEvent& e) override;
398 void modulationDragged(const MouseEvent& e) override;
399 void modulationWheelMoved(const MouseEvent& e, const MouseWheelDetails& wheel) override;
403 void modulationDraggedToComponent(Component* component, bool bipolar);
404 void setTemporaryModulationBipolar(Component* component, bool bipolar);
405 void endModulationMap() override;
406 void modulationLostFocus(ModulationButton* source) override;
407
408 void expansionFocusLost() override {
409 hideModulationAmountCallout();
410 }
411
413
414 void disconnectModulation(ModulationAmountKnob* modulation_knob) override;
415 void setModulationSettings(ModulationAmountKnob* modulation_knob);
416 void setModulationBypass(ModulationAmountKnob* modulation_knob, bool bypass) override;
417 void setModulationBipolar(ModulationAmountKnob* modulation_knob, bool bipolar) override;
418 void setModulationStereo(ModulationAmountKnob* modulation_knob, bool stereo) override;
419
420 void initOpenGlComponents(OpenGlWrapper& open_gl) override;
422 void drawCurrentModulator(OpenGlWrapper& open_gl);
424 void renderOpenGlComponents(OpenGlWrapper& open_gl, bool animate) override;
425 void renderMeters(OpenGlWrapper& open_gl, bool animate);
426 void renderSourceMeters(OpenGlWrapper& open_gl, int index);
428 void destroyOpenGlComponents(OpenGlWrapper& open_gl) override;
429 void paintBackground(Graphics& g) override { positionModulationAmountSliders(); }
430
433
434 void hoverStarted(SynthSlider* slider) override;
435 void hoverEnded(SynthSlider* slider) override;
436 void menuFinished(SynthSlider* slider) override;
437 void modulationsChanged(const std::string& name) override;
438 int getIndexForModulationSlider(Slider* slider);
439 int getModulationIndex(std::string source, std::string destination);
442 vital::ModulationConnection* getConnection(const std::string& source, const std::string& dest);
443 void mouseDown(SynthSlider* slider) override;
444 void mouseUp(SynthSlider* slider) override;
445 void doubleClick(SynthSlider* slider) override;
446 void beginModulationEdit(SynthSlider* slider) override;
447 void endModulationEdit(SynthSlider* slider) override;
448 void sliderValueChanged(Slider* slider) override;
449 void buttonClicked(Button* button) override;
451 float getAuxMultiplier(int index);
452 void addAuxConnection(int from_index, int to_index);
453 void removeAuxDestinationConnection(int to_index);
454 void removeAuxSourceConnection(int from_index);
455
456 private:
457 void setDestinationQuadBounds(ModulationDestination* destination);
458 void makeCurrentModulatorAmountsVisible();
459 void makeModulationsVisible(SynthSlider* destination, bool visible);
460 void positionModulationAmountSlidersInside(const std::string& source,
461 std::vector<vital::ModulationConnection*> connections);
462 void positionModulationAmountSlidersCallout(const std::string& source,
463 std::vector<vital::ModulationConnection*> connections);
464 void showModulationAmountCallout(const std::string& source);
465 void hideModulationAmountCallout();
466 void positionModulationAmountSliders(const std::string& source);
467 void positionModulationAmountSliders();
468 bool enteringHoverValue();
469 void showModulationAmountOverlay(ModulationAmountKnob* slider);
470 void hideModulationAmountOverlay();
471
472 std::unique_ptr<Component> modulation_destinations_;
473
474 ModulationButton* current_source_;
475 ExpandModulationButton* current_expanded_modulation_;
476 ModulationDestination* temporarily_set_destination_;
477 SynthSlider* temporarily_set_synth_slider_;
478 ModulationAmountKnob* temporarily_set_hover_slider_;
479 bool temporarily_set_bipolar_;
480 OpenGlQuad drag_quad_;
481 ModulationExpansionBox modulation_expansion_box_;
482 OpenGlQuad current_modulator_quad_;
483 OpenGlQuad editing_rotary_amount_quad_;
484 OpenGlQuad editing_linear_amount_quad_;
485 std::map<Viewport*, std::unique_ptr<OpenGlMultiQuad>> rotary_destinations_;
486 std::map<Viewport*, std::unique_ptr<OpenGlMultiQuad>> linear_destinations_;
487 std::map<Viewport*, std::unique_ptr<OpenGlMultiQuad>> rotary_meters_;
488 std::map<Viewport*, std::unique_ptr<OpenGlMultiQuad>> linear_meters_;
489 Point<int> mouse_drag_start_;
490 Point<int> mouse_drag_position_;
491 bool modifying_;
492 bool dragging_;
493 bool changing_hover_modulation_;
494
495 ModulationButton* current_modulator_;
496 std::map<std::string, ModulationButton*> modulation_buttons_;
497 std::map<std::string, std::unique_ptr<ExpandModulationButton>> modulation_callout_buttons_;
498 std::map<std::string, const vital::StatusOutput*> modulation_source_readouts_;
499 std::map<std::string, vital::poly_float> smooth_mod_values_;
500 std::map<std::string, bool> active_mod_values_;
501 const vital::StatusOutput* num_voices_readout_;
502 long long last_milliseconds_;
503 std::unique_ptr<BarRenderer> modulation_source_meters_;
504
505 std::map<std::string, ModulationDestination*> destination_lookup_;
506 std::map<std::string, SynthSlider*> slider_model_lookup_;
507 std::map<std::string, ModulationAmountKnob*> modulation_amount_lookup_;
508
509 std::vector<std::unique_ptr<ModulationDestination>> all_destinations_;
510 std::map<std::string, std::unique_ptr<ModulationMeter>> meter_lookup_;
511 std::map<int, int> aux_connections_from_to_;
512 std::map<int, int> aux_connections_to_from_;
513 std::unique_ptr<ModulationAmountKnob> modulation_amount_sliders_[vital::kMaxModulationConnections];
514 std::unique_ptr<ModulationAmountKnob> modulation_hover_sliders_[vital::kMaxModulationConnections];
515 std::unique_ptr<ModulationAmountKnob> selected_modulation_sliders_[vital::kMaxModulationConnections];
516
517 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ModulationManager)
518};
519
Definition modulation_manager.cpp:26
Interface for objects interested in ModulationAmountKnob events.
Definition modulation_manager.h:44
virtual void setModulationBipolar(ModulationAmountKnob *modulation_knob, bool bipolar)=0
Called when modulation bipolar state changes.
virtual void setModulationBypass(ModulationAmountKnob *modulation_knob, bool bypass)=0
Called when modulation bypass state changes.
virtual ~Listener()
Definition modulation_manager.h:46
virtual void disconnectModulation(ModulationAmountKnob *modulation_knob)=0
Called when the modulation is disconnected.
virtual void setModulationStereo(ModulationAmountKnob *modulation_knob, bool stereo)=0
Called when modulation stereo state changes.
A specialized SynthSlider that represents a single modulation amount control.
Definition modulation_manager.h:27
void setStereo(bool stereo)
Definition modulation_manager.h:147
virtual Colour getUnselectedColor() const override
Definition modulation_manager.h:134
virtual Colour getThumbColor() const override
Definition modulation_manager.h:142
void setAux(String name)
Sets an auxiliary modulation name for this knob (for chained modulations).
Definition modulation_manager.h:160
bool isBypass()
Definition modulation_manager.h:149
bool enteringValue()
Definition modulation_manager.h:152
bool isCurrentModulator()
Definition modulation_manager.h:153
String getOriginalName()
Gets the knob's original name before auxiliary assignment.
Definition modulation_manager.h:185
void handleModulationMenuCallback(int result)
Handles a selection from the modulation context menu.
Definition modulation_manager.cpp:272
virtual Colour getSelectedColor() const override
Definition modulation_manager.h:138
void makeVisible(bool visible)
Toggles the knob's visibility smoothly or immediately.
Definition modulation_manager.cpp:298
bool isStereo()
Definition modulation_manager.h:150
void setBipolar(bool bipolar)
Definition modulation_manager.h:148
int index()
Definition modulation_manager.h:154
void setDestinationComponent(Component *component, const std::string &name)
Associates the knob with a destination component (slider or UI element).
Definition modulation_manager.cpp:322
void setSource(const std::string &name)
Sets the source parameter name for this modulation.
Definition modulation_manager.cpp:336
bool hasAux()
Checks if this knob currently has an auxiliary modulation.
Definition modulation_manager.h:170
void addModulationAmountListener(Listener *listener)
Adds a listener interested in this knob's modulation events.
Definition modulation_manager.h:199
ModulationAmountKnob(String name, int index)
Constructs a ModulationAmountKnob.
Definition modulation_manager.cpp:172
void setCurrentModulator(bool current)
Marks this knob as representing the currently selected modulator.
Definition modulation_manager.cpp:314
void hideImmediately()
Hides the knob immediately without animations.
Definition modulation_manager.cpp:307
void mouseExit(const MouseEvent &e) override
Definition modulation_manager.cpp:256
void mouseDown(const MouseEvent &e) override
Mouse event overrides for custom behavior.
Definition modulation_manager.cpp:191
Colour getInternalColor()
Returns the internal color for drawing this knob.
Definition modulation_manager.cpp:330
MenuOptions
Options in the context menu of the modulation amount knob.
Definition modulation_manager.h:33
@ kDisconnect
Removes the modulation connection.
Definition modulation_manager.h:34
@ kToggleBypass
Toggles bypassing the modulation.
Definition modulation_manager.h:35
@ kToggleBipolar
Toggles bipolar (positive and negative) modulation.
Definition modulation_manager.h:36
@ kToggleStereo
Toggles stereo modulation mode.
Definition modulation_manager.h:37
void setBypass(bool bypass)
Definition modulation_manager.h:146
void mouseUp(const MouseEvent &e) override
Definition modulation_manager.cpp:241
bool isBipolar()
Definition modulation_manager.h:151
void removeAux()
Removes the auxiliary modulation connection.
Definition modulation_manager.h:175
force_inline bool hovering() const
Checks if the mouse is currently hovering over this knob.
Definition modulation_manager.h:191
Colour withBypassSaturation(Colour color) const
Definition modulation_manager.h:128
Interface for receiving notifications about modulation events from the ModulationButton.
Definition modulation_button.h:60
A component representing a modulation source or connection button.
Definition modulation_button.h:21
Definition modulation_manager.cpp:97
Interface for objects interested in focus changes of the ModulationExpansionBox.
Definition modulation_manager.h:237
virtual ~Listener()
Definition modulation_manager.h:239
virtual void expansionFocusLost()=0
Called when the expansion box loses focus.
A popup box that displays multiple ModulationAmountKnob controls in a grid.
Definition modulation_manager.h:231
void focusLost(FocusChangeType cause) override
Definition modulation_manager.h:249
void setAmountControls(std::vector< ModulationAmountKnob * > amount_controls)
Sets the amount controls displayed inside this expansion box.
Definition modulation_manager.h:260
ModulationExpansionBox()
Definition modulation_manager.h:247
void addListener(Listener *listener)
Adds a Listener for expansion box focus events.
Definition modulation_manager.h:266
A top-level section for managing all modulation connections, amounts, and related UI components.
Definition modulation_manager.h:290
void modulationDragged(const MouseEvent &e) override
Called while modulation is being dragged out (during mouse drag).
Definition modulation_manager.cpp:866
void disconnectModulation(ModulationAmountKnob *modulation_knob) override
Called when the modulation is disconnected.
Definition modulation_manager.cpp:948
void renderMeters(OpenGlWrapper &open_gl, bool animate)
Definition modulation_manager.cpp:1084
void renderOpenGlComponents(OpenGlWrapper &open_gl, bool animate) override
Renders all OpenGL components in this section and sub-sections.
Definition modulation_manager.cpp:1052
void setModulationBipolar(ModulationAmountKnob *modulation_knob, bool bipolar) override
Called when modulation bipolar state changes.
Definition modulation_manager.cpp:983
void drawDraggingModulation(OpenGlWrapper &open_gl)
Definition modulation_manager.cpp:1031
void setModulationSliderValue(int index, float value)
Sets the modulation value for a given modulation index.
Definition modulation_manager.cpp:1439
static constexpr int kIndicesPerMeter
Definition modulation_manager.h:292
void removeModulation(std::string source, std::string destination)
Removes a modulation connection between a source and a destination.
Definition modulation_manager.cpp:1408
void drawModulationDestinations(OpenGlWrapper &open_gl)
Definition modulation_manager.cpp:1010
void modulationWheelMoved(const MouseEvent &e, const MouseWheelDetails &wheel) override
Called when the mouse wheel moves while interacting with the modulation button.
Definition modulation_manager.cpp:900
static constexpr float kDragImageWidthPercent
Definition modulation_manager.h:293
int getModulationIndex(std::string source, std::string destination)
Definition modulation_manager.cpp:1266
void modulationAmountChanged(SynthSlider *slider) override
Definition modulation_manager.cpp:604
void resized() override
Called when the component is resized. Arranges layout of child components.
Definition modulation_manager.cpp:516
void modulationsChanged(const std::string &name) override
Definition modulation_manager.cpp:1246
void initOpenGlComponents(OpenGlWrapper &open_gl) override
Initializes all OpenGL components in this section and sub-sections.
Definition modulation_manager.cpp:991
ModulationManager(std::map< std::string, ModulationButton * > modulation_buttons, std::map< std::string, SynthSlider * > sliders, vital::output_map mono_modulations, vital::output_map poly_modulations)
Constructs a ModulationManager.
Definition modulation_manager.cpp:341
void mouseDown(SynthSlider *slider) override
Definition modulation_manager.cpp:1318
void createModulationMeter(const vital::Output *mono_total, const vital::Output *poly_total, SynthSlider *slider, OpenGlMultiQuad *quads, int index)
Creates a modulation meter for a given slider and places it into an OpenGlMultiQuad for visualization...
Definition modulation_manager.cpp:491
void setModulationSliderValues(int index, float value)
Sets the modulation values and updates all connected auxiliary nodes.
Definition modulation_manager.cpp:1454
void mouseUp(SynthSlider *slider) override
Definition modulation_manager.cpp:1337
int getIndexForModulationSlider(Slider *slider)
Definition modulation_manager.cpp:1278
void startModulationMap(ModulationButton *source, const MouseEvent &e) override
Called when the user begins dragging out to map the modulation (dragging out of the button).
Definition modulation_manager.cpp:663
void clearTemporaryHoverModulation()
Definition modulation_manager.cpp:856
float getAuxMultiplier(int index)
Definition modulation_manager.cpp:1585
void modulationSelected(ModulationButton *source) override
Called when this modulation button is selected.
Definition modulation_manager.cpp:631
void setModulationSettings(ModulationAmountKnob *modulation_knob)
Definition modulation_manager.cpp:958
void setModulationSliderBipolar(int index, bool bipolar)
Sets the bipolar state for a given modulation index.
Definition modulation_manager.cpp:1448
void clearModulationSource()
Definition modulation_manager.cpp:939
void destroyOpenGlComponents(OpenGlWrapper &open_gl) override
Destroys all OpenGL components in this section and sub-sections.
Definition modulation_manager.cpp:1166
void reset() override
Resets the section and all sub-sections.
Definition modulation_manager.cpp:1546
void hoverEnded(SynthSlider *slider) override
Definition modulation_manager.cpp:1237
void doubleClick(SynthSlider *slider) override
Definition modulation_manager.cpp:1342
void modulationCleared() override
Called when all modulations associated with this button have been cleared.
Definition modulation_manager.cpp:648
void renderSourceMeters(OpenGlWrapper &open_gl, int index)
Definition modulation_manager.cpp:1107
void endModulationMap() override
Called when the user finishes dragging out modulation connections.
Definition modulation_manager.cpp:914
void modulationDraggedToHoverSlider(ModulationAmountKnob *hover_slider)
Definition modulation_manager.cpp:759
void modulationLostFocus(ModulationButton *source) override
Called when the modulation button loses keyboard focus.
Definition modulation_manager.cpp:934
void drawCurrentModulator(OpenGlWrapper &open_gl)
Definition modulation_manager.cpp:1018
void connectModulation(std::string source, std::string destination)
Connects a modulation source to a destination parameter.
Definition modulation_manager.cpp:1398
void hoverStarted(SynthSlider *slider) override
Definition modulation_manager.cpp:1223
void createModulationSlider(std::string name, SynthSlider *slider, bool poly)
Creates internal structures for handling modulation of a given parameter (slider).
Definition modulation_manager.cpp:503
void updateSmoothModValues()
Definition modulation_manager.cpp:1146
void setModulationBypass(ModulationAmountKnob *modulation_knob, bool bypass) override
Called when modulation bypass state changes.
Definition modulation_manager.cpp:979
void hideUnusedHoverModulations()
Definition modulation_manager.cpp:1566
void setVisibleMeterBounds()
Definition modulation_manager.cpp:1968
~ModulationManager()
Destructor.
Definition modulation_manager.cpp:514
void setModulationSliderScale(int index)
Adjusts the displayed range of a modulation slider based on parameter scaling.
Definition modulation_manager.cpp:1475
void setModulationAmounts()
Definition modulation_manager.cpp:1944
void expansionFocusLost() override
Called when the expansion box loses focus.
Definition modulation_manager.h:408
void modulationClicked(ModulationButton *source) override
Called when the modulation button is clicked (mouse up) without dragging out.
Definition modulation_manager.cpp:643
void initAuxConnections()
Definition modulation_manager.cpp:1520
void addAuxConnection(int from_index, int to_index)
Definition modulation_manager.cpp:1595
void buttonClicked(Button *button) override
Called when a button is clicked. Updates the synth parameter accordingly.
Definition modulation_manager.cpp:1384
void setTemporaryModulationBipolar(Component *component, bool bipolar)
Definition modulation_manager.cpp:822
void clearTemporaryModulation()
Definition modulation_manager.cpp:843
void paintBackground(Graphics &g) override
Paints the background of the section. Calls paintContainer, heading, knobs, children.
Definition modulation_manager.h:429
void modulationDisconnected(vital::ModulationConnection *connection, bool last) override
Called when a modulation connection is disconnected.
Definition modulation_manager.cpp:621
void menuFinished(SynthSlider *slider) override
Definition modulation_manager.cpp:1241
void removeAuxDestinationConnection(int to_index)
Definition modulation_manager.cpp:1617
void modulationRemoved(SynthSlider *slider) override
Definition modulation_manager.cpp:613
void modulationDraggedToComponent(Component *component, bool bipolar)
Definition modulation_manager.cpp:781
void parentHierarchyChanged() override
Definition modulation_manager.cpp:570
vital::ModulationConnection * getConnection(int index)
Definition modulation_manager.cpp:1296
void updateModulationMeterLocations()
Definition modulation_manager.cpp:588
bool hasFreeConnection()
Definition modulation_manager.cpp:652
void removeAuxSourceConnection(int from_index)
Definition modulation_manager.cpp:1606
void endModulationEdit(SynthSlider *slider) override
Definition modulation_manager.cpp:1357
void sliderValueChanged(Slider *slider) override
Called when a slider value changes. Updates the synth parameter accordingly.
Definition modulation_manager.cpp:1361
void setModulationValues(std::string source, std::string destination, vital::mono_float amount, bool bipolar, bool stereo, bool bypass)
Sets multiple modulation properties at once.
Definition modulation_manager.cpp:1504
vital::ModulationConnection * getConnectionForModulationSlider(Slider *slider)
Definition modulation_manager.cpp:1285
void setModulationStereo(ModulationAmountKnob *modulation_knob, bool stereo) override
Called when modulation stereo state changes.
Definition modulation_manager.cpp:987
void beginModulationEdit(SynthSlider *slider) override
Definition modulation_manager.cpp:1353
The main modulation matrix component displaying multiple modulation rows and related controls.
Definition modulation_matrix.h:361
A visual component that displays the current modulation amount applied to a slider parameter.
Definition modulation_meter.h:21
A component for rendering multiple quads using OpenGL, with customizable colors, rounding,...
Definition open_gl_multi_quad.h:16
A convenience class for a single quad rendered via OpenGL.
Definition open_gl_multi_quad.h:447
virtual Colour getUnselectedColor() const
Definition synth_slider.h:209
void setModulationAmount(float modulation)
Definition synth_slider.h:156
virtual Colour getThumbColor() const
Definition synth_slider.h:242
void setColors()
Updates internal colors based on the current skin and state.
Definition synth_slider.cpp:144
virtual Colour getSelectedColor() const
Definition synth_slider.h:223
Manages and provides access to vertex and fragment shaders used by the OpenGL rendering pipeline.
Definition shaders.h:19
Base class for all synthesizer sections, providing UI layout, painting, and interaction logic.
Definition synth_section.h:193
virtual void animate(bool animate)
Triggers animation state change in sub-sections if needed.
Definition synth_section.cpp:822
Listener interface for receiving slider events such as mouse interactions, modulation changes,...
Definition synth_slider.h:347
A specialized slider with extended functionality for modulation, parameter control,...
Definition synth_slider.h:314
std::unique_ptr< OpenGlTextEditor > text_entry_
Definition synth_slider.h:767
A helper class to track the "status" of a particular Output as a poly_float value.
Definition synth_module.h:35
#define force_inline
Definition common.h:23
std::map< std::string, Output * > output_map
Maps parameter names to Output pointers, representing output signals from various modules.
Definition synth_types.h:229
constexpr int kMaxModulationConnections
Maximum number of modulation connections allowed.
Definition synth_constants.h:49
float mono_float
Definition common.h:33
A helper struct containing references to OpenGL context, shaders, and display scale.
Definition shaders.h:174
A structure representing a single modulation connection between a modulation source and a destination...
Definition synth_types.h:30
Holds and manages a buffer of samples (poly_float) for a Processor's output.
Definition processor.h:35
Defines the SynthModule class which extends ProcessorRouter to form a building block of the Vital syn...
Declares the SynthSlider and related classes, providing various slider styles and functionality in th...