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 haas_enhancer_metadata
: public plugin_metadata
<haas_enhancer_metadata
>
91 par_m_source
, par_m_phase
,
92 par_s_delay0
, par_s_balance0
, par_s_gain0
, par_s_phase0
,
93 par_s_delay1
, par_s_balance1
, par_s_gain1
, par_s_phase1
,
94 par_m_gain
, par_s_gain
,
97 mtr_m
, mtr_s_l
, mtr_s_r
,
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("haasenhancer", "haasenhancer", "HAAS Stereo Enhancer")
105 struct rotary_speaker_metadata
: public plugin_metadata
<rotary_speaker_metadata
>
108 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
};
109 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= false, rt_capable
= true };
110 PLUGIN_NAME_ID_LABEL("rotary_speaker", "rotaryspeaker", "Rotary Speaker")
113 /// A multitap stereo chorus thing - metadata
114 struct multichorus_metadata
: public plugin_metadata
<multichorus_metadata
>
117 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
};
118 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, rt_capable
= true, support_midi
= false, require_midi
= false };
119 PLUGIN_NAME_ID_LABEL("multichorus", "multichorus", "Multi Chorus")
128 /// Monosynth - metadata
129 struct monosynth_metadata
: public plugin_metadata
<monosynth_metadata
>
131 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
};
132 enum { flt_lp12
, flt_lp24
, flt_2lp12
, flt_hp12
, flt_lpbr
, flt_hpbr
, flt_bp6
, flt_2bp6
};
133 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
,
134 par_env1attack
, par_env1decay
, par_env1sustain
, par_env1fade
, par_env1release
,
135 par_keyfollow
, par_legato
, par_portamento
, par_vel2filter
, par_vel2amp
, par_master
, par_pwhlrange
,
136 par_lforate
, par_lfodelay
, par_lfofilter
, par_lfopitch
, par_lfopw
, par_mwhl_lfo
, par_scaledetune
,
137 par_env2tocutoff
, par_env2tores
, par_env2toamp
,
138 par_env2attack
, par_env2decay
, par_env2sustain
, par_env2fade
, par_env2release
,
139 par_stretch1
, par_window1
,
140 par_lfo1trig
, par_lfo2trig
,
141 par_lfo2rate
, par_lfo2delay
,
142 par_o2unison
, par_o2unisonfrq
,
145 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= true };
146 enum { step_size
= 64, step_shift
= 6 };
147 enum { mod_matrix_slots
= 10 };
171 moddest_o2unisondetune
,
174 PLUGIN_NAME_ID_LABEL("monosynth", "monosynth", "Monosynth")
176 mod_matrix_metadata mm_metadata
;
178 monosynth_metadata();
179 /// Lookup of table edit interface
180 virtual const table_metadata_iface
*get_table_metadata_iface(const char *key
) const { if (!strcmp(key
, "mod_matrix")) return &mm_metadata
; else return NULL
; }
181 void get_configure_vars(std::vector
<std::string
> &names
) const;
184 /// Thor's compressor - metadata
185 /// Added some meters and stripped the weighting part
186 struct compressor_metadata
: public plugin_metadata
<compressor_metadata
>
188 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
189 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
190 param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_compression
, param_mix
,
192 PLUGIN_NAME_ID_LABEL("compressor", "compressor", "Compressor")
195 /// Damien's compressor - metadata
196 /// Added some meters and stripped the weighting part
197 struct monocompressor_metadata
: public plugin_metadata
<monocompressor_metadata
>
199 enum { in_count
= 1, out_count
= 1, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
200 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
201 param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_compression
, param_mix
,
203 PLUGIN_NAME_ID_LABEL("monocompressor", "monocompressor", "Mono Compressor")
206 /// Markus's sidechain compressor - metadata
207 struct sidechaincompressor_metadata
: public plugin_metadata
<sidechaincompressor_metadata
>
209 enum { in_count
= 4, out_count
= 2, ins_optional
= 2, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
210 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
211 param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_compression
,
212 param_sc_mode
, param_f1_freq
, param_f2_freq
, param_f1_level
, param_f2_level
,
213 param_sc_listen
, param_f1_active
, param_f2_active
, param_sc_route
, param_sc_level
, param_mix
, param_count
};
214 PLUGIN_NAME_ID_LABEL("sidechaincompressor", "sidechaincompressor", "Sidechain Compressor")
217 /// Markus's multibandcompressor - metadata
218 struct multibandcompressor_metadata
: public plugin_metadata
<multibandcompressor_metadata
>
220 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
221 enum { param_bypass
, param_level_in
, param_level_out
,
222 STEREO_VU_METER_PARAMS
,
223 param_freq0
, param_freq1
, param_freq2
,
225 param_threshold0
, param_ratio0
, param_attack0
, param_release0
, param_makeup0
, param_knee0
,
226 param_detection0
, param_compression0
, param_output0
, param_bypass0
, param_solo0
,
227 param_threshold1
, param_ratio1
, param_attack1
, param_release1
, param_makeup1
, param_knee1
,
228 param_detection1
, param_compression1
, param_output1
, param_bypass1
, param_solo1
,
229 param_threshold2
, param_ratio2
, param_attack2
, param_release2
, param_makeup2
, param_knee2
,
230 param_detection2
, param_compression2
, param_output2
, param_bypass2
, param_solo2
,
231 param_threshold3
, param_ratio3
, param_attack3
, param_release3
, param_makeup3
, param_knee3
,
232 param_detection3
, param_compression3
, param_output3
, param_bypass3
, param_solo3
,
235 PLUGIN_NAME_ID_LABEL("multibandcompressor", "multibandcompressor", "Multiband Compressor")
238 /// Markus's deesser - metadata
239 struct deesser_metadata
: public plugin_metadata
<deesser_metadata
>
241 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
242 enum { param_bypass
, param_detected
, param_compression
, param_detected_led
, param_clip_out
,
243 param_detection
, param_mode
,
244 param_threshold
, param_ratio
, param_laxity
, param_makeup
,
245 param_f1_freq
, param_f2_freq
, param_f1_level
, param_f2_level
, param_f2_q
,
246 param_sc_listen
, param_count
};
247 PLUGIN_NAME_ID_LABEL("deesser", "deesser", "Deesser")
250 /// Damiens' Gate - metadata
251 /// Added some meters and stripped the weighting part
252 struct gate_metadata
: public plugin_metadata
<gate_metadata
>
254 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
255 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
256 param_range
, param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_gating
,
258 PLUGIN_NAME_ID_LABEL("gate", "gate", "Gate")
261 /// Markus's sidechain gate - metadata
262 struct sidechaingate_metadata
: public plugin_metadata
<sidechaingate_metadata
>
264 enum { in_count
= 4, out_count
= 2, ins_optional
= 2, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
265 enum { param_bypass
, param_level_in
, MONO_VU_METER_PARAMS
,
266 param_range
, param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_gating
,
267 param_sc_mode
, param_f1_freq
, param_f2_freq
, param_f1_level
, param_f2_level
,
268 param_sc_listen
, param_f1_active
, param_f2_active
, param_sc_route
, param_sc_level
, param_count
};
269 PLUGIN_NAME_ID_LABEL("sidechaingate", "sidechaingate", "Sidechain Gate")
272 /// Markus's multiband gate - metadata
273 struct multibandgate_metadata
: public plugin_metadata
<multibandgate_metadata
>
275 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
276 enum { param_bypass
, param_level_in
, param_level_out
,
277 STEREO_VU_METER_PARAMS
,
278 param_freq0
, param_freq1
, param_freq2
,
280 param_range0
, param_threshold0
, param_ratio0
, param_attack0
, param_release0
, param_makeup0
, param_knee0
,
281 param_detection0
, param_gating0
, param_output0
, param_bypass0
, param_solo0
,
282 param_range1
, param_threshold1
, param_ratio1
, param_attack1
, param_release1
, param_makeup1
, param_knee1
,
283 param_detection1
, param_gating1
, param_output1
, param_bypass1
, param_solo1
,
284 param_range2
, param_threshold2
, param_ratio2
, param_attack2
, param_release2
, param_makeup2
, param_knee2
,
285 param_detection2
, param_gating2
, param_output2
, param_bypass2
, param_solo2
,
286 param_range3
, param_threshold3
, param_ratio3
, param_attack3
, param_release3
, param_makeup3
, param_knee3
,
287 param_detection3
, param_gating3
, param_output3
, param_bypass3
, param_solo3
,
290 PLUGIN_NAME_ID_LABEL("multibandgate", "multibandgate", "Multiband Gate")
293 /// Markus's limiter - metadata
294 struct limiter_metadata
: public plugin_metadata
<limiter_metadata
>
296 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
297 enum { param_bypass
, param_level_in
, param_level_out
,
298 STEREO_VU_METER_PARAMS
,
299 param_limit
, param_attack
, param_release
,
301 param_asc
, param_asc_led
, param_asc_coeff
,
304 PLUGIN_NAME_ID_LABEL("limiter", "limiter", "Limiter")
307 /// Markus's multibandlimiter - metadata
308 struct multibandlimiter_metadata
: public plugin_metadata
<multibandlimiter_metadata
>
310 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
311 enum { param_bypass
, param_level_in
, param_level_out
,
312 STEREO_VU_METER_PARAMS
,
313 param_freq0
, param_freq1
, param_freq2
,
315 param_limit
, param_attack
, param_release
, param_minrel
,
316 param_att0
, param_att1
, param_att2
, param_att3
,
317 param_weight0
, param_weight1
, param_weight2
, param_weight3
,
318 param_release0
, param_release1
, param_release2
, param_release3
,
319 param_solo0
, param_solo1
, param_solo2
, param_solo3
,
320 param_effrelease0
, param_effrelease1
, param_effrelease2
, param_effrelease3
,
321 param_asc
, param_asc_led
, param_asc_coeff
,
324 PLUGIN_NAME_ID_LABEL("multibandlimiter", "multibandlimiter", "Multiband Limiter")
327 /// Damien's RIAA and CD Emphasis - metadata
328 struct emphasis_metadata
: public plugin_metadata
<emphasis_metadata
>
330 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
331 enum { param_bypass
, param_level_in
, param_level_out
, STEREO_VU_METER_PARAMS
, param_mode
, param_type
,
333 PLUGIN_NAME_ID_LABEL("emphasis", "emphasis", "Emphasis")
336 /// Markus's 5-band EQ - metadata
337 struct equalizer5band_metadata
: public plugin_metadata
<equalizer5band_metadata
>
339 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
340 enum { param_bypass
, param_level_in
, param_level_out
,
341 STEREO_VU_METER_PARAMS
,
342 param_ls_active
, param_ls_level
, param_ls_freq
,
343 param_hs_active
, param_hs_level
, param_hs_freq
,
344 param_p1_active
, param_p1_level
, param_p1_freq
, param_p1_q
,
345 param_p2_active
, param_p2_level
, param_p2_freq
, param_p2_q
,
346 param_p3_active
, param_p3_level
, param_p3_freq
, param_p3_q
,
347 param_individuals
, param_zoom
, param_analyzer_active
, param_analyzer_mode
,
349 // dummy parameter numbers, shouldn't be used EVER, they're only there to avoid pushing LP/HP filters to a separate class
350 // and potentially making inlining and optimization harder for the compiler
351 enum { param_lp_active
= 0xDEADBEEF, param_hp_active
, param_hp_mode
, param_lp_mode
, param_hp_freq
, param_lp_freq
};
352 enum { PeakBands
= 3, first_graph_param
= param_ls_active
, last_graph_param
= param_p3_q
};
353 PLUGIN_NAME_ID_LABEL("equalizer5band", "eq5", "Equalizer 5 Band")
356 /// Markus's 8-band EQ - metadata
357 struct equalizer8band_metadata
: public plugin_metadata
<equalizer8band_metadata
>
359 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
360 enum { param_bypass
, param_level_in
, param_level_out
,
361 STEREO_VU_METER_PARAMS
,
362 param_hp_active
, param_hp_freq
, param_hp_mode
,
363 param_lp_active
, param_lp_freq
, param_lp_mode
,
364 param_ls_active
, param_ls_level
, param_ls_freq
,
365 param_hs_active
, param_hs_level
, param_hs_freq
,
366 param_p1_active
, param_p1_level
, param_p1_freq
, param_p1_q
,
367 param_p2_active
, param_p2_level
, param_p2_freq
, param_p2_q
,
368 param_p3_active
, param_p3_level
, param_p3_freq
, param_p3_q
,
369 param_p4_active
, param_p4_level
, param_p4_freq
, param_p4_q
,
370 param_individuals
, param_zoom
, param_analyzer_active
, param_analyzer_mode
,
372 enum { PeakBands
= 4, first_graph_param
= param_hp_active
, last_graph_param
= param_p4_q
};
373 PLUGIN_NAME_ID_LABEL("equalizer8band", "eq8", "Equalizer 8 Band")
375 /// Markus's 12-band EQ - metadata
376 struct equalizer12band_metadata
: public plugin_metadata
<equalizer12band_metadata
>
378 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
379 enum { param_bypass
, param_level_in
, param_level_out
,
380 STEREO_VU_METER_PARAMS
,
381 param_hp_active
, param_hp_freq
, param_hp_mode
,
382 param_lp_active
, param_lp_freq
, param_lp_mode
,
383 param_ls_active
, param_ls_level
, param_ls_freq
,
384 param_hs_active
, param_hs_level
, param_hs_freq
,
385 param_p1_active
, param_p1_level
, param_p1_freq
, param_p1_q
,
386 param_p2_active
, param_p2_level
, param_p2_freq
, param_p2_q
,
387 param_p3_active
, param_p3_level
, param_p3_freq
, param_p3_q
,
388 param_p4_active
, param_p4_level
, param_p4_freq
, param_p4_q
,
389 param_p5_active
, param_p5_level
, param_p5_freq
, param_p5_q
,
390 param_p6_active
, param_p6_level
, param_p6_freq
, param_p6_q
,
391 param_p7_active
, param_p7_level
, param_p7_freq
, param_p7_q
,
392 param_p8_active
, param_p8_level
, param_p8_freq
, param_p8_q
,
393 param_individuals
, param_zoom
, param_analyzer_active
, param_analyzer_mode
,
395 enum { PeakBands
= 8, first_graph_param
= param_hp_active
, last_graph_param
= param_p8_q
};
396 PLUGIN_NAME_ID_LABEL("equalizer12band", "eq12", "Equalizer 12 Band")
399 struct xover2_metadata
: public plugin_metadata
<xover2_metadata
>
401 enum { in_count
= 2, out_count
= 4, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
402 enum { param_level
, param_meter_0
, param_meter_1
, param_mode
,
404 param_level1
, param_active1
, param_phase1
, param_delay1
, param_meter_01
, param_meter_11
,
405 param_level2
, param_active2
, param_phase2
, param_delay2
, param_meter_02
, param_meter_12
,
407 enum { channels
= 2, bands
= 2 };
408 PLUGIN_NAME_ID_LABEL("xover2band", "xover2", "X-Over 2 Band")
410 struct xover3_metadata
: public plugin_metadata
<xover3_metadata
>
412 enum { in_count
= 2, out_count
= 6, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
413 enum { param_level
, param_meter_0
, param_meter_1
, param_mode
,
414 param_freq0
, param_freq1
,
415 param_level1
, param_active1
, param_phase1
, param_delay1
, param_meter_01
, param_meter_11
,
416 param_level2
, param_active2
, param_phase2
, param_delay2
, param_meter_02
, param_meter_12
,
417 param_level3
, param_active3
, param_phase3
, param_delay3
, param_meter_03
, param_meter_13
,
419 enum { channels
= 2, bands
= 3 };
420 PLUGIN_NAME_ID_LABEL("xover3band", "xover3", "X-Over 3 Band")
422 struct xover4_metadata
: public plugin_metadata
<xover4_metadata
>
424 enum { in_count
= 2, out_count
= 8, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
425 enum { param_level
, param_meter_0
, param_meter_1
, param_mode
,
426 param_freq0
, param_freq1
, param_freq2
,
427 param_level1
, param_active1
, param_phase1
, param_delay1
, param_meter_01
, param_meter_11
,
428 param_level2
, param_active2
, param_phase2
, param_delay2
, param_meter_02
, param_meter_12
,
429 param_level3
, param_active3
, param_phase3
, param_delay3
, param_meter_03
, param_meter_13
,
430 param_level4
, param_active4
, param_phase4
, param_delay4
, param_meter_04
, param_meter_14
,
432 enum { channels
= 2, bands
= 4 };
433 PLUGIN_NAME_ID_LABEL("xover4band", "xover4", "X-Over 4 Band")
436 /// Markus and Chrischis Vocoder - metadata
437 struct vocoder_metadata
: public plugin_metadata
<vocoder_metadata
>
439 enum { in_count
= 4, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
440 enum { param_bypass
, param_link
, param_detectors
,
441 param_carrier_in
, param_carrier_inL
, param_carrier_inR
, param_carrier_clip_inL
, param_carrier_clip_inR
,
442 param_mod_in
, param_mod_inL
, param_mod_inR
, param_mod_clip_inL
, param_mod_clip_inR
,
443 param_out
, param_outL
, param_outR
, param_clip_outL
, param_clip_outR
,
444 param_carrier
, param_mod
, param_proc
, param_order
, param_bands
, param_hiq
,
445 param_attack
, param_release
, param_analyzer
,
446 param_volume0
, param_pan0
, param_noise0
, param_mod0
, param_solo0
, param_level0
,
447 param_volume1
, param_pan1
, param_noise1
, param_mod1
, param_solo1
, param_level1
,
448 param_volume2
, param_pan2
, param_noise2
, param_mod2
, param_solo2
, param_level2
,
449 param_volume3
, param_pan3
, param_noise3
, param_mod3
, param_solo3
, param_level3
,
450 param_volume4
, param_pan4
, param_noise4
, param_mod4
, param_solo4
, param_level4
,
451 param_volume5
, param_pan5
, param_noise5
, param_mod5
, param_solo5
, param_level5
,
452 param_volume6
, param_pan6
, param_noise6
, param_mod6
, param_solo6
, param_level6
,
453 param_volume7
, param_pan7
, param_noise7
, param_mod7
, param_solo7
, param_level7
,
454 param_volume8
, param_pan8
, param_noise8
, param_mod8
, param_solo8
, param_level8
,
455 param_volume9
, param_pan9
, param_noise9
, param_mod9
, param_solo9
, param_level9
,
456 param_volume10
, param_pan10
, param_noise10
, param_mod10
, param_solo10
, param_level10
,
457 param_volume11
, param_pan11
, param_noise11
, param_mod11
, param_solo11
, param_level11
,
458 param_volume12
, param_pan12
, param_noise12
, param_mod12
, param_solo12
, param_level12
,
459 param_volume13
, param_pan13
, param_noise13
, param_mod13
, param_solo13
, param_level13
,
460 param_volume14
, param_pan14
, param_noise14
, param_mod14
, param_solo14
, param_level14
,
461 param_volume15
, param_pan15
, param_noise15
, param_mod15
, param_solo15
, param_level15
,
462 param_volume16
, param_pan16
, param_noise16
, param_mod16
, param_solo16
, param_level16
,
463 param_volume17
, param_pan17
, param_noise17
, param_mod17
, param_solo17
, param_level17
,
464 param_volume18
, param_pan18
, param_noise18
, param_mod18
, param_solo18
, param_level18
,
465 param_volume19
, param_pan19
, param_noise19
, param_mod19
, param_solo19
, param_level19
,
466 param_volume20
, param_pan20
, param_noise20
, param_mod20
, param_solo20
, param_level20
,
467 param_volume21
, param_pan21
, param_noise21
, param_mod21
, param_solo21
, param_level21
,
468 param_volume22
, param_pan22
, param_noise22
, param_mod22
, param_solo22
, param_level22
,
469 param_volume23
, param_pan23
, param_noise23
, param_mod23
, param_solo23
, param_level23
,
470 param_volume24
, param_pan24
, param_noise24
, param_mod24
, param_solo24
, param_level24
,
471 param_volume25
, param_pan25
, param_noise25
, param_mod25
, param_solo25
, param_level25
,
472 param_volume26
, param_pan26
, param_noise26
, param_mod26
, param_solo26
, param_level26
,
473 param_volume27
, param_pan27
, param_noise27
, param_mod27
, param_solo27
, param_level27
,
474 param_volume28
, param_pan28
, param_noise28
, param_mod28
, param_solo28
, param_level28
,
475 param_volume29
, param_pan29
, param_noise29
, param_mod29
, param_solo29
, param_level29
,
476 param_volume30
, param_pan30
, param_noise30
, param_mod30
, param_solo30
, param_level30
,
477 param_volume31
, param_pan31
, param_noise31
, param_mod31
, param_solo31
, param_level31
,
479 enum { band_params
= 6 };
480 PLUGIN_NAME_ID_LABEL("vocoder", "vocoder", "Vocoder")
483 /// Markus's Pulsator - metadata
484 struct pulsator_metadata
: public plugin_metadata
<pulsator_metadata
>
486 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
487 enum { param_bypass
, param_level_in
, param_level_out
, STEREO_VU_METER_PARAMS
,
488 param_mode
, param_freq
, param_amount
, param_offset
, param_mono
, param_reset
, param_count
};
489 PLUGIN_NAME_ID_LABEL("pulsator", "pulsator", "Pulsator")
492 /// Markus's Ring Modulator - metadata
493 struct ringmodulator_metadata
: public plugin_metadata
<ringmodulator_metadata
>
495 enum { in_count
= 2, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
496 enum { param_bypass
, param_level_in
, param_level_out
, STEREO_VU_METER_PARAMS
,
497 param_mod_mode
, param_mod_freq
, param_mod_amount
, param_mod_phase
, param_mod_detune
, param_mod_listen
,
499 param_lfo1_mode
, param_lfo1_freq
, param_lfo1_reset
,
500 param_lfo1_mod_freq_lo
, param_lfo1_mod_freq_hi
, param_lfo1_mod_freq_active
,
501 param_lfo1_mod_detune_lo
, param_lfo1_mod_detune_hi
, param_lfo1_mod_detune_active
,
504 param_lfo2_mode
, param_lfo2_freq
, param_lfo2_reset
,
505 param_lfo2_lfo1_freq_lo
, param_lfo2_lfo1_freq_hi
, param_lfo2_lfo1_freq_active
,
506 param_lfo2_mod_amount_lo
, param_lfo2_mod_amount_hi
, param_lfo2_mod_amount_active
,
510 PLUGIN_NAME_ID_LABEL("ringmodulator", "ringmodulator", "Ring Modulator")
513 /// Markus's Saturator - metadata
514 struct saturator_metadata
: public plugin_metadata
<saturator_metadata
>
516 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
517 enum { param_bypass
, param_level_in
, param_level_out
, param_mix
, MONO_VU_METER_PARAMS
, param_drive
, param_blend
, param_meter_drive
,
518 param_lp_pre_freq
, param_hp_pre_freq
, param_lp_post_freq
, param_hp_post_freq
,
519 param_p_freq
, param_p_level
, param_p_q
, param_count
};
520 PLUGIN_NAME_ID_LABEL("saturator", "saturator", "Saturator")
522 /// Markus's Exciter - metadata
523 struct exciter_metadata
: public plugin_metadata
<exciter_metadata
>
525 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
526 enum { param_bypass
, param_level_in
, param_level_out
, param_amount
, MONO_VU_METER_PARAMS
, param_drive
, param_blend
, param_meter_drive
,
527 param_freq
, param_listen
, param_ceil_active
, param_ceil
, param_count
};
528 PLUGIN_NAME_ID_LABEL("exciter", "exciter", "Exciter")
530 /// Markus's Bass Enhancer - metadata
531 struct bassenhancer_metadata
: public plugin_metadata
<bassenhancer_metadata
>
533 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
534 enum { param_bypass
, param_level_in
, param_level_out
, param_amount
, MONO_VU_METER_PARAMS
, param_drive
, param_blend
, param_meter_drive
,
535 param_freq
, param_listen
, param_floor_active
, param_floor
, param_count
};
536 PLUGIN_NAME_ID_LABEL("bassenhancer", "bassenhancer", "Bass Enhancer")
538 /// Markus's and Chrischi's Crusher Module - metadata
539 struct crusher_metadata
: public plugin_metadata
<crusher_metadata
>
541 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
542 enum { param_bypass
, param_level_in
, param_level_out
,
543 STEREO_VU_METER_PARAMS
,
544 param_bits
, param_morph
, param_mode
, param_dc
, param_aa
,
545 param_samples
, param_lfo
, param_lforange
, param_lforate
,
547 PLUGIN_NAME_ID_LABEL("crusher", "crusher", "Crusher")
549 /// Markus's Stereo Module - metadata
550 struct stereo_metadata
: public plugin_metadata
<stereo_metadata
>
552 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
553 enum { param_bypass
, param_level_in
, param_level_out
,
554 STEREO_VU_METER_PARAMS
, param_balance_in
, param_balance_out
, param_softclip
,
555 param_mute_l
, param_mute_r
, param_phase_l
, param_phase_r
,
556 param_mode
, param_slev
, param_sbal
, param_mlev
, param_mpan
,
557 param_stereo_base
, param_delay
,
558 param_meter_phase
, param_sc_level
, param_stereo_phase
,
560 PLUGIN_NAME_ID_LABEL("stereo", "stereo", "Stereo Tools")
562 /// Markus's Mono Module - metadata
563 struct mono_metadata
: public plugin_metadata
<mono_metadata
>
565 enum { in_count
= 1, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= false, require_midi
= false, rt_capable
= true };
566 enum { param_bypass
, param_level_in
, param_level_out
,
567 param_meter_in
, param_meter_outL
, param_meter_outR
, param_clip_in
,param_clip_outL
, param_clip_outR
,
568 param_balance_out
, param_softclip
,
569 param_mute_l
, param_mute_r
, param_phase_l
, param_phase_r
,
570 param_delay
, param_stereo_base
, param_stereo_phase
, param_sc_level
,
572 PLUGIN_NAME_ID_LABEL("mono", "mono", "Mono Input")
574 /// Markus's and Chrischi's Analyzer
575 struct analyzer_metadata
: public plugin_metadata
<analyzer_metadata
>
577 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
578 enum { param_meter_L
, param_meter_R
, param_clip_L
, param_clip_R
,
579 param_analyzer_level
, param_analyzer_mode
,
580 param_analyzer_scale
, param_analyzer_post
,
581 param_analyzer_view
, param_analyzer_smoothing
,
582 param_analyzer_windowing
,
583 param_analyzer_accuracy
, param_analyzer_speed
,
584 param_analyzer_display
, param_analyzer_hold
, param_analyzer_freeze
,
585 param_gonio_mode
, param_gonio_use_fade
, param_gonio_fade
, param_gonio_accuracy
, param_gonio_display
,
587 PLUGIN_NAME_ID_LABEL("analyzer", "analyzer", "Analyzer")
589 /// Markus's and Chrischi's Transient Designer
590 struct transientdesigner_metadata
: public plugin_metadata
<transientdesigner_metadata
>
592 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
593 enum { param_bypass
, param_level_in
, param_level_out
,
594 STEREO_VU_METER_PARAMS
, param_mix
,
595 param_attack_time
, param_attack_boost
,
596 param_sustain_threshold
, param_release_time
, param_release_boost
,
597 param_display
, param_display_threshold
, param_lookahead
,
598 param_input
, param_output
, param_envelope
, param_attack
, param_release
,
600 PLUGIN_NAME_ID_LABEL("transientdesigner", "transientdesigner", "Transient Designer")
602 /// Chrischi's and Markus's Tape Simulator
603 struct tapesimulator_metadata
: public plugin_metadata
<tapesimulator_metadata
>
605 enum { in_count
= 2, out_count
= 2, ins_optional
= 1, outs_optional
= 1, support_midi
= false, require_midi
= false, rt_capable
= true };
606 enum { param_bypass
, param_level_in
, param_level_out
,
607 STEREO_VU_METER_PARAMS
, param_mix
, param_lp
,
608 param_speed
, param_noise
, param_mechanical
, param_magnetical
, param_post
,
610 PLUGIN_NAME_ID_LABEL("tapesimulator", "tapesimulator", "Tape Simulator")
612 /// Organ - enums for parameter IDs etc. (this mess is caused by organ split between plugin and generic class - which was
613 /// a bad design decision and should be sorted out some day) XXXKF @todo
617 par_drawbar1
, par_drawbar2
, par_drawbar3
, par_drawbar4
, par_drawbar5
, par_drawbar6
, par_drawbar7
, par_drawbar8
, par_drawbar9
,
618 par_frequency1
, par_frequency2
, par_frequency3
, par_frequency4
, par_frequency5
, par_frequency6
, par_frequency7
, par_frequency8
, par_frequency9
,
619 par_waveform1
, par_waveform2
, par_waveform3
, par_waveform4
, par_waveform5
, par_waveform6
, par_waveform7
, par_waveform8
, par_waveform9
,
620 par_detune1
, par_detune2
, par_detune3
, par_detune4
, par_detune5
, par_detune6
, par_detune7
, par_detune8
, par_detune9
,
621 par_phase1
, par_phase2
, par_phase3
, par_phase4
, par_phase5
, par_phase6
, par_phase7
, par_phase8
, par_phase9
,
622 par_pan1
, par_pan2
, par_pan3
, par_pan4
, par_pan5
, par_pan6
, par_pan7
, par_pan8
, par_pan9
,
623 par_routing1
, par_routing2
, par_routing3
, par_routing4
, par_routing5
, par_routing6
, par_routing7
, par_routing8
, par_routing9
,
625 par_percdecay
, par_perclevel
, par_percwave
, par_percharm
, par_percvel2amp
,
626 par_percfmdecay
, par_percfmdepth
, par_percfmwave
, par_percfmharm
, par_percvel2fm
,
627 par_perctrigger
, par_percstereo
,
631 par_f1cutoff
, par_f1res
, par_f1env1
, par_f1env2
, par_f1env3
, par_f1keyf
,
632 par_f2cutoff
, par_f2res
, par_f2env1
, par_f2env2
, par_f2env3
, par_f2keyf
,
633 par_eg1attack
, par_eg1decay
, par_eg1sustain
, par_eg1release
, par_eg1velscl
, par_eg1ampctl
,
634 par_eg2attack
, par_eg2decay
, par_eg2sustain
, par_eg2release
, par_eg2velscl
, par_eg2ampctl
,
635 par_eg3attack
, par_eg3decay
, par_eg3sustain
, par_eg3release
, par_eg3velscl
, par_eg3ampctl
,
636 par_lforate
, par_lfoamt
, par_lfowet
, par_lfophase
, par_lfomode
, par_lfotype
,
637 par_transpose
, par_detune
,
647 enum organ_waveform
{
649 wave_sinepl1
, wave_sinepl2
, wave_sinepl3
,
650 wave_ssaw
, wave_ssqr
, wave_spls
, wave_saw
, wave_sqr
, wave_pulse
, wave_sinepl05
, wave_sqr05
, wave_halfsin
, wave_clvg
, wave_bell
, wave_bell2
,
651 wave_w1
, wave_w2
, wave_w3
, wave_w4
, wave_w5
, wave_w6
, wave_w7
, wave_w8
, wave_w9
,
652 wave_dsaw
, wave_dsqr
, wave_dpls
,
654 wave_strings
= wave_count_small
,
663 wave_count_big
= wave_count
- wave_count_small
700 struct organ_metadata
: public organ_enums
, public plugin_metadata
<organ_metadata
>
702 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= true };
703 PLUGIN_NAME_ID_LABEL("organ", "organ", "Organ")
706 plugin_command_info
*get_commands();
707 void get_configure_vars(std::vector
<std::string
> &names
) const;
710 /// FluidSynth - metadata
711 struct fluidsynth_metadata
: public plugin_metadata
<fluidsynth_metadata
>
713 enum { par_master
, par_interpolation
, par_reverb
, par_chorus
, param_count
};
714 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= false };
715 PLUGIN_NAME_ID_LABEL("fluidsynth", "fluidsynth", "Fluidsynth")
718 void get_configure_vars(std::vector
<std::string
> &names
) const;
721 /// Wavetable - metadata
722 struct wavetable_metadata
: public plugin_metadata
<wavetable_metadata
>
783 par_o1wave
, par_o1offset
, par_o1transpose
, par_o1detune
, par_o1level
,
784 par_o2wave
, par_o2offset
, par_o2transpose
, par_o2detune
, par_o2level
,
785 par_eg1attack
, par_eg1decay
, par_eg1sustain
, par_eg1fade
, par_eg1release
, par_eg1velscl
,
786 par_eg2attack
, par_eg2decay
, par_eg2sustain
, par_eg2fade
, par_eg2release
, par_eg2velscl
,
787 par_eg3attack
, par_eg3decay
, par_eg3sustain
, par_eg3fade
, par_eg3release
, par_eg3velscl
,
793 enum { in_count
= 0, out_count
= 2, ins_optional
= 0, outs_optional
= 0, support_midi
= true, require_midi
= true, rt_capable
= true };
794 enum { mod_matrix_slots
= 10 };
795 enum { step_size
= 64 };
796 PLUGIN_NAME_ID_LABEL("wavetable", "wavetable", "Wavetable")
797 mod_matrix_metadata mm_metadata
;
799 wavetable_metadata();
800 /// Lookup of table edit interface
801 virtual const table_metadata_iface
*get_table_metadata_iface(const char *key
) const { if (!strcmp(key
, "mod_matrix")) return &mm_metadata
; else return NULL
; }
802 void get_configure_vars(std::vector
<std::string
> &names
) const;