Vital
Loading...
Searching...
No Matches
ModulationMatrixRow Class Reference

Represents a single row in the modulation matrix, showing source, destination, and associated parameters. More...

#include <modulation_matrix.h>

Inheritance diagram for ModulationMatrixRow:
SynthSection SynthButton::ButtonListener

Classes

class  Listener
 Interface for objects that need to respond to row selection changes. More...
 

Public Member Functions

 ModulationMatrixRow (int index, PopupItems *source_items, PopupItems *destination_items, const std::vector< String > *sources, const std::vector< String > *destinations)
 Constructs a ModulationMatrixRow.
 
void resized () override
 Handles component resizing.
 
void repaintBackground () override
 Overrides to repaint the background. (Empty override)
 
void setGuiParent (SynthGuiInterface *parent)
 Sets the parent SynthGuiInterface.
 
void setConnection (vital::ModulationConnection *connection)
 Assigns a modulation connection to this row.
 
void paintBackground (Graphics &g) override
 Paints the background of this row.
 
void sliderValueChanged (Slider *changed_slider) override
 Callback when a slider's value changes.
 
void buttonClicked (Button *button) override
 Callback when a button is clicked.
 
void updateDisplay ()
 Updates the display of the row based on the current connection state.
 
void updateDisplayValue ()
 Updates only the display values (like amount) without changing source/destination selection.
 
bool connected () const
 Checks if this row represents a connected modulation.
 
bool matchesSourceAndDestination (const std::string &source, const std::string &destination) const
 Checks if this row matches the given source and destination names.
 
Rectangle< int > getMeterBounds ()
 Gets the bounds where a modulation meter may be drawn.
 
void select ()
 Selects this row and notifies listeners.
 
void mouseDown (const MouseEvent &e) override
 Called when the mouse is pressed down. Selects this row.
 
void select (bool select)
 Changes the visual "selected" state of this row.
 
bool selected () const
 Checks if this row is currently selected.
 
void addListener (Listener *listener)
 Adds a listener to this row.
 
force_inline int index () const
 Gets the row index.
 
force_inline int source () const
 Gets the selected source index.
 
force_inline int destination () const
 Gets the selected destination index.
 
force_inline int stereo () const
 Gets whether this row is set to stereo modulation.
 
force_inline int bipolar () const
 Gets whether this row is set to bipolar modulation.
 
force_inline float morph () const
 Gets the morph value of this modulation.
 
force_inline float amount () const
 Gets the modulation amount value.
 
- Public Member Functions inherited from SynthSection
 SynthSection (const String &name)
 Constructs a SynthSection with a given name.
 
virtual ~SynthSection ()=default
 
void setParent (const SynthSection *parent)
 Sets the parent SynthSection.
 
float findValue (Skin::ValueId value_id) const
 Finds a value in the skin overrides or from the parent if not found locally.
 
virtual void reset ()
 Resets the section and all sub-sections.
 
virtual void paint (Graphics &g) override
 Called when the component should paint itself.
 
virtual void paintSidewaysHeadingText (Graphics &g)
 Paints the section name heading text vertically if sideways_heading_ is true.
 
virtual void paintHeadingText (Graphics &g)
 Paints the heading text for this section, either sideways or horizontally.
 
virtual void setSkinValues (const Skin &skin, bool top_level)
 Sets skin values (colors, sizes) and applies them to sub-sections.
 
void setSkinOverride (Skin::SectionOverride skin_override)
 
void showPopupBrowser (SynthSection *owner, Rectangle< int > bounds, std::vector< File > directories, String extensions, std::string passthrough_name, std::string additional_folders_name)
 Shows a file browser popup (e.g., for loading samples or wavetables).
 
void updatePopupBrowser (SynthSection *owner)
 Updates the currently visible popup browser if any.
 
void showPopupSelector (Component *source, Point< int > position, const PopupItems &options, std::function< void(int)> callback, std::function< void()> cancel={ })
 Shows a popup selector with options.
 
void showDualPopupSelector (Component *source, Point< int > position, int width, const PopupItems &options, std::function< void(int)> callback)
 Shows a dual popup selector for hierarchical selection.
 
