Vital
Loading...
Searching...
No Matches
synth_filter.h
Go to the documentation of this file.
1#pragma once
2
3#include "common.h"
4#include "lookup_table.h"
5#include "synth_constants.h"
6
7namespace vital {
8
9 class Processor;
10
20 public:
27 // Limit the warp value to avoid extreme or unstable coefficients
28 static constexpr float kMaxRads = 0.499f * kPi;
29 mono_float scaled = frequency_ratio * vital::kPi;
30 return std::tan(std::min(kMaxRads, scaled / (scaled + 1.0f)));
31 }
32
38
43
49
54 enum {
68 };
69
83
128
132 virtual ~SynthFilter() { }
133
138 virtual void setupFilter(const FilterState& filter_state) = 0;
139
146
147 protected:
152
153 JUCE_LEAK_DETECTOR(SynthFilter)
154 };
155} // namespace vital
A one-dimensional lookup table for a given function with a specified resolution.
Definition lookup_table.h:31
Base class for all signal-processing units in Vital.
Definition processor.h:212
Holds the parameters necessary to configure a SynthFilter at runtime.
Definition synth_filter.h:92
poly_float transpose
Transpose in semitones (applied to midi_cutoff)
Definition synth_filter.h:120
poly_float interpolate_x
Interpolation X coordinate (e.g., for formant filters)
Definition synth_filter.h:118
poly_float interpolate_y
Interpolation Y coordinate (e.g., for formant filters)
Definition synth_filter.h:119
void loadSettings(Processor *processor)
Loads state from a Processor’s input signals (MIDI cutoff, drive, style, etc.).
Definition synth_filter.cpp:30
const poly_float * midi_cutoff_buffer
Pointer to the buffer storing per-sample MIDI cutoff.
Definition synth_filter.h:111
poly_float drive_percent
Normalized drive parameter in [0..1].
Definition synth_filter.h:114
poly_float pass_blend
Blend parameter in [0..2], controlling pass type.
Definition synth_filter.h:117
poly_float drive
Drive in linear magnitude.
Definition synth_filter.h:113
int style
Filter style enum (e.g., k12Db, k24Db)
Definition synth_filter.h:116
FilterState()
Default constructor, initializes with standard default values.
Definition synth_filter.h:97
poly_float gain
Additional gain parameter.
Definition synth_filter.h:115
poly_float midi_cutoff
MIDI note-based cutoff value.
Definition synth_filter.h:110
poly_float resonance_percent
Resonance parameter in [0..1].
Definition synth_filter.h:112
Abstract base class for Vital’s synthesizer filters.
Definition synth_filter.h:19
@ kPassBlend
Blending parameter for low-pass, high-pass, band-pass.
Definition synth_filter.h:62
@ kResonance
Resonance parameter.
Definition synth_filter.h:58
@ kTranspose
MIDI transpose in semitones.
Definition synth_filter.h:65
@ kMidiCutoff
MIDI-based cutoff parameter.
Definition synth_filter.h:57
@ kInterpolateY
For formant or XY interpolation.
Definition synth_filter.h:64
@ kReset
Reset signal.
Definition synth_filter.h:56
@ kInterpolateX
For formant or XY interpolation.
Definition synth_filter.h:63
@ kStyle
Filter style (12 dB, 24 dB, etc.)
Definition synth_filter.h:61
@ kDriveGain
Drive amount in dB.
Definition synth_filter.h:59
@ kSpread
Additional parameter for e.g. formant spread.
Definition synth_filter.h:66
@ kGain
Additional gain.
Definition synth_filter.h:60
@ kNumInputs
Number of total inputs.
Definition synth_filter.h:67
@ kAudio
Audio input index.
Definition synth_filter.h:55
static const CoefficientLookup coefficient_lookup_
Static instance of the coefficient lookup table, generated at compile time.
Definition synth_filter.h:42
FilterState filter_state_
Internal storage of the most recent FilterState, used by derived filters.
Definition synth_filter.h:151
static SynthFilter * createFilter(constants::FilterModel model)
Factory method for creating a specialized filter based on a model enum.
Definition synth_filter.cpp:65
static const CoefficientLookup * getCoefficientLookup()
Retrieves a pointer to the static coefficient lookup table.
Definition synth_filter.h:48
OneDimLookup< computeOnePoleFilterCoefficient, 2048 > CoefficientLookup
A lookup table for quick computation of one-pole filter coefficients.
Definition synth_filter.h:37
virtual ~SynthFilter()
Virtual destructor for the SynthFilter base class.
Definition synth_filter.h:132
Style
Different filter styles used in various derived classes.
Definition synth_filter.h:74
@ kBandPeakNotch
Definition synth_filter.h:79
@ kNotchPassSwap
Definition synth_filter.h:77
@ k24Db
Definition synth_filter.h:76
@ kShelving
Definition synth_filter.h:80
@ kNumStyles
Definition synth_filter.h:81
@ k12Db
Definition synth_filter.h:75
@ kDualNotchBand
Definition synth_filter.h:78
static force_inline mono_float computeOnePoleFilterCoefficient(mono_float frequency_ratio)
Computes a one-pole filter coefficient from a frequency ratio.
Definition synth_filter.h:26
virtual void setupFilter(const FilterState &filter_state)=0
Configures the filter’s parameters from the given FilterState.
#define force_inline
Definition common.h:23
Declares a templated one-dimensional lookup table for fast function evaluation.
FilterModel
Identifiers for different filter models available in Vital’s filters.
Definition synth_constants.h:194
Contains classes and functions used within the Vital synthesizer framework.
constexpr mono_float kPi
Pi constant.
Definition common.h:36
float mono_float
Definition common.h:33
Represents a vector of floating-point values using SIMD instructions.
Definition poly_values.h:600