21#ifndef CALF_MODULES_FILTER_H
22#define CALF_MODULES_FILTER_H
43template<
class BaseClass,
bool has_lphp>
52 using AM::param_count;
84 bool get_gridline(
int index,
int subindex,
int phase,
float &pos,
bool &vertical, std::string &legend,
cairo_iface *context)
const;
86 bool get_layers(
int index,
int generation,
unsigned int &layers)
const;
94 int meter[] = {AM::param_meter_inL, AM::param_meter_inR, AM::param_meter_outL, AM::param_meter_outR};
95 int clip[] = {AM::param_clip_inL, AM::param_clip_inR, AM::param_clip_outL, AM::param_clip_outR};
141template<
typename FilterClass,
typename Metadata>
145 using FilterClass::calculate_filter;
146 using FilterClass::freq_gain;
209 FilterClass::filter_activate();
217 FilterClass::srate = sr;
218 int meter[] = {Metadata::param_meter_inL, Metadata::param_meter_inR, Metadata::param_meter_outL, Metadata::param_meter_outR};
219 int clip[] = {Metadata::param_clip_inL, Metadata::param_clip_inR, Metadata::param_clip_outL, Metadata::param_clip_outR};
232 uint32_t orig_offset = offset, orig_numsamples = numsamples;
233 bool bypassed =
bypass.update(*
params[Metadata::param_bypass] > 0.5f, numsamples);
235 float values[] = {0,0,0,0};
236 for (
uint32_t i = offset;
i < offset + numsamples;
i++) {
244 numsamples += offset;
245 while(offset < numsamples) {
246 uint32_t numnow = numsamples - offset;
249 numnow =
timer.get(numnow);
250 if (outputs_mask & 1) {
251 ostate |= FilterClass::process_channel(0,
ins[0] + offset,
outs[0] + offset, numnow, inputs_mask & 1, *
params[Metadata::param_level_in], *
params[Metadata::param_level_out]);
253 if (outputs_mask & 2 &&
outs[1]) {
254 ostate |= FilterClass::process_channel(1,
ins[(
ins[1] ? 1 : 0)] + offset,
outs[1] + offset, numnow, inputs_mask & 2, *
params[Metadata::param_level_in], *
params[Metadata::param_level_out]);
256 if (
timer.elapsed()) {
259 for (
uint32_t i = offset;
i < offset + numnow;
i++) {
261 ins[0][
i] * *
params[Metadata::param_level_in],
272 meters.fall(orig_numsamples);
276 return FilterClass::freq_gain(index, (
float)
freq, (
float)FilterClass::srate);
328 virtual void note_on(
int channel,
int note,
int vel);
329 virtual void note_off(
int channel,
int note,
int vel);
354 int meter[] = {param_meter_inL, param_meter_inR, param_meter_outL, param_meter_outR};
355 int clip[] = {param_clip_inL, param_clip_inR, param_clip_outL, param_clip_outR};
362 virtual bool get_gridline(
int index,
int subindex,
int phase,
float &pos,
bool &vertical, std::string &legend,
cairo_iface *context)
const;
370template<
class XoverBaseClass>
379 using AM::param_count;
391 if(
x < 0)
return -1.f;
392 if(
x > 0)
return 1.f;
405 bool get_layers(
int index,
int generation,
unsigned int &layers)
const;
445 virtual bool get_layers(
int index,
int generation,
unsigned int &layers)
const;
497 int meter[] = {param_meter_inL, param_meter_inR, param_meter_outL, param_meter_outR};
498 int clip[] = {param_clip_inL, param_clip_inR, param_clip_outL, param_clip_outR};
544 while(offset < end) {
560 outs[0][offset] =
ins[0][offset];
561 outs[1][offset] =
ins[1][offset];
562 float values[] = {0, 0, 0, 0};
567 float outL =
outs[0][offset];
568 float outR =
outs[1][offset];
579 float values[] = {inL, inR,
outs[0][offset],
outs[1][offset]};
586 bypass.crossfade(
ins,
outs, 2, offset - numsamples, numsamples);
Definition orfanidis_eq.h:67
Definition orfanidis_eq.h:160
Empty implementations for plugin functions.
Definition giface.h:519
float * ins[(BaseClass::in_count !=0) ? BaseClass::in_count :1]
Definition giface.h:525
float * params[BaseClass::param_count]
Definition giface.h:527
float * outs[(BaseClass::out_count !=0) ? BaseClass::out_count :1]
Definition giface.h:526
audio_module()
Definition giface.h:533
uint32_t srate
Definition modules_filter.h:344
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
Definition modules_filter.cpp:869
virtual bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_filter.cpp:935
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.h:351
dsp::riaacurve riaacurvR
Definition modules_filter.h:340
int type
Definition modules_filter.h:342
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.cpp:846
int bypass_
Definition modules_filter.h:342
emphasis_audio_module()
Definition modules_filter.cpp:837
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.cpp:858
bool is_active
Definition modules_filter.h:345
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.cpp:853
dsp::riaacurve riaacurvL
Definition modules_filter.h:340
dsp::bypass bypass
Definition modules_filter.h:341
virtual bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition modules_filter.cpp:943
std::complex< double > cfloat
Definition modules_filter.h:343
virtual float freq_gain(int index, double freq) const
Definition modules_filter.h:358
vumeters meters
Definition modules_filter.h:346
int mode
Definition modules_filter.h:342
float lower_old
Definition modules_filter.h:465
float lower
Definition modules_filter.h:465
float q_old
Definition modules_filter.h:464
envelopefilter_audio_module()
Definition modules_filter.h:469
float upper
Definition modules_filter.h:465
float coefb
Definition modules_filter.h:466
void calc_coef()
Definition modules_filter.h:601
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.h:502
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.h:488
float gain_old
Definition modules_filter.h:465
float freq_gain(int index, double freq) const
Definition modules_filter.h:591
void calc_filter()
Definition modules_filter.h:595
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
Definition modules_filter.h:540
uint32_t srate
Definition modules_filter.h:458
float envelope
Definition modules_filter.h:464
float coefa
Definition modules_filter.h:466
float get_freq(float envelope) const
Definition modules_filter.h:607
float attack_old
Definition modules_filter.h:464
float release_old
Definition modules_filter.h:464
float coefz
Definition modules_filter.h:466
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.h:481
float gain
Definition modules_filter.h:465
float upper_old
Definition modules_filter.h:465
float attack
Definition modules_filter.h:464
int mode_old
Definition modules_filter.h:467
float envelope_old
Definition modules_filter.h:464
int mode
Definition modules_filter.h:467
vumeters meters
Definition modules_filter.h:462
dsp::bypass bypass
Definition modules_filter.h:461
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.h:493
float release
Definition modules_filter.h:464
bool is_active
Definition modules_filter.h:459
OrfanidisEq::Conversions conv
Definition modules_filter.h:110
dsp::switcher< OrfanidisEq::filter_type > swR
Definition modules_filter.h:119
bool is_active
Definition modules_filter.h:123
std::vector< OrfanidisEq::Eq * > eq_arrR
Definition modules_filter.h:113
std::vector< OrfanidisEq::Eq * > eq_arrL
Definition modules_filter.h:112
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.cpp:593
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.cpp:588
dsp::switcher< OrfanidisEq::filter_type > swL
Definition modules_filter.h:118
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.cpp:653
uint32_t srate
Definition modules_filter.h:122
vumeters meters
Definition modules_filter.h:126
OrfanidisEq::filter_type flt_type
Definition modules_filter.h:115
~equalizer30band_audio_module()
Definition modules_filter.cpp:574
dsp::bypass bypass
Definition modules_filter.h:124
OrfanidisEq::filter_type flt_type_old
Definition modules_filter.h:116
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.cpp:583
equalizer30band_audio_module()
Definition modules_filter.cpp:531
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
Definition modules_filter.cpp:669
OrfanidisEq::FrequencyGrid fg
Definition modules_filter.h:111
dsp::bypass eq_switch
Definition modules_filter.h:125
Definition modules_filter.h:44
float lp_mode_old
Definition modules_filter.h:58
volatile int last_generation
Definition modules_filter.h:78
bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_filter.cpp:482
bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition modules_filter.cpp:492
dsp::biquad_d2 pR[PeakBands]
Definition modules_filter.h:69
audio_module< BaseClass > AM
Definition modules_filter.h:46
float hs_q_old
Definition modules_filter.h:60
dsp::biquad_d2 lsL
Definition modules_filter.h:68
dsp::biquad_d2 lp[3][2]
Definition modules_filter.h:67
float p_level_old[PeakBands]
Definition modules_filter.h:63
std::complex< double > cfloat
Definition modules_filter.h:75
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.cpp:86
float hs_level_old
Definition modules_filter.h:60
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.cpp:119
float ls_q_old
Definition modules_filter.h:59
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.h:90
float lp_q_old
Definition modules_filter.h:58
float hp_mode_old
Definition modules_filter.h:57
analyzer _analyzer
Definition modules_filter.h:55
CalfEqMode lp_mode
Definition modules_filter.h:66
int keep_gliding
Definition modules_filter.h:71
float old_params_for_graph[graph_param_count]
Definition modules_filter.h:64
vumeters meters
Definition modules_filter.h:65
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.cpp:94
float hp_q_old
Definition modules_filter.h:57
dsp::biquad_d2 pL[PeakBands]
Definition modules_filter.h:69
float hp_freq_old
Definition modules_filter.h:57
dsp::biquad_d2 hsR
Definition modules_filter.h:68
CalfEqMode hp_mode
Definition modules_filter.h:66
float hs_freq_old
Definition modules_filter.h:60
dsp::biquad_d2 hp[3][2]
Definition modules_filter.h:67
float freq_gain(int index, double freq) const
Definition modules_filter.cpp:500
void process_hplp(float &left, float &right)
Definition modules_filter.cpp:207
float p_freq_old[PeakBands]
Definition modules_filter.h:63
equalizerNband_audio_module()
Definition modules_filter.cpp:61
bool analyzer_old
Definition modules_filter.h:62
int indiv_old
Definition modules_filter.h:61
float * params[equalizer5band_metadata::param_count]
dsp::biquad_d2 lsR
Definition modules_filter.h:68
dsp::bypass bypass
Definition modules_filter.h:70
dsp::biquad_d2 hsL
Definition modules_filter.h:68
float ls_level_old
Definition modules_filter.h:59
bool is_active
Definition modules_filter.h:77
uint32_t srate
Definition modules_filter.h:76
volatile int last_calculated_generation
Definition modules_filter.h:78
int last_peak
Definition modules_filter.h:72
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_filter.cpp:396
float p_q_old[PeakBands]
Definition modules_filter.h:63
std::string get_crosshair_label(int x, int y, int sx, int sy, float q, int dB, int name, int note, int cents) const
Definition modules_filter.cpp:516
float ls_freq_old
Definition modules_filter.h:59
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
Definition modules_filter.cpp:268
@ graph_param_count
Definition modules_filter.h:56
@ params_per_band
Definition modules_filter.h:56
float lp_freq_old
Definition modules_filter.h:58
filter_audio_module()
Definition modules_filter.h:289
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.h:295
float old_cutoff
Definition modules_filter.h:287
float old_resonance
Definition modules_filter.h:287
float old_mode
Definition modules_filter.h:287
void calculate_filter()
Definition modules_filter.h:172
dsp::inertia< dsp::exponential_ramp > inertia_gain
Definition modules_filter.h:154
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.h:215
float freq_gain(int index, double freq) const
Definition modules_filter.h:275
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.h:224
filter_module_with_inertia inertia_filter_module
These are pointers to the ins, outs, params arrays in the main class.
Definition modules_filter.h:149
void on_timer()
Definition modules_filter.h:196
bool is_active
Definition modules_filter.h:156
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
Definition modules_filter.h:229
volatile int last_generation
Definition modules_filter.h:157
dsp::inertia< dsp::exponential_ramp > inertia_cutoff
Definition modules_filter.h:154
vumeters meters
Definition modules_filter.h:160
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.h:206
virtual void params_changed()
Called when params are changed (before processing).
Definition modules_filter.h:191
filter_module_with_inertia()
Definition modules_filter.h:162
volatile int last_calculated_generation
Definition modules_filter.h:157
dsp::bypass bypass
Definition modules_filter.h:159
dsp::once_per_n timer
Definition modules_filter.h:155
dsp::inertia< dsp::exponential_ramp > inertia_resonance
Definition modules_filter.h:154
int last_velocity
Definition modules_filter.h:319
filterclavier_audio_module()
Definition modules_filter.cpp:736
virtual void note_off(int channel, int note, int vel)
Handle MIDI Note Off.
Definition modules_filter.cpp:800
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.cpp:772
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.cpp:744
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.cpp:762
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.cpp:767
const float min_gain
Definition modules_filter.h:315
int last_note
Definition modules_filter.h:318
const float max_gain
Definition modules_filter.h:316
virtual void note_on(int channel, int note, int vel)
MIDI control.
Definition modules_filter.cpp:778
void adjust_gain_according_to_filter_mode(int velocity)
Definition modules_filter.cpp:811
Line graph interface implementation for frequency response graphs.
Definition giface.h:777
bool redraw_graph
Definition giface.h:779
virtual bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_filter.cpp:1358
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.h:436
double env_mods[2][32]
Definition modules_filter.h:427
int bands
Definition modules_filter.h:418
dsp::biquad_d2 detector[2][maxorder][32]
Definition modules_filter.h:425
int hiq_old
Definition modules_filter.h:418
bool is_active
Definition modules_filter.h:423
int get_solo() const
Definition modules_filter.cpp:1183
float order_old
Definition modules_filter.h:419
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
Definition modules_filter.cpp:1190
int order
Definition modules_filter.h:418
analyzer _analyzer
Definition modules_filter.h:429
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.cpp:1124
double release
Definition modules_filter.h:430
uint32_t srate
Definition modules_filter.h:422
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.cpp:1129
vocoder_audio_module()
Definition modules_filter.cpp:1102
float upper_old
Definition modules_filter.h:419
int bands_old
Definition modules_filter.h:418
vumeters meters
Definition modules_filter.h:428
double fcoeff
Definition modules_filter.h:430
float bandfreq[32]
Definition modules_filter.h:421
dsp::biquad_d2 modulator[2][maxorder][32]
Definition modules_filter.h:425
double attack
Definition modules_filter.h:430
dsp::bypass bypass
Definition modules_filter.h:426
double log2_
Definition modules_filter.h:430
static const int maxorder
Definition modules_filter.h:424
virtual bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_filter.cpp:1397
float q_old[32]
Definition modules_filter.h:420
float lower_old
Definition modules_filter.h:419
float tilt_old
Definition modules_filter.h:419
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.cpp:1119
Definition plugin_tools.h:32
Definition modules_filter.h:371
audio_module< XoverBaseClass > AM
Definition modules_filter.h:373
vumeters meters
Definition modules_filter.h:395
uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
Definition modules_filter.cpp:1022
@ params_per_band
Definition modules_filter.h:382
dsp::crossover crossover
Definition modules_filter.h:396
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_filter.cpp:1081
bool is_active
Definition modules_filter.h:384
void params_changed()
Called when params are changed (before processing).
Definition modules_filter.cpp:1006
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_filter.cpp:981
xover_audio_module()
Definition modules_filter.cpp:955
unsigned int pos
Definition modules_filter.h:387
static float sign(float x)
Definition modules_filter.h:390
int last_peak
Definition modules_filter.h:389
uint32_t srate
Definition modules_filter.h:383
void deactivate()
LADSPA-esque deactivate function.
Definition modules_filter.cpp:976
unsigned int buffer_size
Definition modules_filter.h:388
float in[channels]
Definition modules_filter.h:386
float * buffer
Definition modules_filter.h:385
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_filter.cpp:969
~xover_audio_module()
Definition modules_filter.cpp:964
bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_filter.cpp:1086
Definition audio_fx.h:453
float freq_gain(int subindex, float freq, float srate) const
Determine gain (|H(z)|) for a given frequency.
Definition audio_fx.cpp:259
int process_channel(uint16_t channel_no, const float *in, float *out, uint32_t numsamples, int inmask, float lvl_in=1., float lvl_out=1.)
Process a single channel (float buffer) of data.
Definition audio_fx.cpp:181
uint32_t srate
Definition audio_fx.h:459
void filter_activate()
Reset filter state.
Definition audio_fx.cpp:165
void calculate_filter(float freq, float q, int mode, float gain=1.0)
Calculate filter coefficients based on parameters - cutoff/center frequency, q, filter type,...
Definition audio_fx.cpp:139
Definition audio_fx.h:634
int y
Definition inflate.c:1588
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 left
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 right
static const char * name
Definition pugl.h:1582
JHUFF_TBL long freq[]
Definition jchuff.h:50
JSAMPIMAGE data
Definition jpeglib.h:945
unsigned int uint32_t
Definition mid.cpp:100
filter_type
Definition orfanidis_eq.h:1115
Definition benchmark.cpp:53
xover_audio_module< xover3_metadata > xover3_audio_module
Definition modules_filter.h:409
equalizerNband_audio_module< equalizer5band_metadata, false > equalizer5band_audio_module
Definition modules_filter.h:101
xover_audio_module< xover2_metadata > xover2_audio_module
Definition modules_filter.h:408
CalfEqMode
Definition metadata.h:178
equalizerNband_audio_module< equalizer12band_metadata, true > equalizer12band_audio_module
Definition modules_filter.h:103
equalizerNband_audio_module< equalizer8band_metadata, true > equalizer8band_audio_module
Definition modules_filter.h:102
xover_audio_module< xover4_metadata > xover4_audio_module
Definition modules_filter.h:410
int fastf2i_drm(float f)
fast float to int conversion using default rounding mode
Definition primitives.h:445
#define false
Definition ordinals.h:83
static bool diff(const std::string fn1, const std::string fn2)
Definition playertest.cpp:161
png_structrp int mode
Definition png.h:1139
static float D(float x)
Definition tap_tubewarmth.c:156
register uch * q
Definition fileio.c:817