LMMS
Loading...
Searching...
No Matches
modules_dist.h
Go to the documentation of this file.
1/* Calf DSP plugin pack
2 * Distortion related plugins
3 *
4 * Copyright (C) 2001-2010 Krzysztof Foltman, Markus Schmidt, Thor Harald Johansen and others
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General
17 * Public License along with this program; if not, write to the
18 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02111-1307, USA.
20 */
21#ifndef CALF_MODULES_DIST_H
22#define CALF_MODULES_DIST_H
23
24#include <assert.h>
25#include <limits.h>
26#include "biquad.h"
27#include "bypass.h"
28#include "audio_fx.h"
29#include "giface.h"
30#include "metadata.h"
31#include "plugin_tools.h"
32#ifdef ENABLE_EXPERIMENTAL
33#include <fluidsynth.h>
34#endif
35#include "shaping_clipper.h"
36
37namespace calf_plugins {
38
39/**********************************************************************
40 * SATURATOR by Markus Schmidt
41**********************************************************************/
42
63
64/**********************************************************************
65 * EXCITER by Markus Schmidt
66**********************************************************************/
67
68class exciter_audio_module: public audio_module<exciter_metadata> {
69private:
78public:
82 void activate();
83 void deactivate();
84 void params_changed();
86 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
87};
88
89/**********************************************************************
90 * BASS ENHANCER by Markus Schmidt
91**********************************************************************/
92
93class bassenhancer_audio_module: public audio_module<bassenhancer_metadata> {
94private:
103public:
107 void activate();
108 void deactivate();
109 void params_changed();
110 void set_sample_rate(uint32_t sr);
111 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
112};
113
114/**********************************************************************
115 * VINYL by Markus Schmidt
116**********************************************************************/
117
118#ifdef ENABLE_EXPERIMENTAL
119class vinyl_audio_module:
120 public audio_module<vinyl_metadata>, public frequency_response_line_graph
121{
122 typedef vinyl_audio_module AM;
123 bool active;
124 uint32_t clip_inL, clip_inR, clip_outL, clip_outR;
125 float meter_inL, meter_inR, meter_outL, meter_outR;
126
127 float speed_old, freq_old, aging_old;
128
129 const static int channels = 2;
130 const static int _filters = 5;
131 const static int _synths = 7;
132 const static int _synthsp = 3;
133
134 dsp::bypass bypass;
135 vumeters meters;
136 dsp::simple_lfo lfo;
137 dsp::biquad_d2 filters[2][_filters];
138 fluid_synth_t *synth;
139 fluid_settings_t* settings;
140 float last_gain[_synths];
141
142 uint32_t dbufsize, dbufpos;
143 float *dbuf;
144 float dbufrange;
145
146public:
147 uint32_t srate;
148 vinyl_audio_module();
149 ~vinyl_audio_module();
150 void params_changed();
151 void activate();
152 void post_instantiate(uint32_t sr);
153 void set_sample_rate(uint32_t sr);
154 void deactivate();
155 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
156 float freq_gain(int index, double freq) const;
157 bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const;
158 bool get_layers(int index, int generation, unsigned int &layers) const;
159};
160#endif
161
162/**********************************************************************
163 * TAPESIMULATOR by Markus Schmidt
164**********************************************************************/
165
167 public audio_module<tapesimulator_metadata>, public frequency_response_line_graph
168{
170 bool active;
174 mutable bool redraw_output;
180 const static int channels = 2;
183 mutable float rms, input;
184public:
187 void params_changed();
188 void activate();
189 void set_sample_rate(uint32_t sr);
190 void deactivate();
191 float freq_gain(int index, double freq) const;
192 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
193 bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const;
194 bool get_dot(int index, int subindex, int phase, float &x, float &y, int &size, cairo_iface *context) const;
195 bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const;
196 bool get_layers(int index, int generation, unsigned int &layers) const;
197};
198
199/**********************************************************************
200 * CRUSHER by Markus Schmidt and Christian Holschuh
201**********************************************************************/
202
204 public audio_module<crusher_metadata>, public line_graph_iface
205{
206private:
212 float smin, sdiff;
213public:
216 void set_sample_rate(uint32_t sr);
217 void activate();
218 void deactivate();
219 void params_changed();
220 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
221 bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const;
222 bool get_layers(int index, int generation, unsigned int &layers) const;
223 bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const;
224};
225
226/**********************************************************************
227 * PSYCHOACOUSTIC CLIPPER by Jason Jang
228**********************************************************************/
229
230class psyclipper_audio_module: public audio_module<psyclipper_metadata>, public line_graph_iface {
231private:
234 std::vector<float> in_buffer[2];
235 std::vector<float> out_buffer[2];
241public:
246 void activate();
247 void deactivate();
248 void params_changed();
249 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
250 void set_sample_rate(uint32_t sr);
251};
252
253};
254
255#endif
SYNTH_T * synth
Definition LocalZynAddSubFx.cpp:47
void process(Alg_seq_ptr seq, bool tempo_flag, double tempo, bool flatten_flag)
Definition allegroconvert.cpp:42
static void deactivate(LV2_Handle instance)
Definition bindings_test_plugin.c:128
Empty implementations for plugin functions.
Definition giface.h:519
bassenhancer_audio_module()
Definition modules_dist.cpp:474
dsp::biquad_d2 hp[2][2]
Definition modules_dist.h:99
uint32_t srate
Definition modules_dist.h:104
bool floor_active_old
Definition modules_dist.h:96
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_dist.cpp:484
bool is_active
Definition modules_dist.h:105
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_dist.cpp:537
vumeters meters
Definition modules_dist.h:102
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_dist.cpp:526
dsp::biquad_d2 lp[2][4]
Definition modules_dist.h:98
void deactivate()
LADSPA-esque deactivate function.
Definition modules_dist.cpp:490
void params_changed()
Called when params are changed (before processing).
Definition modules_dist.cpp:495
float freq_old
Definition modules_dist.h:95
dsp::tap_distortion dist[2]
Definition modules_dist.h:100
float meter_drive
Definition modules_dist.h:97
dsp::bypass bypass
Definition modules_dist.h:101
float floor_old
Definition modules_dist.h:95
dsp::samplereduction samplereduction[2]
Definition modules_dist.h:209
float smin
Definition modules_dist.h:212
void params_changed()
Called when params are changed (before processing).
Definition modules_dist.cpp:1203
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_dist.cpp:1194
void deactivate()
LADSPA-esque deactivate function.
Definition modules_dist.cpp:1198
dsp::bypass bypass
Definition modules_dist.h:211
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_dist.cpp:1284
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_dist.cpp:1234
uint32_t srate
Definition modules_dist.h:214
float sdiff
Definition modules_dist.h:212
crusher_audio_module()
Definition modules_dist.cpp:1189
dsp::simple_lfo lfo
Definition modules_dist.h:210
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_dist.cpp:1225
dsp::bitreduction bitreduction
Definition modules_dist.h:208
vumeters meters
Definition modules_dist.h:207
bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition modules_dist.cpp:1292
bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_dist.cpp:1288
vumeters meters
Definition modules_dist.h:77
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_dist.cpp:296
void params_changed()
Called when params are changed (before processing).
Definition modules_dist.cpp:308
dsp::bypass bypass
Definition modules_dist.h:76
dsp::biquad_d2 hp[2][4]
Definition modules_dist.h:73
exciter_audio_module()
Definition modules_dist.cpp:286
bool is_active
Definition modules_dist.h:80
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_dist.cpp:339
dsp::biquad_d2 lp[2][2]
Definition modules_dist.h:74
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_dist.cpp:350
float meter_drive
Definition modules_dist.h:72
bool ceil_active_old
Definition modules_dist.h:71
void deactivate()
LADSPA-esque deactivate function.
Definition modules_dist.cpp:303
float freq_old
Definition modules_dist.h:70
uint32_t srate
Definition modules_dist.h:79
float ceil_old
Definition modules_dist.h:70
dsp::tap_distortion dist[2]
Definition modules_dist.h:75
Line graph interface implementation for frequency response graphs.
Definition giface.h:777
void deactivate()
LADSPA-esque deactivate function.
Definition modules_dist.cpp:1326
bool is_active
Definition modules_dist.h:243
psyclipper_audio_module AM
Definition modules_dist.h:232
dsp::bypass bypass
Definition modules_dist.h:237
shaping_clipper * clipper[2]
Definition modules_dist.h:233
int buffer_offset
Definition modules_dist.h:236
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_dist.cpp:1319
std::vector< float > in_buffer[2]
Definition modules_dist.h:234
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_dist.cpp:1361
~psyclipper_audio_module()
Definition modules_dist.cpp:1310
std::vector< float > out_buffer[2]
Definition modules_dist.h:235
int old_margin_curve[10][2]
Definition modules_dist.h:240
psyclipper_audio_module()
Definition modules_dist.cpp:1301
vumeters meters
Definition modules_dist.h:238
float last_margin_shift
Definition modules_dist.h:239
uint32_t srate
Definition modules_dist.h:242
void params_changed()
Called when params are changed (before processing).
Definition modules_dist.cpp:1331
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_dist.cpp:1382
float lp_post_freq_old
Definition modules_dist.h:46
float p_level_old
Definition modules_dist.h:47
bool is_active
Definition modules_dist.h:55
dsp::biquad_d2 p[2]
Definition modules_dist.h:49
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_dist.cpp:158
float lp_pre_freq_old
Definition modules_dist.h:45
dsp::biquad_d2 lp[2][4]
Definition modules_dist.h:48
saturator_audio_module()
Definition modules_dist.cpp:70
void params_changed()
Called when params are changed (before processing).
Definition modules_dist.cpp:94
dsp::tap_distortion dist[2]
Definition modules_dist.h:50
float p_freq_old
Definition modules_dist.h:47
dsp::biquad_d2 hp[2][4]
Definition modules_dist.h:48
float p_q_old
Definition modules_dist.h:47
void deactivate()
LADSPA-esque deactivate function.
Definition modules_dist.cpp:89
float hp_pre_freq_old
Definition modules_dist.h:45
float hp_post_freq_old
Definition modules_dist.h:46
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_dist.cpp:147
uint32_t srate
Definition modules_dist.h:54
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_dist.cpp:83
dsp::bypass bypass
Definition modules_dist.h:51
vumeters meters
Definition modules_dist.h:52
bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_dist.cpp:1162
dsp::simple_lfo lfo2
Definition modules_dist.h:181
vumeters meters
Definition modules_dist.h:179
uint32_t srate
Definition modules_dist.h:185
dsp::biquad_d2 noisefilters[2][3]
Definition modules_dist.h:176
float output_old
Definition modules_dist.h:182
dsp::simple_lfo lfo1
Definition modules_dist.h:181
float lp_old
Definition modules_dist.h:182
uint32_t clip_outR
Definition modules_dist.h:171
bool redraw_output
Definition modules_dist.h:174
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_dist.cpp:919
float input
Definition modules_dist.h:183
bool get_dot(int index, int subindex, int phase, float &x, float &y, int &size, cairo_iface *context) const
Definition modules_dist.cpp:1151
uint32_t clip_inL
Definition modules_dist.h:171
uint32_t clip_inR
Definition modules_dist.h:171
tapesimulator_audio_module()
Definition modules_dist.cpp:902
dsp::bypass bypass
Definition modules_dist.h:178
dsp::transients transients
Definition modules_dist.h:177
void params_changed()
Called when params are changed (before processing).
Definition modules_dist.cpp:927
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_dist.cpp:1096
float meter_inL
Definition modules_dist.h:172
float rms
Definition modules_dist.h:183
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_dist.cpp:950
static const int channels
Definition modules_dist.h:180
uint32_t clip_outL
Definition modules_dist.h:171
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_dist.cpp:1081
float meter_outR
Definition modules_dist.h:172
dsp::biquad_d2 lp[2][2]
Definition modules_dist.h:175
float freq_gain(int index, double freq) const
Definition modules_dist.cpp:1121
void deactivate()
LADSPA-esque deactivate function.
Definition modules_dist.cpp:923
float meter_inR
Definition modules_dist.h:172
tapesimulator_audio_module AM
Definition modules_dist.h:169
bool active
Definition modules_dist.h:170
bool mech_old
Definition modules_dist.h:173
bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition modules_dist.cpp:1126
float meter_outL
Definition modules_dist.h:172
Definition plugin_tools.h:32
Definition audio_fx.h:657
Definition bypass.h:9
Definition audio_fx.h:693
Definition audio_fx.h:530
Definition audio_fx.h:708
Definition audio_fx.h:609
Definition shaping_clipper.h:25
int y
Definition inflate.c:1588
unsigned x[BMAX+1]
Definition inflate.c:1586
JHUFF_TBL long freq[]
Definition jchuff.h:50
JSAMPIMAGE data
Definition jpeglib.h:945
unsigned int uint32_t
Definition mid.cpp:100
Definition benchmark.cpp:53
static bool get_graph(Fx &fx, int subindex, float *data, int points, float res=256, float ofs=0.4)
Definition giface.h:758
png_structrp int mode
Definition png.h:1139
Definition giface.h:160
'provides live line graph values' interface
Definition giface.h:198
Definition biquad.h:430
ulg size
Definition extract.c:2350