166 void mouseDown(
const MouseEvent& e)
override;
172 void mouseDrag(
const MouseEvent& e)
override;
178 void mouseExit(
const MouseEvent& e)
override;
185 void mouseWheelMove(
const MouseEvent& e,
const MouseWheelDetails& wheel)
override;
210 struct FilterResponseShader {
211 static constexpr int kMaxStages = 5;
213 OpenGLShaderProgram* shader;
214 std::unique_ptr<OpenGLShaderProgram::Attribute> position;
216 std::unique_ptr<OpenGLShaderProgram::Uniform> mix;
217 std::unique_ptr<OpenGLShaderProgram::Uniform> midi_cutoff;
218 std::unique_ptr<OpenGLShaderProgram::Uniform> resonance;
219 std::unique_ptr<OpenGLShaderProgram::Uniform> drive;
220 std::unique_ptr<OpenGLShaderProgram::Uniform> db24;
221 std::unique_ptr<OpenGLShaderProgram::Uniform> stages[kMaxStages];
223 std::unique_ptr<OpenGLShaderProgram::Uniform> formant_cutoff;
224 std::unique_ptr<OpenGLShaderProgram::Uniform> formant_resonance;
225 std::unique_ptr<OpenGLShaderProgram::Uniform> formant_spread;
226 std::unique_ptr<OpenGLShaderProgram::Uniform> formant_low;
227 std::unique_ptr<OpenGLShaderProgram::Uniform> formant_band;
228 std::unique_ptr<OpenGLShaderProgram::Uniform> formant_high;
240 void setFilterSettingsFromPosition(Point<int> position);
254 vital::poly_float getOutputsTotal(std::pair<vital::Output*, vital::Output*> outputs,
268 bool isStereoState();
283 void bind(
FilterShader shader, OpenGLContext& open_gl_context);
290 void unbind(
FilterShader shader, OpenGLContext& open_gl_context);
300 Point<int> last_mouse_position_;
301 double current_resonance_value_;
302 double current_cutoff_value_;
303 double current_formant_x_value_;
304 double current_formant_y_value_;
306 Colour line_left_color_;
307 Colour line_right_color_;
308 Colour line_disabled_color_;
309 Colour fill_left_color_;
310 Colour fill_right_color_;
311 Colour fill_disabled_color_;
322 int last_filter_style_;
339 std::pair<vital::Output*, vital::Output*> filter_mix_outputs_;
340 std::pair<vital::Output*, vital::Output*> midi_cutoff_outputs_;
341 std::pair<vital::Output*, vital::Output*> resonance_outputs_;
342 std::pair<vital::Output*, vital::Output*> blend_outputs_;
343 std::pair<vital::Output*, vital::Output*> transpose_outputs_;
344 std::pair<vital::Output*, vital::Output*> interpolate_x_outputs_;
345 std::pair<vital::Output*, vital::Output*> interpolate_y_outputs_;
346 std::pair<vital::Output*, vital::Output*> formant_resonance_outputs_;
347 std::pair<vital::Output*, vital::Output*> formant_spread_outputs_;
348 std::pair<vital::Output*, vital::Output*> formant_transpose_outputs_;
351 std::unique_ptr<float[]> line_data_;
352 GLuint vertex_array_object_;
354 GLuint response_buffer_;
Displays the frequency response of various filter models in Vital.
Definition filter_response.h:26
void setCutoffSlider(SynthSlider *slider)
Sets the slider controlling the cutoff frequency.
Definition filter_response.h:106
void mouseDrag(const MouseEvent &e) override
Handles mouse drag events, allowing interactive adjustment of filter parameters.
Definition filter_response.cpp:328
void setFormantXSlider(SynthSlider *slider)
Sets the slider controlling the formant X parameter (for formant filter models).
Definition filter_response.h:118
void setFilterMixSlider(SynthSlider *slider)
Sets the slider controlling the filter mix parameter.
Definition filter_response.h:130
void destroy(OpenGlWrapper &open_gl) override
Destroys the OpenGL resources used by this component.
Definition filter_response.cpp:240
static constexpr double kMouseSensitivityY
Definition filter_response.h:37
void setFormantResonanceSlider(SynthSlider *slider)
Sets the slider for formant resonance parameter.
Definition filter_response.h:154
void mouseDown(const MouseEvent &e) override
Handles mouse down events, initiating user interaction with filter parameters.
Definition filter_response.cpp:311
FilterShader
An enumeration of different filter shader programs used for rendering.
Definition filter_response.h:43
@ kLadder
Definition filter_response.h:46
@ kPositiveFlange
Definition filter_response.h:51
@ kComb
Definition filter_response.h:50
@ kDigital
Definition filter_response.h:47
@ kNumFilterShaders
Definition filter_response.h:54
@ kDiode
Definition filter_response.h:48
@ kNegativeFlange
Definition filter_response.h:52
@ kFormant
Definition filter_response.h:49
@ kPhase
Definition filter_response.h:53
@ kDirty
Definition filter_response.h:45
@ kAnalog
Definition filter_response.h:44
void paintBackground(Graphics &g) override
Draws the background of the component (e.g. coloring, grid lines).
Definition filter_response.cpp:272
void setActive(bool active)
Sets whether the filter visualization is active.
Definition filter_response.h:191
virtual ~FilterResponse()
Destructor.
Definition filter_response.cpp:188
void setBlendSlider(SynthSlider *slider)
Sets the slider controlling the blend parameter (e.g., for morphing filter responses).
Definition filter_response.h:136
void setStyle(int style)
Sets the style of the filter (e.g., 12dB/oct, 24dB/oct).
Definition filter_response.h:203
void setTransposeSlider(SynthSlider *slider)
Sets the slider controlling transposition of certain filter parameters.
Definition filter_response.h:142
void mouseWheelMove(const MouseEvent &e, const MouseWheelDetails &wheel) override
Handles mouse wheel events for fine-tuning filter parameters.
Definition filter_response.cpp:338
void mouseExit(const MouseEvent &e) override
Handles mouse exit events, finalizing interactive changes and hiding tooltips.
Definition filter_response.cpp:332
void setFormantTransposeSlider(SynthSlider *slider)
Sets the slider for formant transpose (formant shifting) parameter.
Definition filter_response.h:148
static constexpr int kDefaultVisualSampleRate
High sample rate used for filter response visualization (not actual audio rate).
Definition filter_response.h:31
void setFormantYSlider(SynthSlider *slider)
Sets the slider controlling the formant Y parameter (for formant filter models).
Definition filter_response.h:124
void render(OpenGlWrapper &open_gl, bool animate) override
Renders the filter response curve to the screen.
Definition filter_response.cpp:234
static constexpr int kResolution
Number of points used for drawing the filter response curve.
Definition filter_response.h:29
static constexpr int kCombAlternatePeriod
Period used for alternating patterns (specifically with comb filters).
Definition filter_response.h:33
void setFormantSpreadSlider(SynthSlider *slider)
Sets the slider for formant spread parameter.
Definition filter_response.h:160
void init(OpenGlWrapper &open_gl) override
Initializes the OpenGL resources for the filter response visualization.
Definition filter_response.cpp:190
void setResonanceSlider(SynthSlider *slider)
Sets the slider controlling the filter resonance.
Definition filter_response.h:112
static constexpr double kMouseSensitivityX
Sensitivity multipliers for mouse interaction along the X and Y axes.
Definition filter_response.h:36
void setModel(vital::constants::FilterModel model)
Sets the currently selected filter model to visualize.
Definition filter_response.h:197
A component for rendering lines with optional filling and boost effects using OpenGL.
Definition open_gl_line_renderer.h:16
A specialized slider with extended functionality for modulation, parameter control,...
Definition synth_slider.h:314
A Processor implementing a comb-based filter with multiple feedback styles.
Definition comb_filter.h:18
A state-variable filter (SVF) implementation, supporting multiple filter types (12/24 dB,...
Definition digital_svf.h:17
A diode ladder filter implementation for the Vital synthesizer.
Definition diode_filter.h:20
A nonlinear filter that produces a "dirty" and saturated sound, ideal for adding character to the sig...
Definition dirty_filter.h:30
A classic transistor ladder-style filter for the Vital synthesizer.
Definition ladder_filter.h:19
A multi-stage phaser filter for the Vital synthesizer.
Definition phaser_filter.h:19
A Sallen-Key style filter capable of multiple modes (12dB, 24dB, dual modes) with nonlinear drive and...
Definition sallen_key_filter.h:28
Holds the parameters necessary to configure a SynthFilter at runtime.
Definition synth_filter.h:92
int style
Filter style enum (e.g., k12Db, k24Db)
Definition synth_filter.h:116
FilterModel
Identifiers for different filter models available in Vital’s filters.
Definition synth_constants.h:194
std::map< std::string, Output * > output_map
Maps parameter names to Output pointers, representing output signals from various modules.
Definition synth_types.h:229
A helper struct containing references to OpenGL context, shaders, and display scale.
Definition shaders.h:174
Represents a vector of floating-point values using SIMD instructions.
Definition poly_values.h:600