void showPopupDisplay (Component *source, const std::string &text, BubbleComponent::BubblePlacement placement, bool primary)
 Shows a brief popup display (like a tooltip).
 
void hidePopupDisplay (bool primary)
 Hides the currently shown popup display.
 
virtual void loadFile (const File &file)
 Loads a file (e.g., a sample or wavetable). Overridden by subclasses.
 
virtual File getCurrentFile ()
 Gets the currently loaded file. Overridden by subclasses.
 
virtual std::string getFileName ()
 Gets the name of the currently loaded file. Overridden by subclasses.
 
virtual std::string getFileAuthor ()
 Gets the author metadata of the currently loaded file. Overridden by subclasses.
 
virtual void paintContainer (Graphics &g)
 Paints the container background, body, heading, etc.
 
virtual void paintBody (Graphics &g, Rectangle< int > bounds)
 Paints the body background within given bounds.
 
virtual void paintBorder (Graphics &g, Rectangle< int > bounds)
 Paints the border around given bounds.
 
virtual void paintBody (Graphics &g)
 Paints the section body background using the entire component area.
 
virtual void paintBorder (Graphics &g)
 Paints the border around the entire component.
 
int getComponentShadowWidth ()
 Gets the width of shadow around components.
 
virtual void paintTabShadow (Graphics &g)
 Paints a tab-like shadow effect around the component.
 
void paintTabShadow (Graphics &g, Rectangle< int > bounds)
 Paints a tab shadow effect within specified bounds.
 
virtual void paintBackgroundShadow (Graphics &g)
 Stub for painting background shadows. Overridden by subclasses if needed.
 
virtual void setSizeRatio (float ratio)
 Sets the size ratio for scaling UI elements.
 
void paintKnobShadows (Graphics &g)
 Paints knob shadows for all sliders.
 
Font getLabelFont ()
 Gets a suitable font for label text.
 
void setLabelFont (Graphics &g)
 Sets the Graphics context font and color for labels.
 
void drawLabelConnectionForComponents (Graphics &g, Component *left, Component *right)
 Draws a rectangular connection between labels of two components.
 
void drawLabelBackground (Graphics &g, Rectangle< int > bounds, bool text_component=false)
 Draws a background for a label area.
 
void drawLabelBackgroundForComponent (Graphics &g, Component *component)
 Draws label background for a specific component.
 
Rectangle< int > getDividedAreaBuffered (Rectangle< int > full_area, int num_sections, int section, int buffer)
 Divides an area into equal sections with buffering, returns the specified section.
 
Rectangle< int > getDividedAreaUnbuffered (Rectangle< int > full_area, int num_sections, int section, int buffer)
 Divides an area into equal sections without extra buffering, returns the specified section.
 
Rectangle< int > getLabelBackgroundBounds (Rectangle< int > bounds, bool text_component=false)
 Gets the background bounds for a label.
 
Rectangle< int > getLabelBackgroundBounds (Component *component, bool text_component=false)
 Gets the label background bounds for a component.
 
void drawLabel (Graphics &g, String text, Rectangle< int > component_bounds, bool text_component=false)
 Draws a label text below a component.
 
void drawLabelForComponent (Graphics &g, String text, Component *component, bool text_component=false)
 Draws a label for a given component.
 
void drawTextBelowComponent (Graphics &g, String text, Component *component, int space, int padding=0)
 Draws text below a component with optional padding.
 
virtual void paintChildrenShadows (Graphics &g)
 Paints shadows for child sections.
 
void paintChildrenBackgrounds (Graphics &g)
 Paints the backgrounds for all child sections.
 
void paintOpenGlChildrenBackgrounds (Graphics &g)
 Paints the backgrounds for all OpenGL child components.
 
void paintChildBackground (Graphics &g, SynthSection *child)
 Paints a child's background specifically.
 
void paintChildShadow (Graphics &g, SynthSection *child)
 Paints a child's shadow specifically.
 
