77 virtual void process(
int num_samples)
override;
84 void setupFilter(
const FilterState& filter_state)
override;
192 return high_pass_amount_;
193 return low_pass_amount_;
201 return low_pass_amount_;
202 return high_pass_amount_;
207 poly_float drive_, drive_boost_, drive_blend_, drive_mult_;
A nonlinear filter that produces a "dirty" and saturated sound, ideal for adding character to the sig...
Definition dirty_filter.h:30
void process24(int num_samples, poly_float current_resonance, poly_float current_drive, poly_float current_drive_boost, poly_float current_drive_blend, poly_float current_low, poly_float current_band, poly_float current_high)
Processes the filter in 24 dB/oct mode.
Definition dirty_filter.cpp:216
force_inline poly_float getBandAmount()
Gets the band-pass blend amount.
Definition dirty_filter.h:180
static constexpr mono_float kMinCutoff
Minimum cutoff frequency in Hz.
Definition dirty_filter.h:44
virtual ~DirtyFilter()
Definition dirty_filter.h:66
force_inline poly_float tick(poly_float audio_in, poly_float coefficient, poly_float resonance, poly_float drive, poly_float feed_mult, poly_float normalizer, poly_float low, poly_float band, poly_float high)
Processes a single sample in 12 dB mode or as a part of other modes' chains.
Definition dirty_filter.cpp:557
static constexpr mono_float kMaxResonance
Maximum resonance factor.
Definition dirty_filter.h:35
force_inline poly_float getLowAmount()
Gets the low-pass blend amount.
Definition dirty_filter.h:175
force_inline poly_float tuneResonance(poly_float resonance, poly_float coefficient)
Tunes the resonance based on the filter coefficient.
Definition dirty_filter.h:58
static constexpr mono_float kSaturationBoost
Scaling factor applied during saturation.
Definition dirty_filter.h:37
void reset(poly_mask reset_mask) override
Resets the filter state for specific voices.
Definition dirty_filter.cpp:17
static constexpr mono_float kMinDrive
Minimum drive value.
Definition dirty_filter.h:46
force_inline poly_float getResonance()
Gets the current resonance value adjusted by coefficient and drive.
Definition dirty_filter.h:158
static constexpr mono_float kMinResonance
Minimum resonance factor.
Definition dirty_filter.h:33
void setupFilter(const FilterState &filter_state) override
Sets up the filter's internal state (cutoff, resonance, drive, blend) from the given FilterState.
Definition dirty_filter.cpp:396
static constexpr mono_float kDriveResonanceBoost
Additional resonance boost when drive is applied.
Definition dirty_filter.h:41
force_inline poly_float getDrive()
Gets the current drive value adjusted based on resonance.
Definition dirty_filter.h:166
static constexpr mono_float kMaxVisibleResonance
Maximum visible resonance value.
Definition dirty_filter.h:39
static constexpr mono_float kFlatResonance
Flat resonance factor used internally.
Definition dirty_filter.h:49
force_inline poly_float tickDual(poly_float audio_in, poly_float coefficient, poly_float resonance, poly_float drive, poly_float feed_mult, poly_float normalizer, poly_float pre_feedback_mult, poly_float pre_normalizer, poly_float low, poly_float high)
Processes a single sample in dual mode.
Definition dirty_filter.cpp:512
void processDual(int num_samples, poly_float current_resonance, poly_float current_drive, poly_float current_drive_boost, poly_float current_drive_blend, poly_float current_drive_mult, poly_float current_low, poly_float current_high)
Processes the filter in dual (e.g., dual-notch band) mode.
Definition dirty_filter.cpp:308
force_inline poly_float getLowAmount24(int style)
For 24 dB mode, gets the low amount depending on filter style.
Definition dirty_filter.h:190
Processor * clone() const override
Clones this Processor for polyphonic expansion. Must be overridden by subclasses.
Definition dirty_filter.h:68
force_inline poly_float getHighAmount()
Gets the high-pass blend amount.
Definition dirty_filter.h:185
force_inline poly_float tick24(poly_float audio_in, poly_float coefficient, poly_float resonance, poly_float drive, poly_float feed_mult, poly_float normalizer, poly_float pre_feedback_mult, poly_float pre_normalizer, poly_float low, poly_float band, poly_float high)
Processes a single sample in 24 dB mode with nonlinearities and drive.
Definition dirty_filter.cpp:466
virtual void process(int num_samples) override
Processes a block of audio samples.
Definition dirty_filter.cpp:52
void hardReset() override
Hard resets the filter, clearing all internal states.
Definition dirty_filter.cpp:32
void process12(int num_samples, poly_float current_resonance, poly_float current_drive, poly_float current_drive_boost, poly_float current_drive_blend, poly_float current_low, poly_float current_band, poly_float current_high)
Processes the filter in 12 dB/oct mode.
Definition dirty_filter.cpp:129
force_inline poly_float getHighAmount24(int style)
For 24 dB mode, gets the high amount depending on filter style.
Definition dirty_filter.h:199
DirtyFilter()
Constructs a DirtyFilter with default parameters.
Definition dirty_filter.cpp:9
A one-pole filter implementation with optional nonlinear saturation.
Definition one_pole_filter.h:22
Base class for all signal-processing units in Vital.
Definition processor.h:212
Abstract base class for Vital’s synthesizer filters.
Definition synth_filter.h:19
@ kDualNotchBand
Definition synth_filter.h:78
#define force_inline
Definition common.h:23
Contains faster but less accurate versions of utility math functions, such as exponential,...
force_inline poly_float clamp(poly_float value, mono_float min, mono_float max)
Clamps each lane of a vector to [min, max].
Definition poly_utils.h:306
force_inline poly_float max(poly_float left, poly_float right)
Returns the maximum of two poly_floats lane-by-lane.
Definition poly_utils.h:327
force_inline poly_float interpolate(poly_float from, poly_float to, mono_float t)
Performs a linear interpolation between two poly_floats using a scalar t in [0..1].
Definition poly_utils.h:182
Contains classes and functions used within the Vital synthesizer framework.
float mono_float
Definition common.h:33
Declares the Processor class and related structures for handling audio processing in a polyphonic con...
Represents a vector of floating-point values using SIMD instructions.
Definition poly_values.h:600
Represents a vector of integer values using SIMD instructions.
Definition poly_values.h:56