Vital
|
A UI section of the synthesizer interface that displays and handles a virtual MIDI keyboard. More...
#include <keyboard_interface.h>
Public Member Functions | |
KeyboardInterface (MidiKeyboardState *keyboard_state) | |
Constructs a new KeyboardInterface. | |
~KeyboardInterface () | |
Destructor. | |
void | paintBackground (Graphics &g) override |
Paints the background of the keyboard interface. | |
void | paintBackgroundShadow (Graphics &g) override |
Paints the shadow for the background (if the section is active). | |
void | resized () override |
Called when the component is resized. | |
void | setFocus () |
Sets the focus to this component, ensuring keyboard events are directed here. | |
![]() | |
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) |
virtual void | repaintBackground () |
Requests a repaint of the background. | |
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 | 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 | sliderValueChanged (Slider *moved_slider) override |
Called when a slider value changes. Updates the synth parameter accordingly. | |
virtual void | buttonClicked (Button *clicked_button) override |
Called when a button is clicked. Updates the synth parameter accordingly. | |
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 |
![]() | |
virtual | ~ButtonListener () |
Virtual destructor. | |
Additional Inherited Members | |
![]() | |
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 |
![]() | |
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 |
![]() | |
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 SynthSection * | parent_ |
SynthButton * | activator_ |
PresetSelector * | preset_selector_ |
bool | preset_selector_half_width_ |
std::unique_ptr< OffOverlay > | off_overlay_ |
Skin::SectionOverride | skin_override_ |
float | size_ratio_ |
bool | active_ |
bool | sideways_heading_ |
A UI section of the synthesizer interface that displays and handles a virtual MIDI keyboard.
This class integrates a virtual MIDI keyboard into the synth’s user interface, allowing the user to visualize and interact with MIDI note input. It inherits from SynthSection and uses JUCE's MIDI handling and drawing routines.
KeyboardInterface::KeyboardInterface | ( | MidiKeyboardState * | keyboard_state | ) |
Constructs a new KeyboardInterface.
Constructs the KeyboardInterface and initializes the MIDI keyboard.
keyboard_state | A pointer to a MidiKeyboardState object that represents the current MIDI keyboard state. |
KeyboardInterface::~KeyboardInterface | ( | ) |
Destructor.
Destructor for KeyboardInterface.
|
overridevirtual |
Paints the background of the keyboard interface.
Paints the background of the keyboard section.
g | The JUCE Graphics context to use for drawing. |
This method is called as part of the component's paint routine.
g | The JUCE Graphics context used for drawing. |
Reimplemented from SynthSection.
|
inlineoverridevirtual |
Paints the shadow for the background (if the section is active).
g | The JUCE Graphics context to use for drawing. |
Overrides the default SynthSection method to draw a tab shadow if the interface is active.
Reimplemented from SynthSection.
|
overridevirtual |
Called when the component is resized.
Resizes the keyboard to fit the current bounds.
Recalculates the layout of the contained MIDI keyboard.
Reimplemented from SynthSection.
|
inline |
Sets the focus to this component, ensuring keyboard events are directed here.