void paintOpenGlBackground (Graphics &g, OpenGlComponent *child)
 Paints the background of an OpenGlComponent child.
 
void drawTextComponentBackground (Graphics &g, Rectangle< int > bounds, bool extend_to_label)
 Draws a background for a text component area.
 
void drawTempoDivider (Graphics &g, Component *sync)
 Draws a divider line for tempo-related controls.
 
virtual void initOpenGlComponents (OpenGlWrapper &open_gl)
 Initializes all OpenGL components in this section and sub-sections.
 
virtual void renderOpenGlComponents (OpenGlWrapper &open_gl, bool animate)
 Renders all OpenGL components in this section and sub-sections.
 
virtual void destroyOpenGlComponents (OpenGlWrapper &open_gl)
 Destroys all OpenGL components in this section and sub-sections.
 
virtual void guiChanged (SynthButton *button) override
 Called when a SynthButton state changes (GUI interaction).
 
std::map< std::string, SynthSlider * > getAllSliders ()
 Gets all sliders registered in this section.
 
std::map< std::string, ToggleButton * > getAllButtons ()
 Gets all toggle buttons registered in this section.
 
std::map< std::string, ModulationButton * > getAllModulationButtons ()
 Gets all modulation buttons registered in this section.
 
virtual void setActive (bool active)
 Sets the active state of this section and sub-sections.
 
bool isActive () const
 Checks if the section is currently active.
 
virtual void animate (bool animate)
 Triggers animation state change in sub-sections if needed.
 
virtual void setAllValues (vital::control_map &controls)
 Sets values for all known parameters from a control map.
 
virtual void setValue (const std::string &name, vital::mono_float value, NotificationType notification)
 Sets a single parameter value for a known control.
 
void addModulationButton (ModulationButton *button, bool show=true)
 Adds a modulation button to this section.
 
void addSubSection (SynthSection *section, bool show=true)
 Adds a subsection (another SynthSection) as a child.
 
void removeSubSection (SynthSection *section)
 Removes a previously added subsection.
 
virtual void setScrollWheelEnabled (bool enabled)
 Enables or disables scroll wheel support for this section and sub-sections.
 
ToggleButton * activator () const
 Gets the activator toggle button if any.
 
void setSkinValues (std::map< Skin::ValueId, float > values)
 Sets custom skin values for this section.
 
void setSkinValue (Skin::ValueId id, float value)
 Sets a single skin value override.
 
float getTitleWidth ()
 
float getPadding ()
 
float getPowerButtonOffset () const
 
float getKnobSectionHeight ()
 
float getSliderWidth ()
 
float getSliderOverlap ()
 
float getSliderOverlapWithSpace ()
 
float getTextComponentHeight ()
 
float getStandardKnobSize ()
 
float getTotalKnobHeight ()
 
float getTextSectionYOffset ()
 
float getModButtonWidth ()
 
float getModFontSize ()
 
float getWidgetMargin ()
 
float getWidgetRounding ()
 
float getSizeRatio () const
 
int getPopupWidth () const
 
int getDualPopupWidth () const
 
- Public Member Functions inherited from SynthButton::ButtonListener
virtual ~ButtonListener ()
 Virtual destructor.
 

Protected Attributes

std::vector< Listener * > listeners_
 Registered row listeners.
 
int index_
 The index of this row.
 
vital::ModulationConnectionconnection_
 The modulation connection for this row.
 
SynthGuiInterfaceparent_
 The parent GUI interface.
 
std::unique_ptr< ModulationSelectorsource_
 The source selector.
 
std::unique_ptr< ModulationSelectordestination_
 The destination selector.
 
double last_source_value_
 The last known source value.
 
double last_destination_value_
 The last known destination value.
 
double last_amount_value_
 The last known amount value.
 
std::unique_ptr< SynthSlideramount_slider_
 The slider for modulation amount.
 
std::unique_ptr< SynthSliderpower_slider_
 The slider for the morph/power parameter.
 
std::unique_ptr< OpenGlShapeButtonbipolar_
 The bipolar toggle button.
 
std::unique_ptr< SynthButtonstereo_
 The stereo toggle button.
 
