2 * Audio module (plugin) metadata - header file
4 * Copyright (C) 2007-2008 Krzysztof Foltman
5 * Copyright (C) 2008 Thor Harald Johansen <thj@thj.no>
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General
18 * Public License along with this program; if not, write to the
19 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02111-1307, USA.
23 #ifndef __CALF_METADATA_H
24 #define __CALF_METADATA_H
28 #define MONO_VU_METER_PARAMS param_meter_in, param_meter_out, param_clip_in, param_clip_out
29 #define STEREO_VU_METER_PARAMS param_meter_inL, param_meter_inR, param_meter_outL, param_meter_outR, param_clip_inL, param_clip_inR, param_clip_outL, param_clip_outR
31 namespace calf_plugins
{
33 struct flanger_metadata
: public plugin_metadata
<flanger_metadata
>
36 enum { par_delay
, par_depth
, par_rate
, par_fb
, par_stereo
, par_reset
, par_amount
, par_dryamount
, param_count
};
37 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
38 PLUGIN_NAME_ID_LABEL("flanger", "flanger", "Flanger")
41 struct phaser_metadata
: public plugin_metadata
<phaser_metadata
>
43 enum { par_freq
, par_depth
, par_rate
, par_fb
, par_stages
, par_stereo
, par_reset
, par_amount
, par_dryamount
, param_count
};
44 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
45 PLUGIN_NAME_ID_LABEL("phaser", "phaser", "Phaser")
48 struct filter_metadata
: public plugin_metadata
<filter_metadata
>
50 enum { par_cutoff
, par_resonance
, par_mode
, par_inertia
, param_count
};
51 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, rt_capable
= true, require_midi
= false, support_midi
= false };
52 PLUGIN_NAME_ID_LABEL("filter", "filter", "Filter")
53 /// do not export mode and inertia as CVs, as those are settings and not parameters
54 bool is_cv(int param_no
) { return param_no
!= par_mode
&& param_no
!= par_inertia
; }
57 /// Filterclavier - metadata
58 struct filterclavier_metadata
: public plugin_metadata
<filterclavier_metadata
>
60 enum { par_transpose
, par_detune
, par_max_resonance
, par_mode
, par_inertia
, param_count
};
61 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, rt_capable
= true, require_midi
= true, support_midi
= true };
62 PLUGIN_NAME_ID_LABEL("filterclavier", "filterclavier", "Filterclavier")
63 /// do not export mode and inertia as CVs, as those are settings and not parameters
64 bool is_cv(int param_no
) { return param_no
!= par_mode
&& param_no
!= par_inertia
; }
67 struct reverb_metadata
: public plugin_metadata
<reverb_metadata
>
69 enum { par_clip
, par_meter_wet
, par_meter_out
, par_decay
, par_hfdamp
, par_roomsize
, par_diffusion
, par_amount
, par_dry
, par_predelay
, par_basscut
, par_treblecut
, param_count
};
70 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
71 PLUGIN_NAME_ID_LABEL("reverb", "reverb", "Reverb")
74 struct vintage_delay_metadata
: public plugin_metadata
<vintage_delay_metadata
>
76 enum { par_bpm
, par_bpm_host
, par_divide
, par_time_l
, par_time_r
, par_feedback
, par_amount
, par_mixmode
, par_medium
, par_dryamount
, par_width
, par_sync
, param_count
};
77 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, rt_capable
= true, support_midi
= false, require_midi
= false };
78 PLUGIN_NAME_ID_LABEL("vintagedelay", "vintagedelay", "Vintage Delay")
81 struct comp_delay_metadata
: public plugin_metadata
<comp_delay_metadata
>
83 enum { par_distance_mm
, par_distance_cm
, par_distance_m
, par_dry
, par_wet
, param_temp
, param_bypass
, param_count
};
84 enum { in_count
= 1, out_count
= 1, ins_optional
= 0, outs_optional
= 0, rt_capable
= true, support_midi
= false, require_midi
= false };
85 PLUGIN_NAME_ID_LABEL("compdelay", "compdelay", "Compensation Delay Line")
88 struct rotary_speaker_metadata
: public plugin_metadata
<rotary_speaker_metadata
>
91 enum { par_speed
, par_spacing
, par_shift
, par_moddepth
, par_treblespeed
, par_bassspeed
, par_micdistance
, par_reflection
, par_am_depth
, par_test
, par_meter_l
, par_meter_h
, param_count
};
92 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= false, rt_capable
= true };
93 PLUGIN_NAME_ID_LABEL("rotary_speaker", "rotaryspeaker", "Rotary Speaker")
96 /// A multitap stereo chorus thing - metadata
97 struct multichorus_metadata
: public plugin_metadata
<multichorus_metadata
>
100 enum { par_delay
, par_depth
, par_rate
, par_stereo
, par_voices
, par_vphase
, par_amount
, par_dryamount
, par_freq
, par_freq2
, par_q
, par_overlap
, param_count
};
101 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, rt_capable
= true, support_midi
= false, require_midi
= false };
102 PLUGIN_NAME_ID_LABEL("multichorus", "multichorus", "Multi Chorus")
111 /// Monosynth - metadata
112 struct monosynth_metadata
: public plugin_metadata
<monosynth_metadata
>
114 enum { wave_saw
, wave_sqr
, wave_pulse
, wave_sine
, wave_triangle
, wave_varistep
, wave_skewsaw
, wave_skewsqr
, wave_test1
, wave_test2
, wave_test3
, wave_test4
, wave_test5
, wave_test6
, wave_test7
, wave_test8
, wave_count
};
115 enum { flt_lp12
, flt_lp24
, flt_2lp12
, flt_hp12
, flt_lpbr
, flt_hpbr
, flt_bp6
, flt_2bp6
};
116 enum { par_wave1
, par_wave2
, par_pw1
, par_pw2
, par_detune
, par_osc2xpose
, par_oscmode
, par_oscmix
, par_filtertype
, par_cutoff
, par_resonance
, par_cutoffsep
, par_env1tocutoff
, par_env1tores
, par_env1toamp
,
117 par_env1attack
, par_env1decay
, par_env1sustain
, par_env1fade
, par_env1release
,
118 par_keyfollow
, par_legato
, par_portamento
, par_vel2filter
, par_vel2amp
, par_master
, par_pwhlrange
,
119 par_lforate
, par_lfodelay
, par_lfofilter
, par_lfopitch
, par_lfopw
, par_mwhl_lfo
, par_scaledetune
,
120 par_env2tocutoff
, par_env2tores
, par_env2toamp
,
121 par_env2attack
, par_env2decay
, par_env2sustain
, par_env2fade
, par_env2release
,
122 par_stretch1
, par_window1
,
123 par_lfo1trig
, par_lfo2trig
,
124 par_lfo2rate
, par_lfo2delay
,
125 par_o2unison
, par_o2unisonfrq
,
128 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= true };
129 enum { step_size
= 64, step_shift
= 6 };
130 enum { mod_matrix_slots
= 10 };
154 moddest_o2unisondetune
,
157 PLUGIN_NAME_ID_LABEL("monosynth", "monosynth", "Monosynth")
159 mod_matrix_metadata mm_metadata
;
161 monosynth_metadata();
162 /// Lookup of table edit interface
163 virtual const table_metadata_iface
*get_table_metadata_iface(const char *key
) const { if (!strcmp(key
, "mod_matrix")) return &mm_metadata
; else return NULL
; }
164 void get_configure_vars(std::vector
<std::string
> &names
) const;
167 /// Thor's compressor - metadata
168 /// Added some meters and stripped the weighting part
169 struct compressor_metadata
: public plugin_metadata
<compressor_metadata
>
171 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
172 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
173 param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_compression
, param_mix
,
175 PLUGIN_NAME_ID_LABEL("compressor", "compressor", "Compressor")
178 /// Damien's compressor - metadata
179 /// Added some meters and stripped the weighting part
180 struct monocompressor_metadata
: public plugin_metadata
<monocompressor_metadata
>
182 enum { in_count
= 1, out_count
= 1, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
183 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
184 param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_compression
, param_mix
,
186 PLUGIN_NAME_ID_LABEL("monocompressor", "monocompressor", "Mono Compressor")
189 /// Markus's sidechain compressor - metadata
190 struct sidechaincompressor_metadata
: public plugin_metadata
<sidechaincompressor_metadata
>
192 enum { in_count
= 4, out_count
= 2, ins_optional
= 2, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
193 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
194 param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_compression
,
195 param_sc_mode
, param_f1_freq
, param_f2_freq
, param_f1_level
, param_f2_level
,
196 param_sc_listen
, param_f1_active
, param_f2_active
, param_sc_route
, param_sc_level
, param_mix
, param_count
};
197 PLUGIN_NAME_ID_LABEL("sidechaincompressor", "sidechaincompressor", "Sidechain Compressor")
200 /// Markus's multibandcompressor - metadata
201 struct multibandcompressor_metadata
: public plugin_metadata
<multibandcompressor_metadata
>
203 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
204 enum { param_bypass
, param_level_in
, param_level_out
,
205 STEREO_VU_METER_PARAMS
,
206 param_freq0
, param_freq1
, param_freq2
,
208 param_threshold0
, param_ratio0
, param_attack0
, param_release0
, param_makeup0
, param_knee0
,
209 param_detection0
, param_compression0
, param_output0
, param_bypass0
, param_solo0
,
210 param_threshold1
, param_ratio1
, param_attack1
, param_release1
, param_makeup1
, param_knee1
,
211 param_detection1
, param_compression1
, param_output1
, param_bypass1
, param_solo1
,
212 param_threshold2
, param_ratio2
, param_attack2
, param_release2
, param_makeup2
, param_knee2
,
213 param_detection2
, param_compression2
, param_output2
, param_bypass2
, param_solo2
,
214 param_threshold3
, param_ratio3
, param_attack3
, param_release3
, param_makeup3
, param_knee3
,
215 param_detection3
, param_compression3
, param_output3
, param_bypass3
, param_solo3
,
218 PLUGIN_NAME_ID_LABEL("multibandcompressor", "multibandcompressor", "Multiband Compressor")
221 /// Markus's deesser - metadata
222 struct deesser_metadata
: public plugin_metadata
<deesser_metadata
>
224 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
225 enum { param_bypass
, param_detected
, param_compression
, param_detected_led
, param_clip_out
,
226 param_detection
, param_mode
,
227 param_threshold
, param_ratio
, param_laxity
, param_makeup
,
228 param_f1_freq
, param_f2_freq
, param_f1_level
, param_f2_level
, param_f2_q
,
229 param_sc_listen
, param_count
};
230 PLUGIN_NAME_ID_LABEL("deesser", "deesser", "Deesser")
233 /// Damiens' Gate - metadata
234 /// Added some meters and stripped the weighting part
235 struct gate_metadata
: public plugin_metadata
<gate_metadata
>
237 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
238 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
239 param_range
, param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_gating
,
241 PLUGIN_NAME_ID_LABEL("gate", "gate", "Gate")
244 /// Markus's sidechain gate - metadata
245 struct sidechaingate_metadata
: public plugin_metadata
<sidechaingate_metadata
>
247 enum { in_count
= 4, out_count
= 2, ins_optional
= 2, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
248 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
249 param_range
, param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_gating
,
250 param_sc_mode
, param_f1_freq
, param_f2_freq
, param_f1_level
, param_f2_level
,
251 param_sc_listen
, param_f1_active
, param_f2_active
, param_sc_route
, param_sc_level
, param_count
};
252 PLUGIN_NAME_ID_LABEL("sidechaingate", "sidechaingate", "Sidechain Gate")
255 /// Markus's multiband gate - metadata
256 struct multibandgate_metadata
: public plugin_metadata
<multibandgate_metadata
>
258 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
259 enum { param_bypass
, param_level_in
, param_level_out
,
260 STEREO_VU_METER_PARAMS
,
261 param_freq0
, param_freq1
, param_freq2
,
263 param_range0
, param_threshold0
, param_ratio0
, param_attack0
, param_release0
, param_makeup0
, param_knee0
,
264 param_detection0
, param_gating0
, param_output0
, param_bypass0
, param_solo0
,
265 param_range1
, param_threshold1
, param_ratio1
, param_attack1
, param_release1
, param_makeup1
, param_knee1
,
266 param_detection1
, param_gating1
, param_output1
, param_bypass1
, param_solo1
,
267 param_range2
, param_threshold2
, param_ratio2
, param_attack2
, param_release2
, param_makeup2
, param_knee2
,
268 param_detection2
, param_gating2
, param_output2
, param_bypass2
, param_solo2
,
269 param_range3
, param_threshold3
, param_ratio3
, param_attack3
, param_release3
, param_makeup3
, param_knee3
,
270 param_detection3
, param_gating3
, param_output3
, param_bypass3
, param_solo3
,
273 PLUGIN_NAME_ID_LABEL("multibandgate", "multibandgate", "Multiband Gate")
276 /// Markus's limiter - metadata
277 struct limiter_metadata
: public plugin_metadata
<limiter_metadata
>
279 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
280 enum { param_bypass
, param_level_in
, param_level_out
,
281 STEREO_VU_METER_PARAMS
,
282 param_limit
, param_attack
, param_release
,
284 param_asc
, param_asc_led
, param_asc_coeff
,
287 PLUGIN_NAME_ID_LABEL("limiter", "limiter", "Limiter")
290 /// Markus's multibandlimiter - metadata
291 struct multibandlimiter_metadata
: public plugin_metadata
<multibandlimiter_metadata
>
293 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
294 enum { param_bypass
, param_level_in
, param_level_out
,
295 STEREO_VU_METER_PARAMS
,
296 param_freq0
, param_freq1
, param_freq2
,
298 param_limit
, param_attack
, param_release
, param_minrel
,
299 param_att0
, param_att1
, param_att2
, param_att3
,
300 param_weight0
, param_weight1
, param_weight2
, param_weight3
,
301 param_release0
, param_release1
, param_release2
, param_release3
,
302 param_solo0
, param_solo1
, param_solo2
, param_solo3
,
303 param_effrelease0
, param_effrelease1
, param_effrelease2
, param_effrelease3
,
304 param_asc
, param_asc_led
, param_asc_coeff
,
307 PLUGIN_NAME_ID_LABEL("multibandlimiter", "multibandlimiter", "Multiband Limiter")
310 /// Damien's RIAA and CD Emphasis - metadata
311 struct emphasis_metadata
: public plugin_metadata
<emphasis_metadata
>
313 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
314 enum { param_bypass
, param_level_in
, param_level_out
, STEREO_VU_METER_PARAMS
, param_mode
, param_type
,
316 PLUGIN_NAME_ID_LABEL("emphasis", "emphasis", "Emphasis")
319 /// Markus's 5-band EQ - metadata
320 struct equalizer5band_metadata
: public plugin_metadata
<equalizer5band_metadata
>
322 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
323 enum { param_bypass
, param_level_in
, param_level_out
,
324 STEREO_VU_METER_PARAMS
,
325 param_ls_active
, param_ls_level
, param_ls_freq
,
326 param_hs_active
, param_hs_level
, param_hs_freq
,
327 param_p1_active
, param_p1_level
, param_p1_freq
, param_p1_q
,
328 param_p2_active
, param_p2_level
, param_p2_freq
, param_p2_q
,
329 param_p3_active
, param_p3_level
, param_p3_freq
, param_p3_q
,
330 param_individuals
, param_zoom
, param_analyzer_active
, param_analyzer_mode
,
332 // dummy parameter numbers, shouldn't be used EVER, they're only there to avoid pushing LP/HP filters to a separate class
333 // and potentially making inlining and optimization harder for the compiler
334 enum { param_lp_active
= 0xDEADBEEF, param_hp_active
, param_hp_mode
, param_lp_mode
, param_hp_freq
, param_lp_freq
};
335 enum { PeakBands
= 3, first_graph_param
= param_ls_active
, last_graph_param
= param_p3_q
};
336 PLUGIN_NAME_ID_LABEL("equalizer5band", "eq5", "Equalizer 5 Band")
339 /// Markus's 8-band EQ - metadata
340 struct equalizer8band_metadata
: public plugin_metadata
<equalizer8band_metadata
>
342 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
343 enum { param_bypass
, param_level_in
, param_level_out
,
344 STEREO_VU_METER_PARAMS
,
345 param_hp_active
, param_hp_freq
, param_hp_mode
,
346 param_lp_active
, param_lp_freq
, param_lp_mode
,
347 param_ls_active
, param_ls_level
, param_ls_freq
,
348 param_hs_active
, param_hs_level
, param_hs_freq
,
349 param_p1_active
, param_p1_level
, param_p1_freq
, param_p1_q
,
350 param_p2_active
, param_p2_level
, param_p2_freq
, param_p2_q
,
351 param_p3_active
, param_p3_level
, param_p3_freq
, param_p3_q
,
352 param_p4_active
, param_p4_level
, param_p4_freq
, param_p4_q
,
353 param_individuals
, param_zoom
, param_analyzer_active
, param_analyzer_mode
,
355 enum { PeakBands
= 4, first_graph_param
= param_hp_active
, last_graph_param
= param_p4_q
};
356 PLUGIN_NAME_ID_LABEL("equalizer8band", "eq8", "Equalizer 8 Band")
358 /// Markus's 12-band EQ - metadata
359 struct equalizer12band_metadata
: public plugin_metadata
<equalizer12band_metadata
>
361 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
362 enum { param_bypass
, param_level_in
, param_level_out
,
363 STEREO_VU_METER_PARAMS
,
364 param_hp_active
, param_hp_freq
, param_hp_mode
,
365 param_lp_active
, param_lp_freq
, param_lp_mode
,
366 param_ls_active
, param_ls_level
, param_ls_freq
,
367 param_hs_active
, param_hs_level
, param_hs_freq
,
368 param_p1_active
, param_p1_level
, param_p1_freq
, param_p1_q
,
369 param_p2_active
, param_p2_level
, param_p2_freq
, param_p2_q
,
370 param_p3_active
, param_p3_level
, param_p3_freq
, param_p3_q
,
371 param_p4_active
, param_p4_level
, param_p4_freq
, param_p4_q
,
372 param_p5_active
, param_p5_level
, param_p5_freq
, param_p5_q
,
373 param_p6_active
, param_p6_level
, param_p6_freq
, param_p6_q
,
374 param_p7_active
, param_p7_level
, param_p7_freq
, param_p7_q
,
375 param_p8_active
, param_p8_level
, param_p8_freq
, param_p8_q
,
376 param_individuals
, param_zoom
, param_analyzer_active
, param_analyzer_mode
,
378 enum { PeakBands
= 8, first_graph_param
= param_hp_active
, last_graph_param
= param_p8_q
};
379 PLUGIN_NAME_ID_LABEL("equalizer12band", "eq12", "Equalizer 12 Band")
382 struct xover2_metadata
: public plugin_metadata
<xover2_metadata
>
384 enum { in_count
= 2, out_count
= 4, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
385 enum { param_level
, param_meter_0
, param_meter_1
, param_mode
,
387 param_level1
, param_active1
, param_phase1
, param_delay1
, param_meter_01
, param_meter_11
,
388 param_level2
, param_active2
, param_phase2
, param_delay2
, param_meter_02
, param_meter_12
,
390 enum { channels
= 2, bands
= 2 };
391 PLUGIN_NAME_ID_LABEL("xover2band", "xover2", "X-Over 2 Band")
393 struct xover3_metadata
: public plugin_metadata
<xover3_metadata
>
395 enum { in_count
= 2, out_count
= 6, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
396 enum { param_level
, param_meter_0
, param_meter_1
, param_mode
,
397 param_freq0
, param_freq1
,
398 param_level1
, param_active1
, param_phase1
, param_delay1
, param_meter_01
, param_meter_11
,
399 param_level2
, param_active2
, param_phase2
, param_delay2
, param_meter_02
, param_meter_12
,
400 param_level3
, param_active3
, param_phase3
, param_delay3
, param_meter_03
, param_meter_13
,
402 enum { channels
= 2, bands
= 3 };
403 PLUGIN_NAME_ID_LABEL("xover3band", "xover3", "X-Over 3 Band")
405 struct xover4_metadata
: public plugin_metadata
<xover4_metadata
>
407 enum { in_count
= 2, out_count
= 8, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
408 enum { param_level
, param_meter_0
, param_meter_1
, param_mode
,
409 param_freq0
, param_freq1
, param_freq2
,
410 param_level1
, param_active1
, param_phase1
, param_delay1
, param_meter_01
, param_meter_11
,
411 param_level2
, param_active2
, param_phase2
, param_delay2
, param_meter_02
, param_meter_12
,
412 param_level3
, param_active3
, param_phase3
, param_delay3
, param_meter_03
, param_meter_13
,
413 param_level4
, param_active4
, param_phase4
, param_delay4
, param_meter_04
, param_meter_14
,
415 enum { channels
= 2, bands
= 4 };
416 PLUGIN_NAME_ID_LABEL("xover4band", "xover4", "X-Over 4 Band")
419 /// Markus and Chrischis Vocoder - metadata
420 struct vocoder_metadata
: public plugin_metadata
<vocoder_metadata
>
422 enum { in_count
= 4, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
423 enum { param_bypass
, param_link
, param_detectors
,
424 param_carrier_in
, param_carrier_inL
, param_carrier_inR
, param_carrier_clip_inL
, param_carrier_clip_inR
,
425 param_mod_in
, param_mod_inL
, param_mod_inR
, param_mod_clip_inL
, param_mod_clip_inR
,
426 param_out
, param_outL
, param_outR
, param_clip_outL
, param_clip_outR
,
427 param_carrier
, param_mod
, param_proc
, param_bands
, param_hiq
,
428 param_attack
, param_release
, param_analyzer
,
429 param_volume0
, param_pan0
, param_noise0
, param_mod0
, param_active0
, param_solo0
, param_level0
,
430 param_volume1
, param_pan1
, param_noise1
, param_mod1
, param_active1
, param_solo1
, param_level1
,
431 param_volume2
, param_pan2
, param_noise2
, param_mod2
, param_active2
, param_solo2
, param_level2
,
432 param_volume3
, param_pan3
, param_noise3
, param_mod3
, param_active3
, param_solo3
, param_level3
,
433 param_volume4
, param_pan4
, param_noise4
, param_mod4
, param_active4
, param_solo4
, param_level4
,
434 param_volume5
, param_pan5
, param_noise5
, param_mod5
, param_active5
, param_solo5
, param_level5
,
435 param_volume6
, param_pan6
, param_noise6
, param_mod6
, param_active6
, param_solo6
, param_level6
,
436 param_volume7
, param_pan7
, param_noise7
, param_mod7
, param_active7
, param_solo7
, param_level7
,
437 param_volume8
, param_pan8
, param_noise8
, param_mod8
, param_active8
, param_solo8
, param_level8
,
438 param_volume9
, param_pan9
, param_noise9
, param_mod9
, param_active9
, param_solo9
, param_level9
,
439 param_volume10
, param_pan10
, param_noise10
, param_mod10
, param_active10
, param_solo10
, param_level10
,
440 param_volume11
, param_pan11
, param_noise11
, param_mod11
, param_active11
, param_solo11
, param_level11
,
441 param_volume12
, param_pan12
, param_noise12
, param_mod12
, param_active12
, param_solo12
, param_level12
,
442 param_volume13
, param_pan13
, param_noise13
, param_mod13
, param_active13
, param_solo13
, param_level13
,
443 param_volume14
, param_pan14
, param_noise14
, param_mod14
, param_active14
, param_solo14
, param_level14
,
444 param_volume15
, param_pan15
, param_noise15
, param_mod15
, param_active15
, param_solo15
, param_level15
,
445 param_volume16
, param_pan16
, param_noise16
, param_mod16
, param_active16
, param_solo16
, param_level16
,
446 param_volume17
, param_pan17
, param_noise17
, param_mod17
, param_active17
, param_solo17
, param_level17
,
447 param_volume18
, param_pan18
, param_noise18
, param_mod18
, param_active18
, param_solo18
, param_level18
,
448 param_volume19
, param_pan19
, param_noise19
, param_mod19
, param_active19
, param_solo19
, param_level19
,
449 param_volume20
, param_pan20
, param_noise20
, param_mod20
, param_active20
, param_solo20
, param_level20
,
450 param_volume21
, param_pan21
, param_noise21
, param_mod21
, param_active21
, param_solo21
, param_level21
,
451 param_volume22
, param_pan22
, param_noise22
, param_mod22
, param_active22
, param_solo22
, param_level22
,
452 param_volume23
, param_pan23
, param_noise23
, param_mod23
, param_active23
, param_solo23
, param_level23
,
453 param_volume24
, param_pan24
, param_noise24
, param_mod24
, param_active24
, param_solo24
, param_level24
,
454 param_volume25
, param_pan25
, param_noise25
, param_mod25
, param_active25
, param_solo25
, param_level25
,
455 param_volume26
, param_pan26
, param_noise26
, param_mod26
, param_active26
, param_solo26
, param_level26
,
456 param_volume27
, param_pan27
, param_noise27
, param_mod27
, param_active27
, param_solo27
, param_level27
,
457 param_volume28
, param_pan28
, param_noise28
, param_mod28
, param_active28
, param_solo28
, param_level28
,
458 param_volume29
, param_pan29
, param_noise29
, param_mod29
, param_active29
, param_solo29
, param_level29
,
459 param_volume30
, param_pan30
, param_noise30
, param_mod30
, param_active30
, param_solo30
, param_level30
,
460 param_volume31
, param_pan31
, param_noise31
, param_mod31
, param_active31
, param_solo31
, param_level31
,
462 enum { band_params
= 7 };
463 PLUGIN_NAME_ID_LABEL("vocoder", "vocoder", "Vocoder")
466 /// Markus's Pulsator - metadata
467 struct pulsator_metadata
: public plugin_metadata
<pulsator_metadata
>
469 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
470 enum { param_bypass
, param_level_in
, param_level_out
, STEREO_VU_METER_PARAMS
,
471 param_mode
, param_freq
, param_amount
, param_offset
, param_mono
, param_reset
, param_count
};
472 PLUGIN_NAME_ID_LABEL("pulsator", "pulsator", "Pulsator")
475 /// Markus's Saturator - metadata
476 struct saturator_metadata
: public plugin_metadata
<saturator_metadata
>
478 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
479 enum { param_bypass
, param_level_in
, param_level_out
, param_mix
, MONO_VU_METER_PARAMS
, param_drive
, param_blend
, param_meter_drive
,
480 param_lp_pre_freq
, param_hp_pre_freq
, param_lp_post_freq
, param_hp_post_freq
,
481 param_p_freq
, param_p_level
, param_p_q
, param_count
};
482 PLUGIN_NAME_ID_LABEL("saturator", "saturator", "Saturator")
484 /// Markus's Exciter - metadata
485 struct exciter_metadata
: public plugin_metadata
<exciter_metadata
>
487 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
488 enum { param_bypass
, param_level_in
, param_level_out
, param_amount
, MONO_VU_METER_PARAMS
, param_drive
, param_blend
, param_meter_drive
,
489 param_freq
, param_listen
, param_ceil_active
, param_ceil
, param_count
};
490 PLUGIN_NAME_ID_LABEL("exciter", "exciter", "Exciter")
492 /// Markus's Bass Enhancer - metadata
493 struct bassenhancer_metadata
: public plugin_metadata
<bassenhancer_metadata
>
495 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
496 enum { param_bypass
, param_level_in
, param_level_out
, param_amount
, MONO_VU_METER_PARAMS
, param_drive
, param_blend
, param_meter_drive
,
497 param_freq
, param_listen
, param_floor_active
, param_floor
, param_count
};
498 PLUGIN_NAME_ID_LABEL("bassenhancer", "bassenhancer", "Bass Enhancer")
500 /// Markus's and Chrischi's Crusher Module - metadata
501 struct crusher_metadata
: public plugin_metadata
<crusher_metadata
>
503 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
504 enum { param_bypass
, param_level_in
, param_level_out
,
505 STEREO_VU_METER_PARAMS
,
506 param_bits
, param_morph
, param_mode
, param_dc
, param_aa
,
507 param_samples
, param_lfo
, param_lforange
, param_lforate
,
509 PLUGIN_NAME_ID_LABEL("crusher", "crusher", "Crusher")
511 /// Markus's Stereo Module - metadata
512 struct stereo_metadata
: public plugin_metadata
<stereo_metadata
>
514 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
515 enum { param_bypass
, param_level_in
, param_level_out
,
516 STEREO_VU_METER_PARAMS
, param_balance_in
, param_balance_out
, param_softclip
,
517 param_mute_l
, param_mute_r
, param_phase_l
, param_phase_r
,
518 param_mode
, param_slev
, param_sbal
, param_mlev
, param_mpan
,
519 param_stereo_base
, param_delay
,
520 param_meter_phase
, param_sc_level
, param_stereo_phase
,
522 PLUGIN_NAME_ID_LABEL("stereo", "stereo", "Stereo Tools")
524 /// Markus's Mono Module - metadata
525 struct mono_metadata
: public plugin_metadata
<mono_metadata
>
527 enum { in_count
= 1, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
528 enum { param_bypass
, param_level_in
, param_level_out
,
529 param_meter_in
, param_meter_outL
, param_meter_outR
, param_clip_in
,param_clip_outL
, param_clip_outR
,
530 param_balance_out
, param_softclip
,
531 param_mute_l
, param_mute_r
, param_phase_l
, param_phase_r
,
532 param_delay
, param_stereo_base
, param_stereo_phase
, param_sc_level
,
534 PLUGIN_NAME_ID_LABEL("mono", "mono", "Mono Input")
536 /// Markus's and Chrischi's Analyzer
537 struct analyzer_metadata
: public plugin_metadata
<analyzer_metadata
>
539 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
540 enum { param_meter_L
, param_meter_R
, param_clip_L
, param_clip_R
,
541 param_analyzer_level
, param_analyzer_mode
,
542 param_analyzer_scale
, param_analyzer_post
,
543 param_analyzer_view
, param_analyzer_smoothing
,
544 param_analyzer_windowing
,
545 param_analyzer_accuracy
, param_analyzer_speed
,
546 param_analyzer_display
, param_analyzer_hold
, param_analyzer_freeze
,
547 param_gonio_mode
, param_gonio_use_fade
, param_gonio_fade
, param_gonio_accuracy
, param_gonio_display
,
549 PLUGIN_NAME_ID_LABEL("analyzer", "analyzer", "Analyzer")
551 /// Markus's and Chrischi's Transient Designer
552 struct transientdesigner_metadata
: public plugin_metadata
<transientdesigner_metadata
>
554 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
555 enum { param_bypass
, param_level_in
, param_level_out
,
556 STEREO_VU_METER_PARAMS
, param_mix
,
557 param_attack_time
, param_attack_boost
,
558 param_sustain_threshold
, param_release_time
, param_release_boost
,
559 param_display
, param_display_threshold
, param_lookahead
,
560 param_input
, param_output
, param_envelope
, param_attack
, param_release
,
562 PLUGIN_NAME_ID_LABEL("transientdesigner", "transientdesigner", "Transient Designer")
564 /// Chrischi's and Markus's Tape Simulator
565 struct tapesimulator_metadata
: public plugin_metadata
<tapesimulator_metadata
>
567 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
568 enum { param_bypass
, param_level_in
, param_level_out
,
569 STEREO_VU_METER_PARAMS
, param_mix
, param_lp
,
570 param_speed
, param_noise
, param_mechanical
, param_magnetical
, param_post
,
572 PLUGIN_NAME_ID_LABEL("tapesimulator", "tapesimulator", "Tape Simulator")
574 /// Organ - enums for parameter IDs etc. (this mess is caused by organ split between plugin and generic class - which was
575 /// a bad design decision and should be sorted out some day) XXXKF @todo
579 par_drawbar1
, par_drawbar2
, par_drawbar3
, par_drawbar4
, par_drawbar5
, par_drawbar6
, par_drawbar7
, par_drawbar8
, par_drawbar9
,
580 par_frequency1
, par_frequency2
, par_frequency3
, par_frequency4
, par_frequency5
, par_frequency6
, par_frequency7
, par_frequency8
, par_frequency9
,
581 par_waveform1
, par_waveform2
, par_waveform3
, par_waveform4
, par_waveform5
, par_waveform6
, par_waveform7
, par_waveform8
, par_waveform9
,
582 par_detune1
, par_detune2
, par_detune3
, par_detune4
, par_detune5
, par_detune6
, par_detune7
, par_detune8
, par_detune9
,
583 par_phase1
, par_phase2
, par_phase3
, par_phase4
, par_phase5
, par_phase6
, par_phase7
, par_phase8
, par_phase9
,
584 par_pan1
, par_pan2
, par_pan3
, par_pan4
, par_pan5
, par_pan6
, par_pan7
, par_pan8
, par_pan9
,
585 par_routing1
, par_routing2
, par_routing3
, par_routing4
, par_routing5
, par_routing6
, par_routing7
, par_routing8
, par_routing9
,
587 par_percdecay
, par_perclevel
, par_percwave
, par_percharm
, par_percvel2amp
,
588 par_percfmdecay
, par_percfmdepth
, par_percfmwave
, par_percfmharm
, par_percvel2fm
,
589 par_perctrigger
, par_percstereo
,
593 par_f1cutoff
, par_f1res
, par_f1env1
, par_f1env2
, par_f1env3
, par_f1keyf
,
594 par_f2cutoff
, par_f2res
, par_f2env1
, par_f2env2
, par_f2env3
, par_f2keyf
,
595 par_eg1attack
, par_eg1decay
, par_eg1sustain
, par_eg1release
, par_eg1velscl
, par_eg1ampctl
,
596 par_eg2attack
, par_eg2decay
, par_eg2sustain
, par_eg2release
, par_eg2velscl
, par_eg2ampctl
,
597 par_eg3attack
, par_eg3decay
, par_eg3sustain
, par_eg3release
, par_eg3velscl
, par_eg3ampctl
,
598 par_lforate
, par_lfoamt
, par_lfowet
, par_lfophase
, par_lfomode
, par_lfotype
,
599 par_transpose
, par_detune
,
609 enum organ_waveform
{
611 wave_sinepl1
, wave_sinepl2
, wave_sinepl3
,
612 wave_ssaw
, wave_ssqr
, wave_spls
, wave_saw
, wave_sqr
, wave_pulse
, wave_sinepl05
, wave_sqr05
, wave_halfsin
, wave_clvg
, wave_bell
, wave_bell2
,
613 wave_w1
, wave_w2
, wave_w3
, wave_w4
, wave_w5
, wave_w6
, wave_w7
, wave_w8
, wave_w9
,
614 wave_dsaw
, wave_dsqr
, wave_dpls
,
616 wave_strings
= wave_count_small
,
625 wave_count_big
= wave_count
- wave_count_small
662 struct organ_metadata
: public organ_enums
, public plugin_metadata
<organ_metadata
>
664 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= true };
665 PLUGIN_NAME_ID_LABEL("organ", "organ", "Organ")
668 plugin_command_info
*get_commands();
669 void get_configure_vars(std::vector
<std::string
> &names
) const;
672 /// FluidSynth - metadata
673 struct fluidsynth_metadata
: public plugin_metadata
<fluidsynth_metadata
>
675 enum { par_master
, par_interpolation
, par_reverb
, par_chorus
, param_count
};
676 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= false };
677 PLUGIN_NAME_ID_LABEL("fluidsynth", "fluidsynth", "Fluidsynth")
680 void get_configure_vars(std::vector
<std::string
> &names
) const;
683 /// Wavetable - metadata
684 struct wavetable_metadata
: public plugin_metadata
<wavetable_metadata
>
745 par_o1wave
, par_o1offset
, par_o1transpose
, par_o1detune
, par_o1level
,
746 par_o2wave
, par_o2offset
, par_o2transpose
, par_o2detune
, par_o2level
,
747 par_eg1attack
, par_eg1decay
, par_eg1sustain
, par_eg1fade
, par_eg1release
, par_eg1velscl
,
748 par_eg2attack
, par_eg2decay
, par_eg2sustain
, par_eg2fade
, par_eg2release
, par_eg2velscl
,
749 par_eg3attack
, par_eg3decay
, par_eg3sustain
, par_eg3fade
, par_eg3release
, par_eg3velscl
,
755 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= true };
756 enum { mod_matrix_slots
= 10 };
757 enum { step_size
= 64 };
758 PLUGIN_NAME_ID_LABEL("wavetable", "wavetable", "Wavetable")
759 mod_matrix_metadata mm_metadata
;
761 wavetable_metadata();
762 /// Lookup of table edit interface
763 virtual const table_metadata_iface
*get_table_metadata_iface(const char *key
) const { if (!strcmp(key
, "mod_matrix")) return &mm_metadata
; else return NULL
; }
764 void get_configure_vars(std::vector
<std::string
> &names
) const;