2 * Example audio modules - parameters and LADSPA wrapper instantiation
4 * Copyright (C) 2001-2008 Krzysztof Foltman
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.
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.
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 02110-1301 USA
22 #include <calf/giface.h>
23 #include <calf/metadata.h>
24 #include <calf/audio_fx.h>
25 #include <calf/modmatrix.h>
26 #include <calf/utils.h>
29 using namespace calf_plugins
;
32 const char *calf_plugins::calf_copyright_info
= "(C) 2001-2013 Krzysztof Foltman, Thor Harald Johanssen, Markus Schmidt and others; license: LGPL";
33 const char *crossover_filter_choices
[] = { "LR2", "LR4", "LR8" };
34 const char *mb_crossover_filter_choices
[] = { "LR4", "LR8" };
36 ////////////////////////////////////////////////////////////////////////////
37 // A few macros to make
38 const char *eq_analyzer_mode_names
[] = { "Input", "Output", "Difference" };
41 #define BYPASS_AND_LEVEL_PARAMS \
42 { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "bypass", "Bypass" }, \
43 { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB | PF_PROP_NOBOUNDS, NULL, "level_in", "Input Gain" }, \
44 { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB | PF_PROP_NOBOUNDS, NULL, "level_out", "Output Gain" },
46 #define METERING_PARAMS \
47 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_inL", "Meter-InL" }, \
48 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_inR", "Meter-InR" }, \
49 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_outL", "Meter-OutL" }, \
50 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_outR", "Meter-OutR" }, \
51 { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_inL", "0dB-InL" }, \
52 { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_inR", "0dB-InR" }, \
53 { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_outL", "0dB-OutL" }, \
54 { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip_outR", "0dB-OutR" },
57 { 0, 0, 5, 0, PF_ENUM | PF_CTL_COMBO, active_mode_names, "hp_active", "HP Active" }, \
58 { 30, 10, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "hp_freq", "HP Freq" }, \
59 { 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, rolloff_mode_names, "hp_mode", "HP Mode" }, \
60 { 0.707, 0.1, 10, 1, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "hp_q", "HP Q" }, \
61 { 0, 0, 5, 0, PF_ENUM | PF_CTL_COMBO, active_mode_names, "lp_active", "LP Active" }, \
62 { 18000, 10, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "lp_freq", "LP Freq" }, \
63 { 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, rolloff_mode_names, "lp_mode", "LP Mode" }, \
64 { 0.707, 0.1, 10, 1, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "lp_q", "LP Q" }, \
66 #define SHELF_PARAMS \
67 { 0, 0, 5, 0, PF_ENUM | PF_CTL_COMBO, active_mode_names, "ls_active", "LS Active" }, \
68 { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "ls_level", "Level L" }, \
69 { 100, 10, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "ls_freq", "Freq L" }, \
70 { 0.707, 0.1, 10, 1, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "ls_q", "LS Q" }, \
71 { 0, 0, 5, 0, PF_ENUM | PF_CTL_COMBO, active_mode_names, "hs_active", "HS Active" }, \
72 { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "hs_level", "Level H" }, \
73 { 5000, 10, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ, NULL, "hs_freq", "Freq H" }, \
74 { 0.707, 0.1, 10, 1, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "hs_q", "HS Q" },
76 #define EQ_BAND_PARAMS(band, frequency) \
77 { 0, 0, 5, 0, PF_ENUM | PF_CTL_COMBO, active_mode_names, "p" #band "_active", "F" #band " Active" }, \
78 { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "p" #band "_level", "Level " #band }, \
79 { frequency, 10, 20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "p" #band "_freq", "Freq " #band }, \
80 { 1, 0.1, 100, 1, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "p" #band "_q", "Q " #band },
82 #define EQ_DISPLAY_PARAMS \
83 { 1, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "individuals", "Individual Filters" }, \
84 { 0.25, 0.0625, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_FADER | PF_UNIT_DB, NULL, "zoom", "Zoom" }, \
85 { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "analyzer", "Analyzer Active" }, \
86 { 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, eq_analyzer_mode_names, "analyzer_mode", "Analyzer Mode" }, \
89 ////////////////////////////////////////////////////////////////////////////
91 CALF_PORT_NAMES(flanger
) = {"In L", "In R", "Out L", "Out R"};
93 CALF_PORT_PROPS(flanger
) = {
94 { 0.1, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
| PF_PROP_GRAPH
, NULL
, "min_delay", "Min delay" },
95 { 1.0, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "mod_depth", "Mod depth" },
96 { 0.2, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "mod_rate", "Mod rate" },
97 { 0.90, -0.99, 0.99, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "feedback", "Feedback" },
98 { 90, 0, 360, 9, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "stereo", "Stereo phase" },
99 { 0, 0, 1, 2, PF_BOOL
| PF_CTL_BUTTON
, NULL
, "reset", "Reset" },
100 { 1, 0, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "amount", "Amount" },
101 { 1.0, 0, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "dry", "Dry Amount" },
105 CALF_PLUGIN_INFO(flanger
) = { 0x847d, "Flanger", "Calf Flanger", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "ModulatorPlugin" };
107 ////////////////////////////////////////////////////////////////////////////
109 CALF_PORT_NAMES(phaser
) = {"In L", "In R", "Out L", "Out R"};
111 CALF_PORT_PROPS(phaser
) = {
112 { 1000, 20, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "base_freq", "Center Freq" },
113 { 4000, 0, 10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "mod_depth", "Mod depth" },
114 { 0.25, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "mod_rate", "Mod rate" },
115 { 0.25, -0.99, 0.99, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "feedback", "Feedback" },
116 { 6, 1, 12, 12, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "stages", "# Stages" },
117 { 180, 0, 360, 9, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "stereo", "Stereo phase" },
118 { 0, 0, 1, 2, PF_BOOL
| PF_CTL_BUTTON
, NULL
, "reset", "Reset" },
119 { 1, 0, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "amount", "Amount" },
120 { 1.0, 0, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "dry", "Dry Amount" },
123 CALF_PLUGIN_INFO(phaser
) = { 0x8484, "Phaser", "Calf Phaser", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "ModulatorPlugin" };
125 ////////////////////////////////////////////////////////////////////////////
127 CALF_PORT_NAMES(reverb
) = {"In L", "In R", "Out L", "Out R"};
129 const char *reverb_room_sizes
[] = { "Small", "Medium", "Large", "Tunnel-like", "Large/smooth", "Experimental" };
131 CALF_PORT_PROPS(reverb
) = {
132 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip", "0dB" },
133 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_wet", "Wet amount" },
134 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
135 { 1.5, 0.4, 15.0, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_SEC
, NULL
, "decay_time", "Decay time" },
136 { 5000, 2000,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "hf_damp", "High Frq Damp" },
137 { 2, 0, 5, 0, PF_ENUM
| PF_CTL_COMBO
, reverb_room_sizes
, "room_size", "Room size", },
138 { 0.5, 0, 1, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "diffusion", "Diffusion" },
139 { 0.25, 0, 2, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "amount", "Wet Amount" },
140 { 1.0, 0, 2, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "dry", "Dry Amount" },
141 { 0, 0, 500, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "predelay", "Pre Delay" },
142 { 300, 20, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "bass_cut", "Bass Cut" },
143 { 5000, 20, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "treble_cut", "Treble Cut" },
147 CALF_PLUGIN_INFO(reverb
) = { 0x847e, "Reverb", "Calf Reverb", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "ReverbPlugin" };
149 ////////////////////////////////////////////////////////////////////////////
151 CALF_PORT_NAMES(filter
) = {"In L", "In R", "Out L", "Out R"};
153 const char *filter_choices
[] = {
163 "6dB/oct Bandreject",
164 "12dB/oct Bandreject",
165 "18dB/oct Bandreject",
168 CALF_PORT_PROPS(filter
) = {
169 { 2000, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq", "Frequency" },
170 { 0.707, 0.707, 32, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "res", "Resonance" },
171 { biquad_filter_module::mode_12db_lp
,
172 biquad_filter_module::mode_12db_lp
,
173 biquad_filter_module::mode_count
- 1,
174 1, PF_ENUM
| PF_CTL_COMBO
, filter_choices
, "mode", "Mode" },
175 { 20, 5, 100, 20, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "inertia", "Inertia"},
178 CALF_PLUGIN_INFO(filter
) = { 0x847f, "Filter", "Calf Filter", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "FilterPlugin" };
180 ////////////////////////////////////////////////////////////////////////////
182 CALF_PORT_NAMES(filterclavier
) = {"In L", "In R", "Out L", "Out R"};
184 CALF_PORT_PROPS(filterclavier
) = {
185 { 0, -48, 48, 48*2+1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_SEMITONES
, NULL
, "transpose", "Transpose" },
186 { 0, -100, 100, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune", "Detune" },
187 { 32, 0.707, 32, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "maxres", "Max. Resonance" },
188 { biquad_filter_module::mode_6db_bp
,
189 biquad_filter_module::mode_12db_lp
,
190 biquad_filter_module::mode_count
- 1,
191 1, PF_ENUM
| PF_CTL_COMBO
| PF_PROP_GRAPH
, filter_choices
, "mode", "Mode" },
192 { 20, 1, 2000, 20, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "inertia", "Portamento time"},
196 CALF_PLUGIN_INFO(filterclavier
) = { 0x849f, "Filterclavier", "Calf Filterclavier", "Calf Studio Gear / Krzysztof Foltman / Hans Baier", calf_plugins::calf_copyright_info
, "FilterPlugin" };
198 ////////////////////////////////////////////////////////////////////////////
200 CALF_PORT_NAMES(envelopefilter
) = {"In L", "In R", "Out L", "Out R"};
202 CALF_PORT_PROPS(envelopefilter
) = {
203 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
204 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input Gain" },
205 { 2, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_out", "Output Gain" },
207 { 0.85, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "mix", "Mix" },
208 { 2, 0.707, 32, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "res", "Resonance" },
209 { biquad_filter_module::mode_12db_bp
,
210 biquad_filter_module::mode_12db_lp
,
211 biquad_filter_module::mode_count
- 1,
212 1, PF_ENUM
| PF_CTL_COMBO
, filter_choices
, "mode", "Mode" },
213 { 20.f
, 1.0f
, 500.f
, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Attack" },
214 { 200.f
,10.f
, 5000.f
, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
215 { 3000, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "upper", "Upper" },
216 { 80, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "lower", "Lower" },
217 { 1,0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "gain", "Activation" },
218 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sidechain_enable", "Sidechain" },
219 { 0., -1, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "response", "Response" },
223 CALF_PLUGIN_INFO(envelopefilter
) = { 0x8432, "EnvelopeFilter", "Calf Envelope Filter", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "FilterPlugin" };
225 ////////////////////////////////////////////////////////////////////////////
227 CALF_PORT_NAMES(vintage_delay
) = {"In L", "In R", "Out L", "Out R"};
229 const char *vintage_delay_mixmodes
[] = {
236 const char *vintage_delay_fbmodes
[] = {
242 const char *vintage_delay_timing
[] = {
248 const char *vintage_delay_fragmentation
[] = {
253 CALF_PORT_PROPS(vintage_delay
) = {
254 BYPASS_AND_LEVEL_PARAMS
256 { 120, 30, 300, 1, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_BPM
, NULL
, "bpm", "Tempo" },
257 { 120, 1, 300, 1, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_BPM
| PF_SYNC_BPM
, NULL
, "bpm_host", "Host BPM" },
258 { 4, 1, 16, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "subdiv", "Subdivide"},
259 { 3, 1, 16, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "time_l", "Time L"},
260 { 5, 1, 16, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "time_r", "Time R"},
261 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "feedback", "Feedback" },
262 { 0.25, 0, 4, 100, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "amount", "Amount" },
263 { 1, 0, 3, 0, PF_ENUM
| PF_CTL_COMBO
, vintage_delay_mixmodes
, "mix_mode", "Mix mode" },
264 { 1, 0, 2, 0, PF_ENUM
| PF_CTL_COMBO
, vintage_delay_fbmodes
, "medium", "Medium" },
265 { 1.0, 0, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "dry", "Dry Amount" },
266 { 1.0, -1, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "width", "Stereo Width" },
267 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sync", "Sync BPM" },
269 { 0, 0, 2, 0, PF_ENUM
| PF_CTL_COMBO
, vintage_delay_timing
, "timing", "Timing" },
270 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, vintage_delay_fragmentation
, "fragmentation", "Fragmentation" },
272 { 500, 200, 2000, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "ms", "ms" },
274 { 4, 1, 8, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "psubdiv", "Pattern Subdivide" },
275 { 4, 1, 8, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "pbeats", "Pattern Beats" },
280 CALF_PLUGIN_INFO(vintage_delay
) = { 0x8482, "VintageDelay", "Calf Vintage Delay", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "DelayPlugin" };
282 ////////////////////////////////////////////////////////////////////////////
283 CALF_PORT_NAMES(comp_delay
) = { "In L", "In R", "Out L", "Out R" };
285 CALF_PORT_PROPS(comp_delay
) = {
286 { 0, 0, 10, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "distance_mm", "Distance (mm)"},
287 { 0, 0, 100, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "distance_cm", "Distance (cm)"},
288 { 0, 0, 100, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "distance_m", "Distance (m)"},
289 { 0.000244140625, 0.000244140625, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "dry", "Dry Amount" },
290 { 1.0, 0.000244140625, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "wet", "Wet Amount" },
291 { 20, -50, 50, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "temp", "Temperature °C"},
292 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
295 CALF_PLUGIN_INFO(comp_delay
) = { 0x8485, "CompensationDelay", "Calf Compensation Delay Line", "Calf Studio Gear / Vladimir Sadovnikov", calf_plugins::calf_copyright_info
, "DelayPlugin" };
297 ////////////////////////////////////////////////////////////////////////////
299 CALF_PORT_NAMES(reverse_delay
) = {"In L", "In R", "Out L", "Out R"};
301 CALF_PORT_PROPS(reverse_delay
) = {
302 { 120, 30, 300, 1, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_BPM
, NULL
, "bpm", "Tempo" },
303 { 120, 1, 300, 1, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_BPM
| PF_SYNC_BPM
, NULL
, "bpm_host", "Host BPM" },
304 { 4, 1, 16, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "subdiv", "Subdivide"},
305 { 5, 1, 16, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "time_l", "Time L"},
306 { 5, 1, 16, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "time_r", "Time R"},
307 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "feedback", "Feedback" },
308 { 0, -1, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "amount", "Dry/Wet" },
309 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "width", "Stereo Width" },
310 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sync", "Sync BPM" },
311 { 0, 0, 1, 0, PF_INT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "sync_led_l", "Left" },
312 { 0, 0, 1, 0, PF_INT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "sync_led_r", "Right" },
313 { 0, 0, 1, 2, PF_BOOL
| PF_CTL_BUTTON
, NULL
, "reset", "Reset" },
314 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "window", "Window" },
318 CALF_PLUGIN_INFO(reverse_delay
) = { 0x8482, "ReverseDelay", "Calf Reverse Delay", "Calf Studio Gear / drgreenthumb", calf_plugins::calf_copyright_info
, "DelayPlugin" };
320 ////////////////////////////////////////////////////////////////////////////
322 CALF_PORT_NAMES(rotary_speaker
) = {"In L", "In R", "Out L", "Out R"};
324 const char *rotary_speaker_speed_names
[] = { "Off", "Chorale", "Tremolo", "HoldPedal", "ModWheel", "Manual" };
326 CALF_PORT_PROPS(rotary_speaker
) = {
327 { 5, 0, 5, 1.01, PF_ENUM
| PF_CTL_COMBO
, rotary_speaker_speed_names
, "vib_speed", "Speed Mode" },
328 { 0.5, 0, 1, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "spacing", "Tap Spacing" },
329 { 0.5, 0, 1, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "shift", "Tap Offset" },
330 { 0.45, 0, 1, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "mod_depth", "FM Depth" },
331 { 36, 10, 600, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_LOG
| PF_UNIT_RPM
, NULL
, "treble_speed", "Treble Motor" },
332 { 30, 10, 600, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_LOG
| PF_UNIT_RPM
, NULL
, "bass_speed", "Bass Motor" },
333 { 0.7, 0, 1, 101, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "mic_distance", "Mic Distance" },
334 { 0.3, 0, 1, 101, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "reflection", "Reflection" },
335 { 0.45, 0, 1, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "am_depth", "AM Depth" },
336 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "test", "Test" },
337 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_l", "Low rotor" },
338 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_h", "High rotor" },
342 CALF_PLUGIN_INFO(rotary_speaker
) = { 0x8483, "RotarySpeaker", "Calf Rotary Speaker", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "SimulatorPlugin" };
344 ////////////////////////////////////////////////////////////////////////////
346 CALF_PORT_NAMES(multichorus
) = {"In L", "In R", "Out L", "Out R"};
348 CALF_PORT_PROPS(multichorus
) = {
349 { 5, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
| PF_PROP_GRAPH
, NULL
, "min_delay", "Min delay" },
350 { 6, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
| PF_PROP_GRAPH
, NULL
, "mod_depth", "Mod depth" },
351 { 0.5, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "mod_rate", "Modulation rate" },
352 { 180, 0, 360, 91, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "stereo", "Stereo phase" },
353 { 4, 1, 8, 8, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "voices", "Voices"},
354 { 64, 0, 360, 91, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "vphase", "Inter-voice phase" },
355 { 1, 0, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "amount", "Amount" },
356 { 0.5, 0, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "dry", "Dry Amount" },
357 { 100, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq", "Center Frq 1" },
358 { 5000, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq2", "Center Frq 2" },
359 { 0.125, 0.125, 8, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "q", "Q" },
360 { 0.75, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "overlap", "Overlap" },
363 CALF_PLUGIN_INFO(multichorus
) = { 0x8501, "MultiChorus", "Calf Multi Chorus", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "ModulatorPlugin" };
365 ////////////////////////////////////////////////////////////////////////////
367 CALF_PORT_NAMES(monocompressor
) = {"In", "Out"};
369 const char *monocompressor_detection_names
[] = { "RMS", "Peak" };
370 const char *monocompressor_stereo_link_names
[] = { "Average", "Maximum" };
372 CALF_PORT_PROPS(monocompressor
) = {
373 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
374 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
375 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
376 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
377 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB-In" },
378 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "0dB-Out" },
379 { 0.125, 0.000976563, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "threshold", "Threshold" },
380 { 2, 1, 20, 21, PF_FLOAT
| PF_SCALE_LOG_INF
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "ratio", "Ratio" },
381 { 20, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Attack" },
382 { 250, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
383 { 2, 1, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "makeup", "Makeup Gain" },
384 { 2.828427125, 1, 8, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "knee", "Knee" },
385 //{ 0, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, monocompressor_detection_names, "detection", "Detection" },
386 //{ 0, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, monocompressor_stereo_link_names, "stereo_link", "Stereo Link" },
387 { 0, 0.03125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "compression", "Reduction" },
388 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "mix", "Mix" },
392 CALF_PLUGIN_INFO(monocompressor
) = { 0x8577, "MonoCompressor", "Calf Mono Compressor", "Calf Studio Gear / Damien Zammit", calf_plugins::calf_copyright_info
, "CompressorPlugin" };
394 ////////////////////////////////////////////////////////////////////////////
396 CALF_PORT_NAMES(compressor
) = {"In L", "In R", "Out L", "Out R"};
398 const char *compressor_detection_names
[] = { "RMS", "Peak" };
399 const char *compressor_stereo_link_names
[] = { "Average", "Maximum" };
401 CALF_PORT_PROPS(compressor
) = {
402 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
403 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
404 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
405 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
406 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB-In" },
407 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "0dB-Out" },
408 { 0.125, 0.000976563, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "threshold", "Threshold" },
409 { 2, 1, 20, 21, PF_FLOAT
| PF_SCALE_LOG_INF
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "ratio", "Ratio" },
410 { 20, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Attack" },
411 { 250, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
412 { 2, 1, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "makeup", "Makeup Gain" },
413 { 2.828427125, 1, 8, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "knee", "Knee" },
414 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, compressor_detection_names
, "detection", "Detection" },
415 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, compressor_stereo_link_names
, "stereo_link", "Stereo Link" },
416 { 0, 0.03125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "compression", "Reduction" },
417 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "mix", "Mix" },
421 CALF_PLUGIN_INFO(compressor
) = { 0x8502, "Compressor", "Calf Compressor", "Calf Studio Gear / Thor Harald Johansen", calf_plugins::calf_copyright_info
, "CompressorPlugin" };
423 ////////////////////////////////////////////////////////////////////////////
425 CALF_PORT_NAMES(sidechaincompressor
) = {"In L", "In R", "Out L", "Out R"};
427 const char *sidechaincompressor_detection_names
[] = { "RMS", "Peak" };
428 const char *sidechaincompressor_stereo_link_names
[] = { "Average", "Maximum" };
429 const char *sidechaincompressor_mode_names
[] = {"Wideband (F1:off / F2:off)",
430 "Deesser wide (F1:Bell / F2:HP)",
431 "Deesser split (F1:off / F2:HP)",
432 "Derumbler wide (F1:LP / F2:Bell)",
433 "Derumbler split (F1:LP / F2:off)",
434 "Weighted #1 (F1:Shelf / F2:Shelf)",
435 "Weighted #2 (F1:Shelf / F2:Bell)",
436 "Weighted #3 (F1:Bell / F2:Shelf)",
437 "Bandpass #1 (F1:BP / F2:off)",
438 "Bandpass #2 (F1:HP / F2:LP)"};
439 const char *sidechaincompressor_filter_choices
[] = { "12dB", "24dB", "36dB"};
442 CALF_PORT_PROPS(sidechaincompressor
) = {
443 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
444 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
445 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
446 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
447 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB-In" },
448 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "0dB-Out" },
449 { 0.125, 0.000976563, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "threshold", "Threshold" },
450 { 2, 1, 20, 21, PF_FLOAT
| PF_SCALE_LOG_INF
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "ratio", "Ratio" },
451 { 20, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Attack" },
452 { 250, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
453 { 2, 1, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "makeup", "Makeup Gain" },
454 { 2.828427125, 1, 8, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "knee", "Knee" },
455 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, sidechaincompressor_detection_names
, "detection", "Detection" },
456 { 1, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, sidechaincompressor_stereo_link_names
, "stereo_link", "Stereo Link" },
457 { 0, 0.03125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "compression", "Gain Reduction" },
458 { 0, 0, 9, 0, PF_ENUM
| PF_CTL_COMBO
, sidechaincompressor_mode_names
, "sc_mode", "S/C Mode" },
459 { 250, 10,18000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "f1_freq", "F1 Freq" },
460 { 4500, 10,18000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "f2_freq", "F2 Freq" },
461 { 1, 0.0625, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "f1_level", "F1 Level" },
462 { 1, 0.0625, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "f2_level", "F2 Level" },
463 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sc_listen", "S/C-Listen" },
464 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "f1_active", "F1 Active" },
465 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "f2_active", "F2 Active" },
466 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sc_route", "S/C Route" },
467 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "sc_level", "S/C Level" },
468 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "mix", "Mix" },
472 CALF_PLUGIN_INFO(sidechaincompressor
) = { 0x8517, "SidechainCompressor", "Calf Sidechain Compressor", "Calf Studio Gear / Markus Schmidt / Thor Harald Johansen", calf_plugins::calf_copyright_info
, "CompressorPlugin" };
474 ////////////////////////////////////////////////////////////////////////////
475 #define MULTI_BAND_COMP_PARAMS(band1, band2) \
476 { 0.25, 0.000976563, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "threshold" #band1, "Threshold " #band2 }, \
477 { 2, 1, 20, 21, PF_FLOAT | PF_SCALE_LOG_INF | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "ratio" #band1, "Ratio " #band2 }, \
478 { 150, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "attack" #band1, "Attack " #band2 }, \
479 { 300, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "release" #band1, "Release " #band2 }, \
480 { 2, 1, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "makeup" #band1, "Makeup " #band2 }, \
481 { 2.828427125, 1, 8, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "knee" #band1, "Knee " #band2 }, \
482 { 0, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, multibandcompressor_detection_names, "detection" #band1, "Detection " #band2 }, \
483 { 1, 0.0625, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_CTLO_REVERSE | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL| PF_PROP_GRAPH, NULL, "compression" #band1, "Gain Reduction " #band2 }, \
484 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "output" #band1, "Output " #band2 }, \
485 { 1, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "bypass" #band1, "Bypass " #band2 }, \
486 { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "solo" #band1, "Solo " #band2 },
488 CALF_PORT_NAMES(multibandcompressor
) = {"In L", "In R", "Out L", "Out R"};
490 const char *multibandcompressor_detection_names
[] = { "RMS", "Peak" };
492 CALF_PORT_PROPS(multibandcompressor
) = {
493 BYPASS_AND_LEVEL_PARAMS
495 { 120, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq0", "Split 1/2" },
496 { 1000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq1", "Split 2/3" },
497 { 6000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq2", "Split 3/4" },
498 { 1, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, mb_crossover_filter_choices
, "mode", "Filter Mode" },
499 MULTI_BAND_COMP_PARAMS(0,1)
500 MULTI_BAND_COMP_PARAMS(1,2)
501 MULTI_BAND_COMP_PARAMS(2,3)
502 MULTI_BAND_COMP_PARAMS(3,4)
503 { 0, 0, 3, 0, PF_INT
| PF_SCALE_LINEAR
, NULL
, "notebook", "Notebook" },
507 CALF_PLUGIN_INFO(multibandcompressor
) = { 0x8516, "MultibandCompressor", "Calf Multiband Compressor", "Calf Studio Gear / Markus Schmidt / Thor Harald Johansen", calf_plugins::calf_copyright_info
, "CompressorPlugin" };
509 ////////////////////////////////////////////////////////////////////////////
511 CALF_PORT_NAMES(deesser
) = {"In L", "In R", "Out L", "Out R"};
513 const char *deesser_detection_names
[] = { "RMS", "Peak" };
514 const char *deesser_mode_names
[] = { "Wide", "Split" };
517 CALF_PORT_PROPS(deesser
) = {
518 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
519 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "detected", "Detected" },
520 { 0, 0.0625, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "compression", "Gain Reduction" },
521 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "detected_led", "Active" },
522 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "Out" },
523 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, deesser_detection_names
, "detection", "Detection" },
524 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, deesser_mode_names
, "mode", "Mode" },
525 { 0.125, 0.000976563, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "threshold", "Threshold" },
526 { 3, 1, 20, 21, PF_FLOAT
| PF_SCALE_LOG_INF
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "ratio", "Ratio" },
527 { 15, 1, 100, 1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "laxity", "Laxity" },
528 { 1, 1, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "makeup", "Makeup" },
530 { 6000, 10, 18000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "f1_freq", "Split" },
531 { 4500, 10, 18000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "f2_freq", "Peak" },
532 { 1, 0.0625, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "f1_level", "Gain" },
533 { 4, 0.0625, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "f2_level", "Level" },
534 { 1, 0.1, 100,1, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "f2_q", "Peak Q" },
535 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sc_listen", "S/C-Listen" },
539 CALF_PLUGIN_INFO(deesser
) = { 0x8515, "Deesser", "Calf Deesser", "Calf Studio Gear / Markus Schmidt / Thor Harald Johansen", calf_plugins::calf_copyright_info
, "CompressorPlugin" };
541 ////////////////////////////////////////////////////////////////////////////
543 CALF_PORT_NAMES(gate
) = {"In L", "In R", "Out L", "Out R"};
545 const char *gate_detection_names
[] = { "RMS", "Peak" };
546 const char *gate_stereo_link_names
[] = { "Average", "Maximum" };
548 CALF_PORT_PROPS(gate
) = {
549 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
550 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
551 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
552 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
553 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB-In" },
554 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "0dB-Out" },
555 { 0.06125, 0.000015849, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "range", "Max Gain Reduction" },
556 { 0.125, 0.000976563, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "threshold", "Threshold" },
557 { 2, 1, 20, 21, PF_FLOAT
| PF_SCALE_LOG_INF
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "ratio", "Ratio" },
558 { 20, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Attack" },
559 { 250, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
560 { 1, 1, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "makeup", "Makeup Gain" },
561 { 2.828427125, 1, 8, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "knee", "Knee" },
562 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, gate_detection_names
, "detection", "Detection" },
563 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, gate_stereo_link_names
, "stereo_link", "Stereo Link" },
564 { 0, 0.03125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "gating", "Gating" },
568 CALF_PLUGIN_INFO(gate
) = { 0x8503, "Gate", "Calf Gate", "Calf Studio Gear / Damien Zammit / Thor Harald Johansen", calf_plugins::calf_copyright_info
, "ExpanderPlugin" };
570 ////////////////////////////////////////////////////////////////////////////
572 CALF_PORT_NAMES(sidechaingate
) = {"In L", "In R", "Out L", "Out R"};
574 const char *sidechaingate_detection_names
[] = { "RMS", "Peak" };
575 const char *sidechaingate_stereo_link_names
[] = { "Average", "Maximum" };
576 const char *sidechaingate_mode_names
[] = {"Wideband (F1:off / F2:off)",
577 "High gate wide (F1:Bell / F2:HP)",
578 "High gate split (F1:off / F2:HP)",
579 "Low Gate wide (F1:LP / F2:Bell)",
580 "Low gate split (F1:LP / F2:off)",
581 "Weighted #1 (F1:Shelf / F2:Shelf)",
582 "Weighted #2 (F1:Shelf / F2:Bell)",
583 "Weighted #3 (F1:Bell / F2:Shelf)",
584 "Bandpass #1 (F1:BP / F2:off)",
585 "Bandpass #2 (F1:HP / F2:LP)"};
586 const char *sidechaingate_filter_choices
[] = { "12dB", "24dB", "36dB"};
589 CALF_PORT_PROPS(sidechaingate
) = {
590 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
591 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
592 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
593 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
594 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB-In" },
595 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "0dB-Out" },
596 { 0.06125, 0.000015849, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "range", "Max Gain Reduction" },
597 { 0.125, 0.000976563, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "threshold", "Threshold" },
598 { 2, 1, 20, 21, PF_FLOAT
| PF_SCALE_LOG_INF
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "ratio", "Ratio" },
599 { 20, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Attack" },
600 { 250, 0.01, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
601 { 1, 1, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "makeup", "Makeup Gain" },
602 { 2.828427125, 1, 8, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "knee", "Knee" },
603 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, sidechaingate_detection_names
, "detection", "Detection" },
604 { 1, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, sidechaingate_stereo_link_names
, "stereo_link", "Stereo Link" },
605 { 0, 0.03125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "gating", "Gating" },
606 { 0, 0, 9, 0, PF_ENUM
| PF_CTL_COMBO
, sidechaingate_mode_names
, "sc_mode", "S/C Mode" },
607 { 250, 10,18000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "f1_freq", "F1 Freq" },
608 { 4500, 10,18000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "f2_freq", "F2 Freq" },
609 { 1, 0.0625, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "f1_level", "F1 Level" },
610 { 1, 0.0625, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "f2_level", "F2 Level" },
611 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sc_listen", "S/C-Listen" },
612 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "f1_active", "F1 Active" },
613 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "f2_active", "F2 Active" },
614 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "sc_route", "S/C Route" },
615 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "sc_level", "S/C Level" },
619 CALF_PLUGIN_INFO(sidechaingate
) = { 0x8504, "SidechainGate", "Calf Sidechain Gate", "Calf Studio Gear / Markus Schmidt / Damien Zammit / Thor Harald Johansen", calf_plugins::calf_copyright_info
, "ExpanderPlugin" };
621 ////////////////////////////////////////////////////////////////////////////
622 #define MULTI_BAND_GATE_PARAMS(band1, band2) \
623 { 0.06125, 0.000015849, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "range" #band1, "Reduction " #band2 }, \
624 { 0.25, 0.000976563, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "threshold" #band1, "Threshold " #band2 }, \
625 { 2, 1, 20, 21, PF_FLOAT | PF_SCALE_LOG_INF | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "ratio" #band1, "Ratio " #band2 }, \
626 { 150, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "attack" #band1, "Attack " #band2 }, \
627 { 300, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "release" #band1, "Release " #band2 }, \
628 { 2, 1, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "makeup" #band1, "Makeup " #band2 }, \
629 { 2.828427125, 1, 8, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "knee" #band1, "Knee " #band2 }, \
630 { 0, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, multibandcompressor_detection_names, "detection" #band1, "Detection " #band2 }, \
631 { 1, 0.0625, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_CTLO_REVERSE | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL| PF_PROP_GRAPH, NULL, "gating" #band1, "Gating " #band2 }, \
632 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "output" #band1, "Output " #band2 }, \
633 { 1, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "bypass" #band1, "Bypass " #band2 }, \
634 { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "solo" #band1, "Solo " #band2 },
636 CALF_PORT_NAMES(multibandgate
) = {"In L", "In R", "Out L", "Out R"};
638 const char *multibandgate_detection_names
[] = { "RMS", "Peak" };
640 CALF_PORT_PROPS(multibandgate
) = {
641 BYPASS_AND_LEVEL_PARAMS
643 { 120, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq0", "Split 1/2" },
644 { 1000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq1", "Split 2/3" },
645 { 6000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq2", "Split 3/4" },
646 { 1, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, mb_crossover_filter_choices
, "mode", "Filter Mode" },
647 MULTI_BAND_GATE_PARAMS(0,1)
648 MULTI_BAND_GATE_PARAMS(1,2)
649 MULTI_BAND_GATE_PARAMS(2,3)
650 MULTI_BAND_GATE_PARAMS(3,4)
651 { 0, 0, 3, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "notebook", "Notebook" },
655 CALF_PLUGIN_INFO(multibandgate
) = { 0x8505, "MultibandGate", "Calf Multiband Gate", "Calf Studio Gear / Markus Schmidt / Damien Zammit / Thor Harald Johansen", calf_plugins::calf_copyright_info
, "ExpanderPlugin" };
657 ////////////////////////////////////////////////////////////////////////////
659 CALF_PORT_NAMES(limiter
) = {"In L", "In R", "Out L", "Out R"};
661 CALF_PORT_PROPS(limiter
) = {
662 BYPASS_AND_LEVEL_PARAMS
664 { 1, 0.0625, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "limit", "Limit" },
665 { 5, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Lookahead" },
666 { 50, 1, 1000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
668 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att", "Attenuation" },
670 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "asc", "ASC" },
672 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "asc_led", "asc active" },
674 { 0.5f
, 0.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "asc_coeff", "ASC Level" },
675 { 1, 1, 4, 0, PF_INT
| PF_SCALE_LINEAR
| PF_UNIT_COEF
| PF_CTL_KNOB
, NULL
, "oversampling", "Oversampling" },
679 CALF_PLUGIN_INFO(limiter
) = { 0x8521, "Limiter", "Calf Limiter", "Calf Studio Gear / Christian Holschuh / Markus Schmidt", calf_plugins::calf_copyright_info
, "LimiterPlugin" };
681 ////////////////////////////////////////////////////////////////////////////
683 CALF_PORT_NAMES(multibandlimiter
) = {"In L", "In R", "Out L", "Out R"};
685 CALF_PORT_PROPS(multibandlimiter
) = {
686 BYPASS_AND_LEVEL_PARAMS
688 { 100, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq0", "Split 1/2" },
689 { 750, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq1", "Split 2/3" },
690 { 5000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq2", "Split 3/4" },
692 { 1, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, mb_crossover_filter_choices
, "mode", "Filter Mode" },
694 { 1, 0.0625, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "limit", "Limit" },
695 { 4, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Lookahead" },
696 { 30, 1, 1000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
697 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "minrel", "Min Release" },
699 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att0", "Low" },
700 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att1", "LMid" },
701 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att2", "HMid" },
702 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att3", "Hi" },
704 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight0", "Weight 1" },
705 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight1", "Weight 2" },
706 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight2", "Weight 3" },
707 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight3", "Weight 4" },
709 { 0.5f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release0", "Release 1" },
710 { 0.2f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release1", "Release 2" },
711 { -0.2f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release2", "Release 3" },
712 { -0.5f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release3", "Release 4" },
714 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo0", "Solo 1" },
715 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo1", "Solo 2" },
716 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo2", "Solo 3" },
717 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo3", "Solo 4" },
719 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease0", "Effectively Release 1" },
720 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease1", "Effectively Release 2" },
721 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease2", "Effectively Release 3" },
722 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease3", "Effectively Release 4" },
724 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "asc", "ASC" },
726 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "asc_led", "asc active" },
728 { 0.5f
, 0.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "asc_coeff", "ASC Level" },
730 { 1, 1, 4, 0, PF_INT
| PF_SCALE_LINEAR
| PF_UNIT_COEF
| PF_CTL_KNOB
, NULL
, "oversampling", "Oversampling" },
735 CALF_PLUGIN_INFO(multibandlimiter
) = { 0x8520, "MultibandLimiter", "Calf Multiband Limiter", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info
, "LimiterPlugin" };
737 ////////////////////////////////////////////////////////////////////////////
739 CALF_PORT_NAMES(sidechainlimiter
) = {"In L", "In R", "Side L", "Side R", "Out L", "Out R"};
741 CALF_PORT_PROPS(sidechainlimiter
) = {
742 BYPASS_AND_LEVEL_PARAMS
744 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_scL", "Meter S/C L" },
745 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_scR", "Meter S/C R" },
746 { 100, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq0", "Split 1/2" },
747 { 750, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq1", "Split 2/3" },
748 { 5000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "freq2", "Split 3/4" },
750 { 1, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, mb_crossover_filter_choices
, "mode", "Filter Mode" },
752 { 1, 0.0625, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "limit", "Limit" },
753 { 4, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Lookahead" },
754 { 30, 1, 1000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
755 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "minrel", "Min Release" },
757 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att0", "Low" },
758 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att1", "LMid" },
759 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att2", "HMid" },
760 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att3", "Hi" },
761 { 1, 0.125, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_CTLO_REVERSE
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
| PF_PROP_GRAPH
, NULL
, "att_sc", "S/C" },
763 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight0", "Weight 1" },
764 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight1", "Weight 2" },
765 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight2", "Weight 3" },
766 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight3", "Weight 4" },
767 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "weight_sc", "Weight S/C" },
769 { 0.5f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release0", "Release 1" },
770 { 0.2f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release1", "Release 2" },
771 { -0.2f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release2", "Release 3" },
772 { -0.5f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release3", "Release 4" },
773 { -0.5f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release_sc", "Release S/C" },
775 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo0", "Solo 1" },
776 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo1", "Solo 2" },
777 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo2", "Solo 3" },
778 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo3", "Solo 4" },
779 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "solo_sc", "Solo S/C" },
781 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease0", "Effectively Release 1" },
782 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease1", "Effectively Release 2" },
783 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease2", "Effectively Release 3" },
784 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease3", "Effectively Release 4" },
785 { 1, 0.f
, 1000, 0, PF_FLOAT
| PF_UNIT_MSEC
| PF_PROP_OUTPUT
, NULL
, "effrelease_sc", "Effectively Release S/C" },
787 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "asc", "ASC" },
789 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "asc_led", "asc active" },
791 { 0.5f
, 0.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "asc_coeff", "ASC Level" },
793 { 1, 1, 4, 0, PF_INT
| PF_SCALE_LINEAR
| PF_UNIT_COEF
| PF_CTL_KNOB
, NULL
, "oversampling", "Oversampling" },
794 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "level_sc", "Level S/C"},
798 CALF_PLUGIN_INFO(sidechainlimiter
) = { 0x8522, "SidechainLimiter", "Calf Sidechain Limiter", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info
, "LimiterPlugin" };
801 ////////////////////////////////////////////////////////////////////////////
803 CALF_PORT_NAMES(emphasis
) = {"In L", "In R", "Out L", "Out R"};
805 const char *emphasis_filter_modes
[] = { "Reproduction", "Production"};
806 const char *emphasis_filter_types
[] = { "Columbia", "EMI", "BSI(78rpm)", "RIAA", "Compact Disc (CD)", "50µs (FM)", "75µs (FM)", "50µs (FM-KF)", "75µs (FM-KF)", };
808 CALF_PORT_PROPS(emphasis
) = {
809 BYPASS_AND_LEVEL_PARAMS
811 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, emphasis_filter_modes
, "mode", "Filter Mode" },
812 { 4, 0, 8, 0, PF_ENUM
| PF_CTL_COMBO
, emphasis_filter_types
, "type", "Filter Type" },
815 CALF_PLUGIN_INFO(emphasis
) = { 0x8599, "Emphasis", "Calf Emphasis", "Calf Studio Gear / Damien Zammit", calf_plugins::calf_copyright_info
, "FilterPlugin" };
817 ////////////////////////////////////////////////////////////////////////////
818 const char *active_mode_names
[] = { " ", "ON", "Left", "Right", "Mid", "Side" };
820 CALF_PORT_NAMES(equalizer5band
) = {"In L", "In R", "Out L", "Out R"};
822 CALF_PORT_PROPS(equalizer5band
) = {
823 BYPASS_AND_LEVEL_PARAMS
826 EQ_BAND_PARAMS(1, 250)
827 EQ_BAND_PARAMS(2, 1000)
828 EQ_BAND_PARAMS(3, 4000)
833 CALF_PLUGIN_INFO(equalizer5band
) = { 0x8511, "Equalizer5Band", "Calf Equalizer 5 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "EQPlugin" };
835 //////////////////////////////////////////////////////////////////////////////
838 CALF_PORT_NAMES(equalizer8band
) = {"In L", "In R", "Out L", "Out R"};
839 const char *rolloff_mode_names
[] = {"12dB/oct", "24dB/oct", "36dB/oct"};
841 CALF_PORT_PROPS(equalizer8band
) = {
842 BYPASS_AND_LEVEL_PARAMS
846 EQ_BAND_PARAMS(1, 100)
847 EQ_BAND_PARAMS(2, 500)
848 EQ_BAND_PARAMS(3, 2000)
849 EQ_BAND_PARAMS(4, 5000)
854 CALF_PLUGIN_INFO(equalizer8band
) = { 0x8512, "Equalizer8Band", "Calf Equalizer 8 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "EQPlugin" };
856 ////////////////////////////////////////////////////////////////////////////
858 CALF_PORT_NAMES(equalizer12band
) = {"In L", "In R", "Out L", "Out R"};
860 CALF_PORT_PROPS(equalizer12band
) = {
861 BYPASS_AND_LEVEL_PARAMS
865 EQ_BAND_PARAMS(1, 60)
866 EQ_BAND_PARAMS(2, 120)
867 EQ_BAND_PARAMS(3, 250)
868 EQ_BAND_PARAMS(4, 500)
869 EQ_BAND_PARAMS(5, 1000)
870 EQ_BAND_PARAMS(6, 2000)
871 EQ_BAND_PARAMS(7, 4000)
872 EQ_BAND_PARAMS(8, 8000)
877 CALF_PLUGIN_INFO(equalizer12band
) = { 0x8513, "Equalizer12Band", "Calf Equalizer 12 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "EQPlugin" };
879 ////////////////////////////////////////////////////////////////////////////
881 #define GRAPHICEQ_BAND_PARAMS(band) \
882 { 0, -1, 1, 0, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "gain" #band, "Gain " #band },\
883 { 33, 10, 25000, 0, PF_INT | PF_SCALE_LINEAR | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "freq" #band, "Freq " #band },\
884 { 0, -32, 32, 0, PF_FLOAT | PF_DIGIT_1 | PF_SCALE_LINEAR | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "gain_scale" #band, "Gain Scale " #band },
886 #define GRAPHICEQ_GAIN_PARAMS(band) \
887 { 0, -1, 1, 0, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "gain" #band, "Gain " #band },\
888 { 0, -32, 32, 0, PF_FLOAT | PF_UNIT_DB | PF_SCALE_LINEAR | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "gain_scale" #band, "Gain Scale " #band },
890 const char *equalizer30band_filters_modes
[] = {"Butterworth", "Chebyshev 1", "Chebyshev 2"};
892 const char *equalizer30band_gainscale_modes1
[] = {"6 dB", "12 dB", "18 dB", "24 dB", "30 dB"};
894 CALF_PORT_NAMES(equalizer30band
) = {"In L", "In R", "Out L", "Out R"};
896 CALF_PORT_PROPS(equalizer30band
) = {
898 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "level_in", "In Level" },
899 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_in_vuL", "Level In L" },
900 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_in_vuR", "Level In R" },
901 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_in_clipL", "Level Clip In L" },
902 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_in_clipR", "Level Clip In R" },
904 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
905 { 0, 0, 2, 0, PF_ENUM
| PF_CTL_COMBO
, equalizer30band_filters_modes
, "filters", "Filters Type" },
907 { 18, 6, 30, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "gainscale1", "Gain scale 1" },
908 { 18, 6, 30, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "gainscale2", "Gain scale 2" },
910 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "level_out", "Out Level" },
911 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_out_vuL", "Level Out L" },
912 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_out_vuR", "Level Out R" },
913 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_out_clipL", "Level Clip Out L" },
914 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "level_out_clipR", "Level Clip Out R" },
917 GRAPHICEQ_GAIN_PARAMS(10)
918 GRAPHICEQ_BAND_PARAMS(11)
919 GRAPHICEQ_BAND_PARAMS(12)
920 GRAPHICEQ_BAND_PARAMS(13)
921 GRAPHICEQ_BAND_PARAMS(14)
922 GRAPHICEQ_BAND_PARAMS(15)
923 GRAPHICEQ_BAND_PARAMS(16)
924 GRAPHICEQ_BAND_PARAMS(17)
925 GRAPHICEQ_BAND_PARAMS(18)
926 GRAPHICEQ_BAND_PARAMS(19)
927 GRAPHICEQ_BAND_PARAMS(110)
928 GRAPHICEQ_BAND_PARAMS(111)
929 GRAPHICEQ_BAND_PARAMS(112)
930 GRAPHICEQ_BAND_PARAMS(113)
931 GRAPHICEQ_BAND_PARAMS(114)
932 GRAPHICEQ_BAND_PARAMS(115)
933 GRAPHICEQ_BAND_PARAMS(116)
934 GRAPHICEQ_BAND_PARAMS(117)
935 GRAPHICEQ_BAND_PARAMS(118)
936 GRAPHICEQ_BAND_PARAMS(119)
937 GRAPHICEQ_BAND_PARAMS(120)
938 GRAPHICEQ_BAND_PARAMS(121)
939 GRAPHICEQ_BAND_PARAMS(122)
940 GRAPHICEQ_BAND_PARAMS(123)
941 GRAPHICEQ_BAND_PARAMS(124)
942 GRAPHICEQ_BAND_PARAMS(125)
943 GRAPHICEQ_BAND_PARAMS(126)
944 GRAPHICEQ_BAND_PARAMS(127)
945 GRAPHICEQ_BAND_PARAMS(128)
946 GRAPHICEQ_BAND_PARAMS(129)
947 GRAPHICEQ_BAND_PARAMS(130)
950 GRAPHICEQ_GAIN_PARAMS(20)
951 GRAPHICEQ_BAND_PARAMS(21)
952 GRAPHICEQ_BAND_PARAMS(22)
953 GRAPHICEQ_BAND_PARAMS(23)
954 GRAPHICEQ_BAND_PARAMS(24)
955 GRAPHICEQ_BAND_PARAMS(25)
956 GRAPHICEQ_BAND_PARAMS(26)
957 GRAPHICEQ_BAND_PARAMS(27)
958 GRAPHICEQ_BAND_PARAMS(28)
959 GRAPHICEQ_BAND_PARAMS(29)
960 GRAPHICEQ_BAND_PARAMS(210)
961 GRAPHICEQ_BAND_PARAMS(211)
962 GRAPHICEQ_BAND_PARAMS(212)
963 GRAPHICEQ_BAND_PARAMS(213)
964 GRAPHICEQ_BAND_PARAMS(214)
965 GRAPHICEQ_BAND_PARAMS(215)
966 GRAPHICEQ_BAND_PARAMS(216)
967 GRAPHICEQ_BAND_PARAMS(217)
968 GRAPHICEQ_BAND_PARAMS(218)
969 GRAPHICEQ_BAND_PARAMS(219)
970 GRAPHICEQ_BAND_PARAMS(220)
971 GRAPHICEQ_BAND_PARAMS(221)
972 GRAPHICEQ_BAND_PARAMS(222)
973 GRAPHICEQ_BAND_PARAMS(223)
974 GRAPHICEQ_BAND_PARAMS(224)
975 GRAPHICEQ_BAND_PARAMS(225)
976 GRAPHICEQ_BAND_PARAMS(226)
977 GRAPHICEQ_BAND_PARAMS(227)
978 GRAPHICEQ_BAND_PARAMS(228)
979 GRAPHICEQ_BAND_PARAMS(229)
980 GRAPHICEQ_BAND_PARAMS(230)
985 CALF_PLUGIN_INFO(equalizer30band
) = { 0x8514, "Equalizer30Band", "Calf Equalizer 30 Band", "Calf Studio Gear / drgreenthumb", calf_plugins::calf_copyright_info
, "EQPlugin" };
987 ////////////////////////////////////////////////////////////////////////////
989 #define XOVER_BAND_PARAMS(band) \
990 { 1, 0.015625, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "level" #band, "Gain " #band }, \
991 { 1, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "active" #band, "Active " #band }, \
992 { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "phase" #band, "Phase " #band }, \
993 { 0.0, 0.0, 20.0, 0, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "delay" #band, "Delay " #band }, \
994 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_L" #band, "Level L " #band }, \
995 { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "meter_R" #band, "Level R " #band },
997 ////////////////////////////////////////////////////////////////////////////
999 CALF_PORT_NAMES(xover2
) = {"In L", "In R", "Out 1 L", "Out 1 R", "Out 2 L", "Out 2 R"};
1001 CALF_PORT_PROPS(xover2
) = {
1002 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "level", "Gain" },
1003 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_L", "Input L" },
1004 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_R", "Input R" },
1005 { 1, 0, 2, 0, PF_ENUM
| PF_CTL_COMBO
, crossover_filter_choices
, "mode", "Filter Mode" },
1006 { 1000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq0", "Transition 1" },
1007 XOVER_BAND_PARAMS(1)
1008 XOVER_BAND_PARAMS(2)
1011 CALF_PLUGIN_INFO(xover2
) = { 0x8515, "XOver2Band", "Calf X-Over 2 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "UtilityPlugin" };
1013 ////////////////////////////////////////////////////////////////////////////
1015 CALF_PORT_NAMES(xover3
) = {"In L", "In R", "Out 1 L", "Out 1 R", "Out 2 L", "Out 2 R", "Out 3 L", "Out 3 R"};
1017 CALF_PORT_PROPS(xover3
) = {
1018 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "level", "Gain" },
1019 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_L", "Input L" },
1020 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_R", "Input R" },
1021 { 1, 0, 2, 0, PF_ENUM
| PF_CTL_COMBO
, crossover_filter_choices
, "mode", "Filter Mode" },
1022 { 150, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq0", "Transition 1" },
1023 { 3000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq1", "Transition 2" },
1024 XOVER_BAND_PARAMS(1)
1025 XOVER_BAND_PARAMS(2)
1026 XOVER_BAND_PARAMS(3)
1029 CALF_PLUGIN_INFO(xover3
) = { 0x8515, "XOver3Band", "Calf X-Over 3 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "UtilityPlugin" };
1031 ////////////////////////////////////////////////////////////////////////////
1033 CALF_PORT_NAMES(xover4
) = {"In L", "In R", "Out 1 L", "Out 1 R", "Out 2 L", "Out 2 R", "Out 3 L", "Out 3 R", "Out 4 L", "Out 4 R"};
1035 CALF_PORT_PROPS(xover4
) = {
1036 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "level", "Gain" },
1037 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_L", "Input L" },
1038 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_R", "Input R" },
1039 { 1, 0, 2, 0, PF_ENUM
| PF_CTL_COMBO
, crossover_filter_choices
, "mode", "Filter Mode" },
1040 { 50, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq0", "Transition 1" },
1041 { 500, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq1", "Transition 2" },
1042 { 5000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq2", "Transition 3" },
1043 XOVER_BAND_PARAMS(1)
1044 XOVER_BAND_PARAMS(2)
1045 XOVER_BAND_PARAMS(3)
1046 XOVER_BAND_PARAMS(4)
1049 CALF_PLUGIN_INFO(xover4
) = { 0x8515, "XOver4Band", "Calf X-Over 4 Band", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "UtilityPlugin" };
1051 ////////////////////////////////////////////////////////////////////////////
1053 #define VOCODER_BAND_PARAMS(band) \
1054 { 1, 0.000015849, 16, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "volume" #band, "Vol " #band }, \
1055 { 0, -1, 1, 0, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "pan" #band, "Pan " #band }, \
1056 { 0.000015849, 0.000015849, 16, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "noise" #band, "Noise " #band }, \
1057 { 0.000015849, 0.000015849, 16, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "mod" #band, "Dry " #band }, \
1058 { 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "solo" #band, "Solo " #band }, \
1059 { 0, 0, 1, 0, PF_FLOAT | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "level" #band, "Level " #band },
1061 const char *vocoder_analyzer_modes
[] = {"Off", "Carrier", "Modulator", "Processed", "Output"};
1063 CALF_PORT_NAMES(vocoder
) = {"In L", "In R", "Out L", "Out R"};
1065 CALF_PORT_PROPS(vocoder
) = {
1066 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
1067 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "link", "Link" },
1068 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "detectors", "Detectors" },
1070 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "carrier_in", "Carrier In" },
1071 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "carrier_inL", "Carrier In L" },
1072 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "carrier_inR", "Carrier In R" },
1073 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "carrier_clip_inL", "Carrier Clip In L" },
1074 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "carrier_clip_inR", "Carrier Clip In R" },
1076 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "mod_in", "Modulator In" },
1077 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "mod_inL", "Modulator In L" },
1078 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "mod_inR", "Modulator In R" },
1079 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "mod_clip_inL", "Modulator Clip In L" },
1080 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "mod_clip_inR", "Modulator Clip In R" },
1082 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "out", "Out" },
1083 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "outL", "Out L" },
1084 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "outR", "Out R" },
1085 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_outL", "Clip Out L" },
1086 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_outR", "Clip Out R" },
1088 { 0.000015849, 0.000015849, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "carrier", "Carrier" },
1089 { 0.000015849, 0.000015849, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "modulator", "Modulator" },
1090 { 1, 0.000015849, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "processed", "Processed" },
1092 { 4, 2, 9, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "order", "Isolation" },
1093 { 2, 0, 4, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "bands", "Bands" },
1094 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "hiq", "High-Q" },
1096 { 5.f
, 0.1f
, 500.f
, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack", "Attack" },
1097 { 50.f
, 0.1f
, 5000.f
, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release", "Release" },
1099 { 0, 0, 4, 0, PF_ENUM
| PF_CTL_COMBO
, vocoder_analyzer_modes
, "analyzer", "Analyzer" },
1101 VOCODER_BAND_PARAMS(1)
1102 VOCODER_BAND_PARAMS(2)
1103 VOCODER_BAND_PARAMS(3)
1104 VOCODER_BAND_PARAMS(4)
1105 VOCODER_BAND_PARAMS(5)
1106 VOCODER_BAND_PARAMS(6)
1107 VOCODER_BAND_PARAMS(7)
1108 VOCODER_BAND_PARAMS(8)
1109 VOCODER_BAND_PARAMS(9)
1110 VOCODER_BAND_PARAMS(10)
1111 VOCODER_BAND_PARAMS(11)
1112 VOCODER_BAND_PARAMS(12)
1113 VOCODER_BAND_PARAMS(13)
1114 VOCODER_BAND_PARAMS(14)
1115 VOCODER_BAND_PARAMS(15)
1116 VOCODER_BAND_PARAMS(16)
1117 VOCODER_BAND_PARAMS(17)
1118 VOCODER_BAND_PARAMS(18)
1119 VOCODER_BAND_PARAMS(19)
1120 VOCODER_BAND_PARAMS(20)
1121 VOCODER_BAND_PARAMS(21)
1122 VOCODER_BAND_PARAMS(22)
1123 VOCODER_BAND_PARAMS(23)
1124 VOCODER_BAND_PARAMS(24)
1125 VOCODER_BAND_PARAMS(25)
1126 VOCODER_BAND_PARAMS(26)
1127 VOCODER_BAND_PARAMS(27)
1128 VOCODER_BAND_PARAMS(28)
1129 VOCODER_BAND_PARAMS(29)
1130 VOCODER_BAND_PARAMS(30)
1131 VOCODER_BAND_PARAMS(31)
1132 VOCODER_BAND_PARAMS(32)
1137 CALF_PLUGIN_INFO(vocoder
) = { 0x8514, "Vocoder", "Calf Vocoder", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info
, "FilterPlugin" };
1140 ////////////////////////////////////////////////////////////////////////////
1142 CALF_PORT_NAMES(pulsator
) = {"In L", "In R", "Out L", "Out R"};
1144 const char *pulsator_mode_names
[] = { "Sine", "Triangle", "Square", "Saw up", "Saw down" };
1146 CALF_PORT_PROPS(pulsator
) = {
1147 BYPASS_AND_LEVEL_PARAMS
1149 { 0, 0, 4, 0, PF_ENUM
| PF_CTL_COMBO
, pulsator_mode_names
, "mode", "Mode" },
1150 { 1, 0.01, 100, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq", "Frequency" },
1151 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "amount", "Modulation" },
1152 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "offset", "Offset L/R" },
1153 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "mono", "Mono-in" },
1154 { 0, 0, 1, 2, PF_BOOL
| PF_CTL_BUTTON
, NULL
, "reset", "Reset" },
1158 CALF_PLUGIN_INFO(pulsator
) = { 0x8514, "Pulsator", "Calf Pulsator", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "ModulatorPlugin" };
1160 ////////////////////////////////////////////////////////////////////////////
1162 CALF_PORT_NAMES(ringmodulator
) = {"In L", "In R", "Out L", "Out R"};
1164 const char *ringmod_mode_names
[] = { "Sine", "Triangle", "Square", "Saw up", "Saw down" };
1166 CALF_PORT_PROPS(ringmodulator
) = {
1167 BYPASS_AND_LEVEL_PARAMS
1169 { 0, 0, 4, 0, PF_ENUM
| PF_CTL_COMBO
, ringmod_mode_names
, "mod_mode", "Modulator" },
1170 { 1000, 1, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "mod_freq", "Mod Freq" },
1171 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "mod_amount", "Mod Amount" },
1172 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_UNIT_COEF
| PF_CTL_KNOB
, NULL
, "mod_phase", "Mod Phase" },
1173 { 0, -200, 200, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "mod_detune", "Mod Detune" },
1174 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "mod_listen", "Listen" },
1176 { 0, 0, 4, 0, PF_ENUM
| PF_CTL_COMBO
, ringmod_mode_names
, "lfo1_mode", "LFO 1" },
1177 { 0.1, 0.01, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo1_freq", "LFO 1 Freq" },
1178 { 0, 0, 1, 2, PF_BOOL
| PF_CTL_BUTTON
, NULL
, "lfo1_reset", "Reset 1" },
1179 { 100, 1, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo1_mod_freq_lo", "Mod Freq LO" },
1180 { 10000, 1, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo1_mod_freq_hi", "Mod Freq HI" },
1181 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "lfo1_mod_freq_active", "Mod Freq Active" },
1182 { -100, -200, 200, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "lfo1_mod_detune_lo", "Mod Detune LO" },
1183 { 100, -200, 200, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "lfo1_mod_detune_hi", "Mod Detune HI" },
1184 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "lfo1_mod_detune_active", "Mod Detune Active" },
1185 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "lfo1_activity", "Activity 1" },
1187 { 0, 0, 4, 0, PF_ENUM
| PF_CTL_COMBO
, ringmod_mode_names
, "lfo2_mode", "LFO 2" },
1188 { 0.2, 0.01, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo2_freq", "LFO 2 Freq" },
1189 { 0, 0, 1, 2, PF_BOOL
| PF_CTL_BUTTON
, NULL
, "lfo2_reset", "Reset 2" },
1190 { 0.05, 0.01, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo2_lfo1_freq_lo", "LFO Freq LO" },
1191 { 0.5, 0.01, 10, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo2_lfo1_freq_hi", "LFO Freq HI" },
1192 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "lfo2_lfo1_freq_active", "LFO 1 Freq Active" },
1193 { 0.3, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "lfo2_mod_amount_lo", "Mod Amount LO" },
1194 { 0.6, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "lfo2_mod_amount_hi", "Mod Amount HI" },
1195 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "lfo2_mod_amount_active", "Mod Amount Active" },
1196 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "lfo2_activity", "Activity 2" },
1201 CALF_PLUGIN_INFO(ringmodulator
) = { 0x8514, "RingModulator", "Calf Ring Modulator", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "ModulatorPlugin" };
1204 ////////////////////////////////////////////////////////////////////////////
1206 CALF_PORT_NAMES(saturator
) = {"In L", "In R", "Out L", "Out R"};
1208 CALF_PORT_PROPS(saturator
) = {
1209 BYPASS_AND_LEVEL_PARAMS
1211 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "mix", "Mix" },
1213 { 5, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "drive", "Saturation" },
1214 { 10, -10, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
| PF_UNIT_COEF
, NULL
, "blend", "Blend" },
1216 { 20000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lp_pre_freq", "Lowpass" },
1217 { 10, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "hp_pre_freq", "Highpass" },
1219 { 20000, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lp_post_freq", "Lowpass" },
1220 { 10, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "hp_post_freq", "Highpass" },
1222 { 2000, 80, 8000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "p_freq", "Tone" },
1223 { 1, 0.0625, 16, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "p_level", "Amount" },
1224 { 1, 0.1, 10, 1, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "p_q", "Gradient" },
1228 CALF_PLUGIN_INFO(saturator
) = { 0x8530, "Saturator", "Calf Saturator", "Calf Studio Gear / Markus Schmidt / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "DistortionPlugin" };
1230 ////////////////////////////////////////////////////////////////////////////
1232 CALF_PORT_NAMES(exciter
) = {"In L", "In R", "Out L", "Out R"};
1234 CALF_PORT_PROPS(exciter
) = {
1235 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
1236 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
1237 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_out", "Output" },
1238 { 1, 0, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "amount", "Amount" },
1239 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
1240 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
1241 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB" },
1242 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "0dB" },
1244 { 8.5, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "drive", "Harmonics" },
1245 { 0, -10, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
| PF_UNIT_COEF
, NULL
, "blend", "Blend harmonics" },
1246 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_drive", "Harmonics level" },
1248 { 7500, 2000, 12000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq", "Scope" },
1249 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "listen", "Listen" },
1250 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "ceil_active", "Ceiling active" },
1251 { 16000, 10000, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "ceil", "Ceiling" },
1255 CALF_PLUGIN_INFO(exciter
) = { 0x8531, "Exciter", "Calf Exciter", "Calf Studio Gear / Markus Schmidt / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "SpectralPlugin" };
1257 ////////////////////////////////////////////////////////////////////////////
1259 CALF_PORT_NAMES(bassenhancer
) = {"In L", "In R", "Out L", "Out R"};
1261 CALF_PORT_PROPS(bassenhancer
) = {
1262 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
1263 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
1264 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_out", "Output" },
1265 { 1, 0, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "amount", "Amount" },
1266 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
1267 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_out", "Output" },
1268 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB" },
1269 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_out", "0dB" },
1271 { 8.5, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "drive", "Harmonics" },
1272 { 0, -10, 10, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
| PF_UNIT_COEF
, NULL
, "blend", "Blend harmonics" },
1273 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_drive", "Harmonics level" },
1275 { 100, 10, 250, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq", "Scope" },
1276 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "listen", "Listen" },
1277 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "floor_active", "Floor active" },
1278 { 20, 10, 120, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "floor", "Floor" },
1282 CALF_PLUGIN_INFO(bassenhancer
) = { 0x8532, "BassEnhancer", "Calf Bass Enhancer", "Calf Studio Gear / Markus Schmidt / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "SpectralPlugin" };
1284 ////////////////////////////////////////////////////////////////////////////
1286 CALF_PORT_NAMES(stereo
) = {"In L", "In R", "Out L", "Out R"};
1287 const char *stereo_mode_names
[] = { "LR > LR (Stereo Default)", "LR > MS (Stereo to Mid-Side)", "MS > LR (Mid-Side to Stereo)", "LR > LL (Mono Left Channel)", "LR > RR (Mono Right Channel)", "LR > L+R (Mono Sum L+R)", "LR > RL (Stereo Flip Channels)" };
1288 CALF_PORT_PROPS(stereo
) = {
1289 BYPASS_AND_LEVEL_PARAMS
1292 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "balance_in", "Balance In" },
1293 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "balance_out", "Balance Out" },
1295 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "softclip", "Softclip" },
1296 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "mutel", "Mute L" },
1297 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "muter", "Mute R" },
1298 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "phasel", "Phase L" },
1299 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "phaser", "Phase R" },
1301 { 0, 0, 6, 0, PF_ENUM
| PF_CTL_COMBO
, stereo_mode_names
, "mode", "Mode" },
1303 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "slev", "S Level" },
1304 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_DIGIT_2
, NULL
, "sbal", "S Bal" },
1305 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
, NULL
, "mlev", "M Level" },
1306 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_DIGIT_2
, NULL
, "mpan", "M Pan" },
1308 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
| PF_DIGIT_2
, NULL
, "stereo_base", "Stereo Base" },
1309 { 0.f
, -20.f
, 20.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "delay", "Delay" },
1311 { 0.f
, 0.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_COEF
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_phase", "Phase Correlation" },
1313 { 1, 1, 100, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "sc_level", "S/C Level" },
1314 { 0, 0, 360, 91, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "stereo_phase", "Stereo Phase" },
1318 CALF_PLUGIN_INFO(stereo
) = { 0x8588, "StereoTools", "Calf Stereo Tools", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "SpatialPlugin" };
1320 ////////////////////////////////////////////////////////////////////////////
1322 CALF_PORT_NAMES(haas_enhancer
) = {"In L", "In R", "Out L", "Out R"};
1324 const char *haas_enhancer_source
[] = {
1332 CALF_PORT_PROPS(haas_enhancer
) = {
1333 BYPASS_AND_LEVEL_PARAMS
1334 { 1.0, 0.015625, 64.0, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "s_gain", "Side Gain" },
1336 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_sideL", "Side L" },
1337 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_sideR", "Side R" },
1339 { 2, 0, 4, 1, PF_ENUM
| PF_CTL_COMBO
, haas_enhancer_source
, "m_source", "Middle source" },
1340 { 0.0, 0.0, 1.0, 1.0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "m_phase", "Middle phase" },
1342 { 2.05, 0.0, 10.0, 0.01, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "s_delay1", "Left Delay" },
1343 { 0.0, -1.0, 1.0, 0.01, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "s_balance1", "Left Balance" },
1344 { 1.0, 0.015625, 64.0, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "s_gain1", "Left Gain" },
1345 { 0.0, 0.0, 1.0, 1.0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "s_phase1", "Left Phase" },
1347 { 2.12, 0.0, 10.0, 0.01, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "s_delay2", "Right Delay" },
1348 { 0.0, -1.0, 1.0, 0.01, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "s_balance2", "Right Balance" },
1349 { 1.0, 0.015625, 64.0, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "s_gain2", "Right Gain" },
1350 { 1.0, 0.0, 1.0, 1.0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "s_phase2", "Right Phase" },
1354 CALF_PLUGIN_INFO(haas_enhancer
) = { 0x8486, "HaasEnhancer", "Calf Haas Stereo Enhancer", "Calf Studio Gear / Vladimir Sadovnikov", calf_plugins::calf_copyright_info
, "SpatialPlugin" };
1356 ////////////////////////////////////////////////////////////////////////////
1358 CALF_PORT_NAMES(mono
) = {"In", "Out L", "Out R"};
1359 CALF_PORT_PROPS(mono
) = {
1360 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
1361 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input" },
1362 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "level_out", "Output" },
1363 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_in", "Input" },
1364 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_outL", "Output L" },
1365 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_outR", "Output R" },
1366 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_in", "0dB-In" },
1367 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_outL", "0dB-OutL" },
1368 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_outR", "0dB-OutR" },
1370 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "balance_out", "Balance" },
1372 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "softclip", "Softclip" },
1373 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "mutel", "Mute L" },
1374 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "muter", "Mute R" },
1375 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "phasel", "Phase L" },
1376 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "phaser", "Phase R" },
1378 { 0.f
, -20.f
, 20.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "delay", "Delay" },
1379 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "stereo_base", "Stereo Base" },
1380 { 0, 0, 360, 91, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "stereo_phase", "Stereo Phase" },
1381 { 1, 1, 100, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "sc_level", "S/C Level" },
1385 CALF_PLUGIN_INFO(mono
) = { 0x8589, "MonoInput", "Calf Mono Input", "Calf Studio Gear / Markus Schmidt", calf_plugins::calf_copyright_info
, "UtilityPlugin" };
1388 ////////////////////////////////////////////////////////////////////////////
1390 CALF_PORT_NAMES(analyzer
) = {"In L", "In R", "Out L", "Out R"};
1391 const char *gonio_mode_names
[] = { "Small Dots", "Medium Dots", "Big Dots", "Fields", "Lines (High CPU)" };
1392 const char *analyzer_mode_names
[] = { "Analyzer Average", "Analyzer Left", "Analyzer Right", "Analyzer Stereo", "Stereo Image", "Stereo Difference", "Spectralizer Average", "Spectralizer Left", "Spectralizer Right", "Spectralizer Colored Stereo", "Spectralizer Parallel Stereo" };
1393 const char *analyzer_smooth_names
[] = { "Off", "Falling", "Transition" };
1394 const char *analyzer_post_names
[] = { "Normalized", "Average", "Additive", "Denoised Peaks" };
1395 const char *analyzer_view_names
[] = { "Bars", "Lines", "Cubic Splines" };
1396 const char *analyzer_scale_names
[] = { "Logarithmic", "Linear" };
1397 const char *analyzer_windowing_names
[] = { "Rectangular", "Hamming", "von Hann", "Blackman", "Blackman-Harris", "Blackman-Nuttall", "Sine", "Lanczos", "Gauß", "Bartlett", "Triangular", "Bartlett-Hann" };
1398 CALF_PORT_PROPS(analyzer
) = {
1399 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_L", "Level L" },
1400 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_R", "Level R" },
1401 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_L", "Clip L" },
1402 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_LED
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "clip_R", "Clip R" },
1404 { 1.25, 0.5, 2, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "analyzer_level", "Analyzer Level" },
1405 { 0, 0, 10, 0, PF_ENUM
| PF_CTL_COMBO
, analyzer_mode_names
, "analyzer_mode", "Analyzer Mode" },
1406 { 0, 0, 1, 2, PF_ENUM
| PF_CTL_COMBO
, analyzer_scale_names
, "analyzer_scale", "Analyzer Scale" },
1407 { 0, 0, 3, 0, PF_ENUM
| PF_CTL_COMBO
, analyzer_post_names
, "analyzer_post", "Analyzer Post FFT" },
1408 { 1, 0, 1, 2, PF_ENUM
| PF_CTL_COMBO
, analyzer_view_names
, "analyzer_view", "Analyzer View" },
1409 { 1, 0, 2, 0, PF_ENUM
| PF_CTL_COMBO
, analyzer_smooth_names
, "analyzer_smoothing", "Analyzer Smoothing" },
1410 { 2, 0, 11, 2, PF_ENUM
| PF_CTL_COMBO
, analyzer_windowing_names
, "analyzer_windowing", "Analyzer Windowing" },
1411 { 7, 2, 8, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "analyzer_accuracy", "Analyzer Accuracy" },
1412 { 15, 1, 15, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "analyzer_speed", "Analyzer Speed" },
1413 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "analyzer_display", "Analyzer Display" },
1414 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "analyzer_hold", "Analyzer Hold" },
1415 { 0, 0, 1, 2, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "analyzer_freeze", "Analyzer Freeze" },
1417 { 1, 0, 4, 0, PF_ENUM
| PF_CTL_COMBO
, gonio_mode_names
, "gonio_mode", "Gonio Mode" },
1418 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "gonio_use_fade", "Gonio Fade Active" },
1419 { 0.5f
, 0.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "gonio_fade", "Gonio Fade" },
1420 { 4, 1, 5, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "gonio_accuracy", "Gonio Accuracy" },
1421 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "gonio_display", "Gonio Display" },
1426 CALF_PLUGIN_INFO(analyzer
) = { 0x8588, "Analyzer", "Calf Analyzer", "Calf Studio Gear / Christian Holschuh / Markus Schmidt", calf_plugins::calf_copyright_info
, "AnalyserPlugin" };
1428 ////////////////////////////////////////////////////////////////////////////
1429 const char *transientdesigner_view_names
[] = { "Output", "Envelope", "Attack", "Release" };
1430 const char *transientdesigner_filter_modes
[] = { "Off", "12dB", "24dB", "36dB" };
1431 CALF_PORT_NAMES(transientdesigner
) = {"In L", "In R", "Out L", "Out R"};
1432 CALF_PORT_PROPS(transientdesigner
) = {
1433 BYPASS_AND_LEVEL_PARAMS
1435 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "mix", "Mix" },
1436 { 30.f
, 1.f
, 500.f
, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "attack_time", "Attack Time" },
1437 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "attack_boost", "Attack Boost" },
1438 { 1.f
, 0.0009765625f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_GRAPH
, NULL
, "sustain_threshold", "Sustain Threshold" },
1439 { 300.f
, 1.f
, 5000.f
, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "release_time", "Release Time" },
1440 { 0.f
, -1.f
, 1.f
, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "release_boost", "Release Boost" },
1441 { 2000.f
, 50.f
, 5000.f
, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "display", "Display" },
1442 { pow(2.0,-12.0), pow(2.0,-12.0),1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_GRAPH
, NULL
, "display_threshold", "Threshold" },
1443 { 0, 0, 100, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_SAMPLES
, NULL
, "lookahead", "Lookahead" },
1444 { 0, 0, 3, 0, PF_ENUM
| PF_CTL_COMBO
, transientdesigner_view_names
, "view", "View Mode" },
1445 { 100, 20,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
| PF_PROP_GRAPH
, NULL
, "hipass", "Highpass" },
1446 { 5000, 20,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lopass", "Lowpass" },
1447 { 0, 0, 3, 0, PF_ENUM
| PF_CTL_COMBO
, transientdesigner_filter_modes
, "hp_mode", "HP-Mode" },
1448 { 0, 0, 3, 0, PF_ENUM
| PF_CTL_COMBO
, transientdesigner_filter_modes
, "lp_mode", "LP-Mode" },
1449 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "listen", "Listen" },
1453 CALF_PLUGIN_INFO(transientdesigner
) = { 0x8588, "TransientDesigner", "Calf Transient Designer", "Calf Studio Gear / Christian Holschuh / Markus Schmidt", calf_plugins::calf_copyright_info
, "EnvelopePlugin" };
1455 ////////////////////////////////////////////////////////////////////////////
1457 CALF_PORT_NAMES(tapesimulator
) = {"In L", "In R", "Out L", "Out R"};
1458 const char *tapesimulator_speed_names
[] = { "Slow", "Fast" };
1459 CALF_PORT_PROPS(tapesimulator
) = {
1460 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "bypass", "Bypass" },
1461 { 0.5, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_in", "Input Gain" },
1462 { 1, 0.015625, 64, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "level_out", "Output Gain" },
1464 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "mix", "Mix" },
1465 { 12500, 1000, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lowpass", "Filter" },
1466 { 1, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, tapesimulator_speed_names
, "speed", "Speed Simulation" },
1467 { 0.10, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "noise", "Noise" },
1468 { 0.20, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "mechanical", "Mechanical" },
1469 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "magnetical", "Magnetical" },
1470 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "post", "Post-Filter" },
1474 CALF_PLUGIN_INFO(tapesimulator
) = { 0x8588, "TapeSimulator", "Calf Tape Simulator", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info
, "SimulatorPlugin" };
1476 ////////////////////////////////////////////////////////////////////////////
1478 CALF_PORT_NAMES(crusher
) = {"In L", "In R", "Out L", "Out R"};
1479 const char *crusher_mode_names
[] = { "Linear", "Logarithmic" };
1480 CALF_PORT_PROPS(crusher
) = {
1481 BYPASS_AND_LEVEL_PARAMS
1483 { 4, 1, 16, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_LOG
| PF_UNIT_COEF
, NULL
, "bits", "Bit Reduction" },
1484 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "morph", "Morph" },
1485 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, crusher_mode_names
, "mode", "Mode" },
1486 { 1, 0.25, 4, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_DB
| PF_PROP_NOBOUNDS
, NULL
, "dc", "DC" },
1487 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "anti_aliasing", "Anti-Aliasing" },
1488 { 1, 1, 250, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "samples", "Sample Reduction" },
1489 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "lfo", "LFO Active" },
1490 { 20, 1, 250, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "lforange", "LFO Depth" },
1491 { 0.3, 0.01, 200, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lforate", "LFO Rate" },
1495 CALF_PLUGIN_INFO(crusher
) = { 0x8587, "Crusher", "Calf Crusher", "Calf Studio Gear / Markus Schmidt / Christian Holschuh", calf_plugins::calf_copyright_info
, "DistortionPlugin" };
1497 ////////////////////////////////////////////////////////////////////////////
1499 CALF_PORT_NAMES(monosynth
) = {
1503 const char *monosynth_waveform_names
[] = { "Sawtooth", "Square", "Pulse", "Sine", "Triangle", "Varistep", "Skewed Saw", "Skewed Square",
1504 "Smooth Brass", "Bass", "Dark FM", "Multiwave", "Bell FM", "Dark Pad", "DCO Saw", "DCO Maze" };
1505 const char *monosynth_mode_names
[] = { "0\xC2\xB0 : 0\xC2\xB0", "0\xC2\xB0 : 180\xC2\xB0", "0\xC2\xB0 : 90\xC2\xB0", "90\xC2\xB0 : 90\xC2\xB0", "90\xC2\xB0 : 270\xC2\xB0", "Random" };
1506 const char *monosynth_legato_names
[] = { "Retrig", "Legato", "Fng Retrig", "Fng Legato" };
1507 const char *monosynth_lfotrig_names
[] = { "Retrig", "Free" };
1509 const char *monosynth_filter_choices
[] = {
1512 "2x12dB/oct Lowpass",
1513 "12dB/oct Highpass",
1517 "2x6dB/oct Bandpass",
1520 CALF_PLUGIN_INFO(monosynth
) = { 0x8480, "Monosynth", "Calf Monosynth", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "InstrumentPlugin" };
1522 CALF_PORT_PROPS(monosynth
) = {
1523 { monosynth_metadata::wave_saw
, 0, monosynth_metadata::wave_count
- 1, 1, PF_ENUM
| PF_CTL_COMBO
| PF_PROP_GRAPH
, monosynth_waveform_names
, "o1_wave", "Osc1 Wave" },
1524 { monosynth_metadata::wave_sqr
, 0, monosynth_metadata::wave_count
- 1, 1, PF_ENUM
| PF_CTL_COMBO
| PF_PROP_GRAPH
, monosynth_waveform_names
, "o2_wave", "Osc2 Wave" },
1526 { 0, -1, 1, 0.1, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "o1_pw", "Osc1 PW" },
1527 { 0, -1, 1, 0.1, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "o2_pw", "Osc2 PW" },
1529 { 10, 0, 100, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "o12_detune", "O1<>2 Detune" },
1530 { 12, -24, 24, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_SEMITONES
, NULL
, "o2_xpose", "Osc2 Transpose" },
1531 { 0, 0, 5, 0, PF_ENUM
| PF_CTL_COMBO
, monosynth_mode_names
, "phase_mode", "Phase mode" },
1532 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "o12_mix", "O1<>2 Mix" },
1533 { 1, 0, 7, 0, PF_ENUM
| PF_CTL_COMBO
| PF_PROP_GRAPH
, monosynth_filter_choices
, "filter", "Filter" },
1534 { 33, 10,16000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "cutoff", "Cutoff" },
1535 { 3, 0.7, 8, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
, NULL
, "res", "Resonance" },
1536 { 0, -2400, 2400, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "filter_sep", "Separation" },
1537 { 8000, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "env2cutoff", "Env->Cutoff" },
1538 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "env2res", "Env->Res" },
1539 { 0, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "env2amp", "Env->Amp" },
1541 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr_a", "EG1 Attack" },
1542 { 350, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr_d", "EG1 Decay" },
1543 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr_s", "EG1 Sustain" },
1544 { 0, -10000,10000, 21, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr_f", "EG1 Fade" },
1545 { 100, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr_r", "EG1 Release" },
1547 { 0, 0, 2, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "key_follow", "Key Follow" },
1548 { 0, 0, 3, 0, PF_ENUM
| PF_CTL_COMBO
, monosynth_legato_names
, "legato", "Legato Mode" },
1549 { 1, 1, 2000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "portamento", "Portamento" },
1551 { 0.5, 0, 1, 0.1, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "vel2filter", "Vel->Filter" },
1552 { 0, 0, 1, 0.1, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "vel2amp", "Vel->Amp" },
1554 { 0.5, 0, 1, 100, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_PROP_OUTPUT_GAIN
, NULL
, "master", "Volume" },
1556 { 200, 0, 2400, 25, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "pbend_range", "PBend Range" },
1558 { 5, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo_rate", "LFO1 Rate" },
1559 { 0.5, 0, 5, 0, PF_FLOAT
| PF_SCALE_QUAD
| PF_CTL_KNOB
| PF_UNIT_SEC
, NULL
, "lfo_delay", "LFO1 Delay" },
1560 { 0, -4800, 4800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "lfo2filter", "LFO1->Filter" },
1561 { 100, 0, 1200, 0, PF_FLOAT
| PF_SCALE_QUAD
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "lfo2pitch", "LFO1->Pitch" },
1562 { 0, 0, 1, 0.1, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "lfo2pw", "LFO1->PW" },
1563 { 1, 0, 1, 0.1, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "mwhl2lfo", "ModWheel->LFO1" },
1565 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "scale_detune", "Scale Detune" },
1567 { 0, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "adsr2_cutoff", "EG2->Cutoff" },
1568 { 0.3, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "adsr2_res", "EG2->Res" },
1569 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "adsr2_amp", "EG2->Amp" },
1571 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr2_a", "EG2 Attack" },
1572 { 100, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr2_d", "EG2 Decay" },
1573 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr2_s", "EG2 Sustain" },
1574 { 0, -10000,10000, 21, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr2_f", "EG2 Fade" },
1575 { 50, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_FADER
| PF_UNIT_MSEC
, NULL
, "adsr2_r", "Release" },
1577 { 1, 1, 16, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_UNIT_COEF
| PF_CTL_KNOB
, NULL
, "o1_stretch", "Osc1 Stretch" },
1578 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "o1_window", "Osc1 Window" },
1580 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, monosynth_lfotrig_names
, "lfo1_trig", "LFO1 Trigger Mode" },
1581 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, monosynth_lfotrig_names
, "lfo2_trig", "LFO2 Trigger Mode" },
1582 { 5, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo2_rate", "LFO1 Rate" },
1583 { 0.5, 0.1, 5, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_SEC
, NULL
, "lfo2_delay", "LFO1 Delay" },
1584 { 0, 0, 1, 0, PF_FLOAT
| PF_CTL_KNOB
| PF_SCALE_PERC
, NULL
, "o2_unison", "Osc2 Unison" },
1585 { 2, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "o2_unisonfrq", "Osc2 Unison Detune" },
1586 { 0, -24, 24, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_SEMITONES
, NULL
, "o1_xpose", "Osc1 Transpose" },
1590 static const char *monosynth_mod_src_names
[] = {
1602 static const char *monosynth_mod_dest_names
[] = {
1605 "Osc Mix Ratio (%)",
1613 "O2: Unison Amt (%)",
1614 "O2: Unison Detune (log2)",
1618 monosynth_metadata::monosynth_metadata()
1619 : mm_metadata(mod_matrix_slots
, monosynth_mod_src_names
, monosynth_mod_dest_names
)
1623 void monosynth_metadata::get_configure_vars(vector
<string
> &names
) const
1625 mm_metadata
.get_configure_vars(names
);
1628 ////////////////////////////////////////////////////////////////////////////
1630 CALF_PLUGIN_INFO(organ
) = { 0x8481, "Organ", "Calf Organ", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "InstrumentPlugin" };
1632 plugin_command_info
*organ_metadata::get_commands() const
1634 static plugin_command_info cmds
[] = {
1635 { "cmd_panic", "Panic!", "Stop all sounds and reset all controllers" },
1641 CALF_PORT_NAMES(organ
) = {"Out L", "Out R"};
1643 const char *organ_percussion_trigger_names
[] = { "First note", "Each note", "Each, no retrig", "Polyphonic" };
1645 const char *organ_wave_names
[] = {
1647 "S0", "S00", "S000",
1648 "SSaw", "SSqr", "SPls",
1649 "Saw", "Sqr", "Pls",
1650 "S(", "Sq(", "S+", "Clvg",
1652 "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9",
1653 "DSaw", "DSqr", "DPls",
1654 "P:SynS","P:WideS","P:Sine","P:Bell","P:Space","P:Voice","P:Hiss","P:Chant",
1657 const char *organ_routing_names
[] = { "Out", "Flt 1", "Flt 2" };
1659 const char *organ_ampctl_names
[] = { "None", "Direct", "Flt 1", "Flt 2", "All" };
1661 const char *organ_vibrato_mode_names
[] = { "None", "Direct", "Flt 1", "Flt 2", "Voice", "Global" };
1663 const char *organ_vibrato_type_names
[] = { "Allpass", "Scanner (V1/C1)", "Scanner (V2/C2)", "Scanner (V3/C3)", "Scanner (Full)" };
1665 const char *organ_filter_type_names
[] = { "12dB/oct LP", "12dB/oct HP" };
1667 const char *organ_filter_send_names
[] = { "Output", "Filter 2" };
1669 CALF_PORT_PROPS(organ
) = {
1670 { 8, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l1", "16'" },
1671 { 8, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l2", "5 1/3'" },
1672 { 8, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l3", "8'" },
1673 { 0, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l4", "4'" },
1674 { 0, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l5", "2 2/3'" },
1675 { 0, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l6", "2'" },
1676 { 0, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l7", "1 3/5'" },
1677 { 0, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l8", "1 1/3'" },
1678 { 8, 0, 8, 80, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_FADER
, NULL
, "l9", "1'" },
1680 { 1, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f1", "Freq 1" },
1681 { 3, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f2", "Freq 2" },
1682 { 2, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f3", "Freq 3" },
1683 { 4, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f4", "Freq 4" },
1684 { 6, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f5", "Freq 5" },
1685 { 8, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f6", "Freq 6" },
1686 { 10, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f7", "Freq 7" },
1687 { 12, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f8", "Freq 8" },
1688 { 16, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "f9", "Freq 9" },
1690 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w1", "Wave 1" },
1691 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w2", "Wave 2" },
1692 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w3", "Wave 3" },
1693 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w4", "Wave 4" },
1694 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w5", "Wave 5" },
1695 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w6", "Wave 6" },
1696 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w7", "Wave 7" },
1697 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w8", "Wave 8" },
1698 { 0, 0, organ_enums::wave_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_wave_names
, "w9", "Wave 9" },
1700 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune1", "Detune 1" },
1701 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune2", "Detune 2" },
1702 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune3", "Detune 3" },
1703 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune4", "Detune 4" },
1704 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune5", "Detune 5" },
1705 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune6", "Detune 6" },
1706 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune7", "Detune 7" },
1707 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune8", "Detune 8" },
1708 { 0, -100,100, 401, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune9", "Detune 9" },
1710 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase1", "Phase 1" },
1711 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase2", "Phase 2" },
1712 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase3", "Phase 3" },
1713 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase4", "Phase 4" },
1714 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase5", "Phase 5" },
1715 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase6", "Phase 6" },
1716 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase7", "Phase 7" },
1717 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase8", "Phase 8" },
1718 { 0, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "phase9", "Phase 9" },
1720 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan1", "Pan 1" },
1721 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan2", "Pan 2" },
1722 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan3", "Pan 3" },
1723 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan4", "Pan 4" },
1724 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan5", "Pan 5" },
1725 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan6", "Pan 6" },
1726 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan7", "Pan 7" },
1727 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan8", "Pan 8" },
1728 { 0, -1, 1, 201, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pan9", "Pan 9" },
1730 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing1", "Routing 1" },
1731 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing2", "Routing 2" },
1732 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing3", "Routing 3" },
1733 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing4", "Routing 4" },
1734 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing5", "Routing 5" },
1735 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing6", "Routing 6" },
1736 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing7", "Routing 7" },
1737 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing8", "Routing 8" },
1738 { 0, 0, 2, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, organ_routing_names
, "routing9", "Routing 9" },
1740 { 96 + 12, 0, 127, 128, PF_INT
| PF_CTL_KNOB
| PF_UNIT_NOTE
, NULL
, "foldnote", "Foldover" },
1742 { 200, 10, 3000, 100, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "perc_decay", "P: Carrier Decay" },
1743 { 0.25, 0, 1, 100, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
, NULL
, "perc_level", "P: Level" },
1744 { 0, 0, organ_enums::wave_count_small
- 1, 1, PF_ENUM
| PF_CTL_COMBO
, organ_wave_names
, "perc_waveform", "P: Carrier Wave" },
1745 { 6, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "perc_harmonic", "P: Carrier Frq" },
1746 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "perc_vel2amp", "P: Vel->Amp" },
1748 { 200, 10, 3000, 100, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "perc_fm_decay", "P: Modulator Decay" },
1749 { 0, 0, 4, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "perc_fm_depth", "P: FM Depth" },
1750 { 0, 0, organ_enums::wave_count_small
- 1, 1, PF_ENUM
| PF_CTL_COMBO
, organ_wave_names
, "perc_fm_waveform", "P: Modulator Wave" },
1751 { 6, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "perc_fm_harmonic", "P: Modulator Frq" },
1752 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "perc_vel2fm", "P: Vel->FM" },
1754 { 0, 0, organ_enums::perctrig_count
- 1, 0, PF_ENUM
| PF_CTL_COMBO
, organ_percussion_trigger_names
, "perc_trigger", "P: Trigger" },
1755 { 90, 0,360, 361, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "perc_stereo", "P: Stereo Phase" },
1757 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, organ_filter_send_names
, "filter_chain", "Filter 1 To" },
1758 { 0, 0, 1, 0, PF_ENUM
| PF_CTL_COMBO
, organ_filter_type_names
, "filter1_type", "Filter 1 Type" },
1759 { 0.1, 0, 1, 100, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_PROP_OUTPUT_GAIN
| PF_PROP_GRAPH
, NULL
, "master", "Volume" },
1761 { 2000, 20, 20000, 100, PF_FLOAT
| PF_SCALE_LOG
| PF_UNIT_HZ
| PF_CTL_KNOB
, NULL
, "f1_cutoff", "F1 Cutoff" },
1762 { 2, 0.7, 8, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
, NULL
, "f1_res", "F1 Res" },
1763 { 8000, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "f1_env1", "F1 Env1" },
1764 { 0, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "f1_env2", "F1 Env2" },
1765 { 0, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "f1_env3", "F1 Env3" },
1766 { 0, 0, 2, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "f1_keyf", "F1 KeyFollow" },
1768 { 2000, 20, 20000, 100, PF_FLOAT
| PF_SCALE_LOG
| PF_UNIT_HZ
| PF_CTL_KNOB
, NULL
, "f2_cutoff", "F2 Cutoff" },
1769 { 2, 0.7, 8, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
, NULL
, "f2_res", "F2 Res" },
1770 { 0, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "f2_env1", "F2 Env1" },
1771 { 8000, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "f2_env2", "F2 Env2" },
1772 { 0, -10800,10800, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "f2_env3", "F2 Env3" },
1773 { 0, 0, 2, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "f2_keyf", "F2 KeyFollow" },
1775 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr_a", "EG1 Attack" },
1776 { 350, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr_d", "EG1 Decay" },
1777 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr_s", "EG1 Sustain" },
1778 { 50, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr_r", "EG1 Release" },
1779 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr_v", "EG1 VelMod" },
1780 { 0, 0, organ_enums::ampctl_count
- 1,
1781 0, PF_INT
| PF_CTL_COMBO
, organ_ampctl_names
, "eg1_amp_ctl", "EG1 To Amp"},
1783 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr2_a", "EG2 Attack" },
1784 { 350, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr2_d", "EG2 Decay" },
1785 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr2_s", "EG2 Sustain" },
1786 { 50, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr2_r", "EG2 Release" },
1787 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr2_v", "EG2 VelMod" },
1788 { 0, 0, organ_enums::ampctl_count
- 1,
1789 0, PF_INT
| PF_CTL_COMBO
, organ_ampctl_names
, "eg2_amp_ctl", "EG2 To Amp"},
1791 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr3_a", "EG3 Attack" },
1792 { 350, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr3_d", "EG3 Decay" },
1793 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr3_s", "EG3 Sustain" },
1794 { 50, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr3_r", "EG3 Release" },
1795 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr3_v", "EG3 VelMod" },
1796 { 0, 0, organ_enums::ampctl_count
- 1,
1797 0, PF_INT
| PF_CTL_COMBO
, organ_ampctl_names
, "eg3_amp_ctl", "EG3 To Amp"},
1799 { 6.6, 0.01, 240, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "vib_rate", "Vib Rate" },
1800 { 1.0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "vib_amt", "Vib Mod Amt" },
1801 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "vib_wet", "Vib Wet" },
1802 { 180, 0, 360, 0, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_DEG
, NULL
, "vib_phase", "Vib Stereo" },
1803 { organ_enums::lfomode_global
, 0, organ_enums::lfomode_count
- 1, 0, PF_ENUM
| PF_CTL_COMBO
, organ_vibrato_mode_names
, "vib_mode", "Vib Mode" },
1804 { organ_enums::lfotype_cv3
, 0, organ_enums::lfotype_count
- 1, 0, PF_ENUM
| PF_CTL_COMBO
, organ_vibrato_type_names
, "vib_type", "Vib Type" },
1805 // { 0, 0, organ_enums::ampctl_count - 1,
1806 // 0, PF_INT | PF_CTL_COMBO, organ_ampctl_names, "vel_amp_ctl", "Vel To Amp"},
1808 { -12, -24, 24, 49, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_SEMITONES
, NULL
, "transpose", "Transpose" },
1809 { 0, -100, 100, 201, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "detune", "Detune" },
1811 { 16, 1, 32, 32, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
, NULL
, "polyphony", "Polyphony" },
1813 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "quad_env", "Quadratic AmpEnv" },
1815 { 200, 0, 2400, 25, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "pbend_range", "PBend Range" },
1817 { 80, 20, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "bass_freq", "Bass Freq" },
1818 { 1, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "bass_gain", "Bass Gain" },
1819 { 12000, 20, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "treble_freq", "Treble Freq" },
1820 { 1, 0.1, 10, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "treble_gain", "Treble Gain" },
1823 void organ_metadata::get_configure_vars(vector
<string
> &names
) const
1825 names
.push_back("map_curve");
1828 ////////////////////////////////////////////////////////////////////////////
1830 const char *fluidsynth_interpolation_names
[] = { "None (zero-hold)", "Linear", "Cubic", "7-point" };
1832 CALF_PORT_NAMES(fluidsynth
) = {
1836 CALF_PLUGIN_INFO(fluidsynth
) = { 0x8700, "Fluidsynth", "Calf Fluidsynth", "Calf Studio Gear / FluidSynth Team / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "InstrumentPlugin" };
1838 CALF_PORT_PROPS(fluidsynth
) = {
1839 { 0.5, 0, 1, 100, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_PROP_OUTPUT_GAIN
, NULL
, "master", "Volume" },
1840 { 2, 0, 3, 0, PF_ENUM
| PF_CTL_COMBO
, fluidsynth_interpolation_names
, "interpolation", "Interpolation" },
1841 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "reverb", "Reverb" },
1842 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "chorus", "Chorus" },
1845 void fluidsynth_metadata::get_configure_vars(vector
<string
> &names
) const
1847 names
.push_back("soundfont");
1848 names
.push_back("preset_key_set");
1849 for (int i
= 1; i
< 16; i
++)
1850 names
.push_back("preset_key_set" + calf_utils::i2s(i
+ 1));
1853 ////////////////////////////////////////////////////////////////////////////
1855 const char *wavetable_names
[] = {
1887 static const char *wavetable_mod_src_names
[] = {
1901 static const char *wavetable_mod_dest_names
[] = {
1904 "Osc Mix Ratio (%)",
1915 CALF_PORT_NAMES(wavetable
) = {
1919 CALF_PLUGIN_INFO(wavetable
) = { 0x8701, "Wavetable", "Calf Wavetable", "Calf Studio Gear / Krzysztof Foltman", calf_plugins::calf_copyright_info
, "InstrumentPlugin" };
1921 CALF_PORT_PROPS(wavetable
) = {
1922 { wavetable_metadata::wt_count
- 1, 0, wavetable_metadata::wt_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, wavetable_names
, "o1wave", "Osc1 Wave" },
1923 { 0.2, -1, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "o1offset", "Osc1 Ctl"},
1924 { 0, -48, 48, 48*2+1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_SEMITONES
, NULL
, "o1trans", "Osc1 Transpose" },
1925 { 6, -100, 100, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "o1detune", "Osc1 Detune" },
1926 { 0.1, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "o1level", "Osc1 Level" },
1928 { 0, 0, wavetable_metadata::wt_count
- 1, 0, PF_ENUM
| PF_SCALE_LINEAR
| PF_CTL_COMBO
, wavetable_names
, "o2wave", "Osc2 Wave" },
1929 { 0.4, -1, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "o2offset", "Osc2 Ctl"},
1930 { 0, -48, 48, 48*2+1, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_SEMITONES
, NULL
, "o2trans", "Osc2 Transpose" },
1931 { -6, -100, 100, 0, PF_INT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "o2detune", "Osc2 Detune" },
1932 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_KNOB
| PF_UNIT_COEF
| PF_PROP_NOBOUNDS
, NULL
, "o2level", "Osc2 Level" },
1934 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr_a", "EG1 Attack" },
1935 { 350, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr_d", "EG1 Decay" },
1936 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr_s", "EG1 Sustain" },
1937 { 0, -10000,10000, 21, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr_f", "EG1 Fade" },
1938 { 50, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr_r", "EG1 Release" },
1939 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr_v", "EG1 VelMod" },
1941 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr2_a", "EG2 Attack" },
1942 { 350, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr2_d", "EG2 Decay" },
1943 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr2_s", "EG2 Sustain" },
1944 { 0, -10000,10000, 21, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr2_f", "EG2 Fade" },
1945 { 50, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr2_r", "EG2 Release" },
1946 { 1, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr2_v", "EG2 VelMod" },
1948 { 1, 1,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr3_a", "EG3 Attack" },
1949 { 350, 10,20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr3_d", "EG3 Decay" },
1950 { 0.5, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr3_s", "EG3 Sustain" },
1951 { 0, -10000,10000, 21, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr3_f", "EG3 Fade" },
1952 { 50, 10, 20000, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_MSEC
, NULL
, "adsr3_r", "EG3 Release" },
1953 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_PERC
, NULL
, "adsr3_v", "EG3 VelMod" },
1955 { 200, 0, 2400, 25, PF_FLOAT
| PF_SCALE_LINEAR
| PF_CTL_KNOB
| PF_UNIT_CENTS
, NULL
, "pbend_range", "PBend Range" },
1956 { 1, 0, 1, 0, PF_BOOL
| PF_CTL_TOGGLE
, NULL
, "eg1amp", "EG1->Amp" },
1957 { 5, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo1_rate", "LFO1 Rate" },
1958 { 0.25, 0.01, 20, 0, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "lfo2_rate", "LFO2 Rate" },
1962 wavetable_metadata::wavetable_metadata()
1963 : mm_metadata(mod_matrix_slots
, wavetable_mod_src_names
, wavetable_mod_dest_names
)
1967 void wavetable_metadata::get_configure_vars(std::vector
<std::string
> &names
) const
1969 mm_metadata
.get_configure_vars(names
);
1972 ////////////////////////////////////////////////////////////////////////////
1974 CALF_PORT_NAMES(pitch
) = {"In L", "In R", "Out L", "Out R"};
1975 CALF_PORT_PROPS(pitch
) = {
1976 { 0.9, 0.1, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_CTL_KNOB
, NULL
, "pd_threshold", "Pitch Det:Peak Threshold" },
1977 { 1, 1, 8, 3, PF_INT
| PF_CTL_KNOB
, NULL
, "pd_subdivide", "Pitch Det:Subdiv" },
1978 { 440, 427, 453, 0.1, PF_FLOAT
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "tune", "Tune" },
1979 { 0, 0, 127, 1, PF_INT
| PF_PROP_OUTPUT
, NULL
, "note", "MIDI Note" },
1980 { 0, -100, 100, 1, PF_FLOAT
| PF_PROP_OUTPUT
, NULL
, "cents", "Cents" },
1981 { 0, -1, 1, 0, PF_FLOAT
| PF_SCALE_PERC
| PF_PROP_OUTPUT
, NULL
, "clarity", "Clarity" },
1982 { 1, 1, 20000, 1, PF_FLOAT
| PF_PROP_OUTPUT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_HZ
, NULL
, "freq", "Frequency" },
1986 CALF_PLUGIN_INFO(pitch
) = { 0x85AA, "Pitch", "Calf Pitch Tols", "Calf Studio Gear", calf_plugins::calf_copyright_info
, "PitchPlugin" };
1988 ////////////////////////////////////////////////////////////////////////////
1990 CALF_PORT_NAMES(widgets
) = {"In L", "In R", "Out L", "Out R"};
1991 CALF_PORT_PROPS(widgets
) = {
1992 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_1", "Meter-1" },
1993 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_2", "Meter-2" },
1994 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_3", "Meter-3" },
1995 { 0, 0, 1, 0, PF_FLOAT
| PF_SCALE_GAIN
| PF_CTL_METER
| PF_CTLO_LABEL
| PF_UNIT_DB
| PF_PROP_OUTPUT
| PF_PROP_OPTIONAL
, NULL
, "meter_4", "Meter-4" },
1997 { 0, 100, 100, 0.1, PF_FLOAT
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "value_lin", "Value Linear" },
1998 { 0, 100, 100, 0.1, PF_FLOAT
| PF_SCALE_LOG
| PF_CTL_KNOB
| PF_UNIT_COEF
, NULL
, "value_log", "Value Logarithmic" },
2002 CALF_PLUGIN_INFO(widgets
) = { 0x85AB, "Widgets", "Calf Widget Test", "Calf Studio Gear", calf_plugins::calf_copyright_info
, "UtilityPlugin" };
2005 ////////////////////////////////////////////////////////////////////////////
2007 calf_plugins::plugin_registry::plugin_registry()
2009 #define PER_MODULE_ITEM(name, isSynth, jackname) plugins.push_back((new name##_metadata));
2010 #include <calf/modulelist.h>