std::unique_ptr< SynthButtonbypass_
 The bypass button for this modulation row.
 
OverlayBackgroundRenderer highlight_
 Renders a highlight overlay when selected.
 
bool updating_
 Indicates if the row is currently updating to avoid recursive changes.
 
bool selected_
 Whether this row is currently selected.
 
- Protected Attributes inherited from SynthSection
std::map< Skin::ValueId, float > value_lookup_
 
std::vector< SynthSection * > sub_sections_
 
std::vector< OpenGlComponent * > open_gl_components_
 
std::map< std::string, SynthSlider * > slider_lookup_
 
std::map< std::string, Button * > button_lookup_
 
std::map< std::string, ModulationButton * > modulation_buttons_
 
std::map< std::string, SynthSlider * > all_sliders_
 
std::map< std::string, ToggleButton * > all_buttons_
 
std::map< std::string, ModulationButton * > all_modulation_buttons_
 
const SynthSectionparent_
 
SynthButtonactivator_
 
PresetSelectorpreset_selector_
 
bool preset_selector_half_width_
 
std::unique_ptr< OffOverlayoff_overlay_
 
Skin::SectionOverride skin_override_
 
float size_ratio_
 
bool active_
 
bool sideways_heading_
 

Additional Inherited Members

- Static Public Attributes inherited from SynthSection
static constexpr int kDefaultPowerButtonOffset = 0
 
static constexpr float kPowerButtonPaddingPercent = 0.29f
 
static constexpr float kTransposeHeightPercent = 0.5f
 
static constexpr float kTuneHeightPercent = 0.4f
 
static constexpr float kJointModulationRadiusPercent = 0.1f
 
static constexpr float kJointModulationExtensionPercent = 0.6666f
 
static constexpr float kPitchLabelPercent = 0.33f
 
static constexpr float kJointLabelHeightPercent = 0.4f
 
static constexpr double kTransposeMouseSensitivity = 0.2
 
static constexpr float kJointLabelBorderRatioX = 0.05f
 
static constexpr int kDefaultBodyRounding = 4
 
static constexpr int kDefaultLabelHeight = 10
 
static constexpr int kDefaultLabelBackgroundHeight = 16
 
static constexpr int kDefaultLabelBackgroundWidth = 56
 
static constexpr int kDefaultLabelBackgroundRounding = 4
 
static constexpr int kDefaultPadding = 2
 
static constexpr int kDefaultPopupMenuWidth = 150
 
static constexpr int kDefaultDualPopupMenuWidth = 340
 
static constexpr int kDefaultStandardKnobSize = 32
 
static constexpr int kDefaultKnobThickness = 2
 
static constexpr float kDefaultKnobModulationAmountThickness = 2.0f
 
static constexpr int kDefaultKnobModulationMeterSize = 43
 
static constexpr int kDefaultKnobModulationMeterThickness = 4
 
static constexpr int kDefaultModulationButtonWidth = 64
 
static constexpr int kDefaultModFontSize = 10
 
static constexpr int kDefaultKnobSectionHeight = 64
 
static constexpr int kDefaultSliderWidth = 24
 
static constexpr int kDefaultTextWidth = 80
 
static constexpr int kDefaultTextHeight = 24
 
static constexpr int kDefaultWidgetMargin = 6
 
static constexpr float kDefaultWidgetFillFade = 0.3f
 
static constexpr float kDefaultWidgetLineWidth = 4.0f
 
static constexpr float kDefaultWidgetFillCenter = 0.0f
 
- Protected Member Functions inherited from SynthSection
void setSliderHasHzAlternateDisplay (SynthSlider *slider)
 
void setSidewaysHeading (bool sideways)
 
void addToggleButton (ToggleButton *button, bool show)
 
void addButton (OpenGlToggleButton *button, bool show=true)
 
void addButton (OpenGlShapeButton *button, bool show=true)
 
void addSlider (SynthSlider *slider, bool show=true, bool listen=true)
 
void addOpenGlComponent (OpenGlComponent *open_gl_component, bool to_beginning=false)
 
