LMMS
Loading...
Searching...
No Matches
modules_tools.h
Go to the documentation of this file.
1/* Calf DSP plugin pack
2 * Assorted 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_TOOLS_H
22#define CALF_MODULES_TOOLS_H
23
24#include <assert.h>
25#include <limits.h>
26#include "biquad.h"
27#include "inertia.h"
28#include "audio_fx.h"
29#include "analyzer.h"
30#include "giface.h"
31#include "metadata.h"
32#include "loudness.h"
33#include <math.h>
34#include "plugin_tools.h"
35#include "bypass.h"
36
37namespace calf_plugins {
38
40
41/**********************************************************************
42 * STEREO TOOLS by Markus Schmidt
43**********************************************************************/
44
46 public audio_module<stereo_metadata>
47{
50 bool active;
54
55 float * buffer;
56 unsigned int pos;
57 unsigned int buffer_size;
58 static inline float sign(float x) {
59 if(x < 0) return -1.f;
60 if(x > 0) return 1.f;
61 return 0.f;
62 }
64public:
67 void params_changed();
68 void activate();
70 void deactivate();
71 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
72};
73
74/**********************************************************************
75 * MONO INPUT by Markus Schmidt
76**********************************************************************/
77
79 public audio_module<mono_metadata>
80{
83 bool active;
87
88 float * buffer;
89 unsigned int pos;
90 unsigned int buffer_size;
91 static inline float sign(float x) {
92 if(x < 0) return -1.f;
93 if(x > 0) return 1.f;
94 return 0.f;
95 }
97public:
100 void params_changed();
101 void activate();
102 void set_sample_rate(uint32_t sr);
103 void deactivate();
104 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
105};
106
107/**********************************************************************
108 * ANALYZER by Markus Schmidt and Christian Holschuh
109**********************************************************************/
110
112 public audio_module<analyzer_metadata>, public phase_graph_iface,
114{
117 bool active;
118 float envelope;
124public:
126 void params_changed();
127 void activate();
128 void set_sample_rate(uint32_t sr);
129 void deactivate();
130 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
131 bool get_phase_graph(int index, float ** _buffer, int * _length, int * _mode, bool * _use_fade, float * _fade, int * _accuracy, bool * _display) const;
132 bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const;
133 bool get_moving(int index, int subindex, int &direction, float *data, int x, int y, int &offset, uint32_t &color) const;
134 bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const;
135 bool get_layers(int index, int generation, unsigned int &layers) const;
137protected:
138 static const int max_phase_buffer_size = 8192;
141 int ppos;
143};
144
145/**********************************************************************
146 * MULTIBAND ENHANCER by Markus Schmidt
147**********************************************************************/
148
149class multibandenhancer_audio_module: public audio_module<multibandenhancer_metadata>,
151private:
152 static const int strips = 4;
163public:
168 void activate();
169 void deactivate();
170 void params_changed();
171 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
172 void set_sample_rate(uint32_t sr);
173 bool get_phase_graph(int index, float ** _buffer, int * _length, int * _mode, bool * _use_fade, float * _fade, int * _accuracy, bool * _display) const;
174 bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const;
175 bool get_layers(int index, int generation, unsigned int &layers) const;
176protected:
177 static const int max_phase_buffer_size = 8192;
180 int ppos;
182};
183
184/**********************************************************************
185 * MULTIBAND SPREAD by Markus Schmidt
186**********************************************************************/
187
188class multispread_audio_module: public audio_module<multispread_metadata>,
190private:
193 dsp::biquad_d1 L[4*16], R[4*16];
194public:
197 mutable bool redraw_graph;
199 float fcoeff;
202 void activate();
203 void deactivate();
204 void params_changed();
205 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
206 void set_sample_rate(uint32_t sr);
207 bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const;
208 bool get_layers(int index, int generation, unsigned int &layers) const;
209 bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const;
210 bool get_phase_graph(int index, float ** _buffer, int * _length, int * _mode, bool * _use_fade, float * _fade, int * _accuracy, bool * _display) const;
211 float freq_gain(int index, double freq) const;
212protected:
213 static const int max_phase_buffer_size = 8192;
216 int ppos;
218 float envelope;
221};
222
223/**********************************************************************
224 * WIDGET TEST
225**********************************************************************/
226
228 public audio_module<widgets_metadata>
229{
233public:
236 void params_changed();
237 void set_sample_rate(uint32_t sr);
238 uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask);
239};
240
241};
242#endif
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_tools.cpp:471
uint32_t srate
Definition modules_tools.h:116
analyzer _analyzer
Definition modules_tools.h:123
bool get_phase_graph(int index, float **_buffer, int *_length, int *_mode, bool *_use_fade, float *_fade, int *_accuracy, bool *_display) const
Definition modules_tools.cpp:540
analyzer_audio_module()
Definition modules_tools.cpp:406
int phase_buffer_size
Definition modules_tools.h:139
void deactivate()
LADSPA-esque deactivate function.
Definition modules_tools.cpp:425
int plength
Definition modules_tools.h:142
float meter_R
Definition modules_tools.h:122
uint32_t clip_R
Definition modules_tools.h:121
int ppos
Definition modules_tools.h:141
analyzer_audio_module AM
Definition modules_tools.h:115
bool get_moving(int index, int subindex, int &direction, float *data, int x, int y, int &offset, uint32_t &color) const
Definition modules_tools.cpp:557
float release_coef
Definition modules_tools.h:120
bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_tools.cpp:567
uint32_t clip_L
Definition modules_tools.h:121
float meter_L
Definition modules_tools.h:122
bool active
Definition modules_tools.h:117
float * phase_buffer
Definition modules_tools.h:140
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_tools.cpp:529
static const int max_phase_buffer_size
Definition modules_tools.h:138
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_tools.cpp:551
float envelope
Definition modules_tools.h:118
~analyzer_audio_module()
Definition modules_tools.cpp:418
bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition modules_tools.cpp:563
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_tools.cpp:421
void params_changed()
Called when params are changed (before processing).
Definition modules_tools.cpp:429
float attack_coef
Definition modules_tools.h:119
Definition analyzer.h:41
Line graph interface implementation for frequency response graphs.
Definition giface.h:777
dsp::bypass bypass
Definition modules_tools.h:84
float _sc_level
Definition modules_tools.h:96
~mono_audio_module()
Definition modules_tools.cpp:272
vumeters meters
Definition modules_tools.h:86
unsigned int pos
Definition modules_tools.h:89
float _phase_sin_coef
Definition modules_tools.h:96
float _inv_atan_shape
Definition modules_tools.h:96
float meter_outR
Definition modules_tools.h:85
mono_audio_module AM
Definition modules_tools.h:81
mono_audio_module()
Definition modules_tools.cpp:263
float * buffer
Definition modules_tools.h:88
void deactivate()
LADSPA-esque deactivate function.
Definition modules_tools.cpp:279
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_tools.cpp:295
void params_changed()
Called when params are changed (before processing).
Definition modules_tools.cpp:283
float _phase_cos_coef
Definition modules_tools.h:96
float _phase
Definition modules_tools.h:96
float meter_in
Definition modules_tools.h:85
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_tools.cpp:275
uint32_t srate
Definition modules_tools.h:82
unsigned int buffer_size
Definition modules_tools.h:90
static float sign(float x)
Definition modules_tools.h:91
float meter_outL
Definition modules_tools.h:85
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_tools.cpp:390
bool active
Definition modules_tools.h:83
float * phase_buffer[strips]
Definition modules_tools.h:179
bool is_active
Definition modules_tools.h:165
dsp::bypass bypass
Definition modules_tools.h:160
bool no_solo
Definition modules_tools.h:158
void deactivate()
LADSPA-esque deactivate function.
Definition modules_tools.cpp:606
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_tools.cpp:665
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_tools.cpp:646
multibandenhancer_audio_module()
Definition modules_tools.cpp:577
dsp::crossover crossover
Definition modules_tools.h:159
float release_coef
Definition modules_tools.h:156
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_tools.cpp:783
~multibandenhancer_audio_module()
Definition modules_tools.cpp:591
int _mode
Definition modules_tools.h:153
int plength
Definition modules_tools.h:181
bool solo[strips]
Definition modules_tools.h:157
float attack_coef
Definition modules_tools.h:155
int ppos
Definition modules_tools.h:180
int channels
Definition modules_tools.h:153
uint32_t srate
Definition modules_tools.h:164
vumeters meters
Definition modules_tools.h:161
static const int max_phase_buffer_size
Definition modules_tools.h:177
int phase_buffer_size
Definition modules_tools.h:178
bool get_phase_graph(int index, float **_buffer, int *_length, int *_mode, bool *_use_fade, float *_fade, int *_accuracy, bool *_display) const
Definition modules_tools.cpp:772
void params_changed()
Called when params are changed (before processing).
Definition modules_tools.cpp:616
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_tools.cpp:596
static const int strips
Definition modules_tools.h:152
dsp::tap_distortion dist[strips][2]
Definition modules_tools.h:162
float envelope[strips]
Definition modules_tools.h:154
bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_tools.cpp:787
bool get_phase_graph(int index, float **_buffer, int *_length, int *_mode, bool *_use_fade, float *_fade, int *_accuracy, bool *_display) const
Definition modules_tools.cpp:969
dsp::biquad_d1 L[4 *16]
Definition modules_tools.h:193
void params_changed()
Called when params are changed (before processing).
Definition modules_tools.cpp:822
float filters
Definition modules_tools.h:198
float intensity
Definition modules_tools.h:198
float fcoeff
Definition modules_tools.h:199
void deactivate()
LADSPA-esque deactivate function.
Definition modules_tools.cpp:817
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_tools.cpp:863
float amount1
Definition modules_tools.h:198
dsp::biquad_d1 R[4 *16]
Definition modules_tools.h:193
bool get_layers(int index, int generation, unsigned int &layers) const
Definition modules_tools.cpp:944
multispread_audio_module()
Definition modules_tools.cpp:797
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition modules_tools.cpp:938
int phase_buffer_size
Definition modules_tools.h:214
bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition modules_tools.cpp:953
int ppos
Definition modules_tools.h:216
uint32_t srate
Definition modules_tools.h:195
float freq_gain(int index, double freq) const
Definition modules_tools.cpp:962
float * phase_buffer
Definition modules_tools.h:215
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_tools.cpp:850
bool redraw_graph
Definition modules_tools.h:197
dsp::bypass bypass
Definition modules_tools.h:191
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_tools.cpp:812
float amount3
Definition modules_tools.h:198
~multispread_audio_module()
Definition modules_tools.cpp:808
float release_coef
Definition modules_tools.h:220
int plength
Definition modules_tools.h:217
static const int max_phase_buffer_size
Definition modules_tools.h:213
float attack_coef
Definition modules_tools.h:219
bool is_active
Definition modules_tools.h:196
vumeters meters
Definition modules_tools.h:192
float amount0
Definition modules_tools.h:198
float envelope
Definition modules_tools.h:218
float amount2
Definition modules_tools.h:198
void deactivate()
LADSPA-esque deactivate function.
Definition modules_tools.cpp:61
float * buffer
Definition modules_tools.h:55
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition modules_tools.cpp:57
static float sign(float x)
Definition modules_tools.h:58
float _inv_atan_shape
Definition modules_tools.h:63
stereo_audio_module()
Definition modules_tools.cpp:49
float meter_inR
Definition modules_tools.h:52
uint32_t srate
Definition modules_tools.h:49
float _phase_sin_coef
Definition modules_tools.h:63
float meter_outR
Definition modules_tools.h:52
float meter_inL
Definition modules_tools.h:52
bool active
Definition modules_tools.h:50
dsp::bypass bypass
Definition modules_tools.h:51
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_tools.cpp:247
float meter_outL
Definition modules_tools.h:52
vumeters meters
Definition modules_tools.h:53
float _sc_level
Definition modules_tools.h:63
float _phase
Definition modules_tools.h:63
unsigned int pos
Definition modules_tools.h:56
void params_changed()
Called when params are changed (before processing).
Definition modules_tools.cpp:65
float _phase_cos_coef
Definition modules_tools.h:63
stereo_audio_module AM
Definition modules_tools.h:48
float meter_phase
Definition modules_tools.h:52
~stereo_audio_module()
Definition modules_tools.cpp:54
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_tools.cpp:77
unsigned int buffer_size
Definition modules_tools.h:57
Definition plugin_tools.h:32
vumeters meters
Definition modules_tools.h:231
~widgets_audio_module()
Definition modules_tools.cpp:985
uint32_t srate
Definition modules_tools.h:230
void params_changed()
Called when params are changed (before processing).
Definition modules_tools.cpp:988
widgets_audio_module()
Definition modules_tools.cpp:983
dsp::simple_lfo lfo_sqr
Definition modules_tools.h:232
dsp::simple_lfo lfo_tri
Definition modules_tools.h:232
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition modules_tools.cpp:1009
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_tools.cpp:992
dsp::simple_lfo lfo_sin
Definition modules_tools.h:232
Definition bypass.h:9
Definition audio_fx.h:634
Definition audio_fx.h:530
Definition audio_fx.h:708
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
png_structrp int mode
Definition png.h:1139
Definition giface.h:160
General information about the plugin -.
Definition giface.h:315
'provides live line graph values' interface
Definition giface.h:251
Definition biquad.h:346