void setActivator (SynthButton *activator)
 
void createOffOverlay ()
 
void setPresetSelector (PresetSelector *preset_selector, bool half=false)
 
void paintJointControlSliderBackground (Graphics &g, int x, int y, int width, int height)
 
void paintJointControlBackground (Graphics &g, int x, int y, int width, int height)
 
void paintJointControl (Graphics &g, int x, int y, int width, int height, const std::string &name)
 
void placeJointControls (int x, int y, int width, int height, SynthSlider *left, SynthSlider *right, Component *widget=nullptr)
 
void placeTempoControls (int x, int y, int width, int height, SynthSlider *tempo, SynthSlider *sync)
 
void placeRotaryOption (Component *option, SynthSlider *rotary)
 
void placeKnobsInArea (Rectangle< int > area, std::vector< Component * > knobs)
 
void lockCriticalSection ()
 
void unlockCriticalSection ()
 
Rectangle< int > getPresetBrowserBounds ()
 
int getTitleTextRight ()
 
Rectangle< int > getPowerButtonBounds ()
 
Rectangle< int > getTitleBounds ()
 
float getDisplayScale () const
 
virtual int getPixelMultiple () const
 

Detailed Description

Represents a single row in the modulation matrix, showing source, destination, and associated parameters.

Constructor & Destructor Documentation

◆ ModulationMatrixRow()

ModulationMatrixRow::ModulationMatrixRow ( int index,
PopupItems * source_items,
PopupItems * destination_items,
const std::vector< String > * sources,
const std::vector< String > * destinations )

Constructs a ModulationMatrixRow.

Parameters
indexThe row index.
source_itemsPopup items for the source selector.
destination_itemsPopup items for the destination selector.
sourcesA vector of all possible sources.
destinationsA vector of all possible destinations.

Member Function Documentation

◆ addListener()

void ModulationMatrixRow::addListener ( Listener * listener)
inline

Adds a listener to this row.

Parameters
listenerThe listener to add.

◆ amount()

force_inline float ModulationMatrixRow::amount ( ) const
inline

Gets the modulation amount value.

Returns
The amount value.

◆ bipolar()

force_inline int ModulationMatrixRow::bipolar ( ) const
inline

Gets whether this row is set to bipolar modulation.

Returns
Non-zero if bipolar is enabled.

◆ buttonClicked()

void ModulationMatrixRow::buttonClicked ( Button * button)
overridevirtual

Callback when a button is clicked.

Parameters
buttonThe button that was clicked.

Reimplemented from SynthSection.

◆ connected()

bool ModulationMatrixRow::connected ( ) const

Checks if this row represents a connected modulation.

Returns
True if connected, false otherwise.

◆ destination()

force_inline int ModulationMatrixRow::destination ( ) const
inline

Gets the selected destination index.

Returns
The destination index.

◆ getMeterBounds()

Rectangle< int > ModulationMatrixRow::getMeterBounds ( )

Gets the bounds where a modulation meter may be drawn.

Returns
The meter bounds as a Rectangle.

◆ index()

force_inline int ModulationMatrixRow::index ( ) const
inline

Gets the row index.

Returns
The row index.

◆ matchesSourceAndDestination()

bool ModulationMatrixRow::matchesSourceAndDestination ( const std::string & source,
const std::string & destination ) const

Checks if this row matches the given source and destination names.

Parameters
sourceThe source name to match.
destinationThe destination name to match.
Returns
True if both match, false otherwise.

◆ morph()

force_inline float ModulationMatrixRow::morph ( ) const
inline

Gets the morph value of this modulation.

Returns
The morph value.

◆ mouseDown()

void ModulationMatrixRow::mouseDown ( const MouseEvent & e)
inlineoverride

Called when the mouse is pressed down. Selects this row.

Parameters
eThe mouse event.

◆ paintBackground()

void ModulationMatrixRow::paintBackground ( Graphics & g)
overridevirtual

Paints the background of this row.

Parameters
gThe graphics context.

Reimplemented from SynthSection.

◆ repaintBackground()

void ModulationMatrixRow::repaintBackground ( )
inlineoverridevirtual

Overrides to repaint the background. (Empty override)

Reimplemented from SynthSection.

◆ resized()

void ModulationMatrixRow::resized ( )
overridevirtual

Handles component resizing.

Reimplemented from SynthSection.

◆ select() [1/2]

void ModulationMatrixRow::select ( )
inline

Selects this row and notifies listeners.

◆ select() [2/2]

void ModulationMatrixRow::select ( bool select)

Changes the visual "selected" state of this row.

Parameters
selectTrue to select, false to deselect.

◆ selected()

bool ModulationMatrixRow::selected ( ) const
inline

Checks if this row is currently selected.

Returns
True if selected, false otherwise.

◆ setConnection()

void ModulationMatrixRow::setConnection ( vital::ModulationConnection * connection)
inline

Assigns a modulation connection to this row.

Parameters
connectionThe modulation connection.

◆ setGuiParent()

void ModulationMatrixRow::setGuiParent ( SynthGuiInterface * parent)
inline

Sets the parent SynthGuiInterface.

Parameters
parentThe parent interface.

◆ sliderValueChanged()

void ModulationMatrixRow::sliderValueChanged ( Slider * changed_slider)
overridevirtual

Callback when a slider's value changes.

Parameters
changed_sliderThe slider that changed.

Reimplemented from SynthSection.

◆ source()

force_inline int ModulationMatrixRow::source ( ) const
inline

Gets the selected source index.

Returns
The source index.

◆ stereo()

force_inline int ModulationMatrixRow::stereo ( ) const
inline

Gets whether this row is set to stereo modulation.

Returns
Non-zero if stereo is enabled.

◆ updateDisplay()

void ModulationMatrixRow::updateDisplay ( )

Updates the display of the row based on the current connection state.

◆ updateDisplayValue()

void ModulationMatrixRow::updateDisplayValue ( )

Updates only the display values (like amount) without changing source/destination selection.

Member Data Documentation

◆ amount_slider_

std::unique_ptr<SynthSlider> ModulationMatrixRow::amount_slider_
protected

The slider for modulation amount.

◆ bipolar_

std::unique_ptr<OpenGlShapeButton> ModulationMatrixRow::bipolar_
protected

The bipolar toggle button.

◆ bypass_

std::unique_ptr<SynthButton> ModulationMatrixRow::bypass_
protected

The bypass button for this modulation row.

◆ connection_

vital::ModulationConnection* ModulationMatrixRow::connection_
protected

The modulation connection for this row.

◆ destination_

std::unique_ptr<ModulationSelector> ModulationMatrixRow::destination_
protected

The destination selector.

◆ highlight_

OverlayBackgroundRenderer ModulationMatrixRow::highlight_
protected

Renders a highlight overlay when selected.

◆ index_

int ModulationMatrixRow::index_
protected

The index of this row.

◆ last_amount_value_

double ModulationMatrixRow::last_amount_value_
protected

The last known amount value.

◆ last_destination_value_

double ModulationMatrixRow::last_destination_value_
protected

The last known destination value.

◆ last_source_value_

double ModulationMatrixRow::last_source_value_
protected

The last known source value.

◆ listeners_

std::vector<Listener*> ModulationMatrixRow::listeners_
protected

Registered row listeners.

◆ parent_

SynthGuiInterface* ModulationMatrixRow::parent_
protected

The parent GUI interface.

◆ power_slider_

std::unique_ptr<SynthSlider> ModulationMatrixRow::power_slider_
protected

The slider for the morph/power parameter.

◆ selected_

bool ModulationMatrixRow::selected_
protected

Whether this row is currently selected.

◆ source_

std::unique_ptr<ModulationSelector> ModulationMatrixRow::source_
protected

The source selector.

◆ stereo_

std::unique_ptr<SynthButton> ModulationMatrixRow::stereo_
protected

The stereo toggle button.

◆ updating_

bool ModulationMatrixRow::updating_
protected

Indicates if the row is currently updating to avoid recursive changes.


The documentation for this class was generated from the following files: