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., 59 Temple Place, Suite 330,
20 * Boston, MA 02111-1307, USA.
23 #ifndef __CALF_METADATA_H
24 #define __CALF_METADATA_H
28 namespace calf_plugins
{
30 struct flanger_metadata
: public plugin_metadata
<flanger_metadata
>
33 enum { par_delay
, par_depth
, par_rate
, par_fb
, par_stereo
, par_reset
, par_amount
, par_dryamount
, param_count
};
34 enum { in_count
= 2, out_count
= 2, support_midi
= false, require_midi
= false, rt_capable
= true };
35 PLUGIN_NAME_ID_LABEL("flanger", "flanger", "Flanger")
38 struct phaser_metadata
: public plugin_metadata
<phaser_metadata
>
40 enum { par_freq
, par_depth
, par_rate
, par_fb
, par_stages
, par_stereo
, par_reset
, par_amount
, par_dryamount
, param_count
};
41 enum { in_count
= 2, out_count
= 2, support_midi
= false, require_midi
= false, rt_capable
= true };
42 PLUGIN_NAME_ID_LABEL("phaser", "phaser", "Phaser")
45 struct filter_metadata
: public plugin_metadata
<filter_metadata
>
47 enum { par_cutoff
, par_resonance
, par_mode
, par_inertia
, param_count
};
48 enum { in_count
= 2, out_count
= 2, rt_capable
= true, require_midi
= false, support_midi
= false };
49 PLUGIN_NAME_ID_LABEL("filter", "filter", "Filter")
50 /// do not export mode and inertia as CVs, as those are settings and not parameters
51 bool is_cv(int param_no
) { return param_no
!= par_mode
&& param_no
!= par_inertia
; }
54 /// Filterclavier - metadata
55 struct filterclavier_metadata
: public plugin_metadata
<filterclavier_metadata
>
57 enum { par_transpose
, par_detune
, par_max_resonance
, par_mode
, par_inertia
, param_count
};
58 enum { in_count
= 2, out_count
= 2, rt_capable
= true, require_midi
= true, support_midi
= true };
59 PLUGIN_NAME_ID_LABEL("filterclavier", "filterclavier", "Filterclavier")
60 /// do not export mode and inertia as CVs, as those are settings and not parameters
61 bool is_cv(int param_no
) { return param_no
!= par_mode
&& param_no
!= par_inertia
; }
64 struct reverb_metadata
: public plugin_metadata
<reverb_metadata
>
66 enum { par_decay
, par_hfdamp
, par_roomsize
, par_diffusion
, par_amount
, par_dry
, par_predelay
, par_basscut
, par_treblecut
, param_count
};
67 enum { in_count
= 2, out_count
= 2, support_midi
= false, require_midi
= false, rt_capable
= true };
68 PLUGIN_NAME_ID_LABEL("reverb", "reverb", "Reverb")
71 struct vintage_delay_metadata
: public plugin_metadata
<vintage_delay_metadata
>
73 enum { par_bpm
, par_divide
, par_time_l
, par_time_r
, par_feedback
, par_amount
, par_mixmode
, par_medium
, par_dryamount
, param_count
};
74 enum { in_count
= 2, out_count
= 2, rt_capable
= true, support_midi
= false, require_midi
= false };
75 PLUGIN_NAME_ID_LABEL("vintage_delay", "vintagedelay", "Vintage Delay")
78 struct rotary_speaker_metadata
: public plugin_metadata
<rotary_speaker_metadata
>
81 enum { par_speed
, par_spacing
, par_shift
, par_moddepth
, par_treblespeed
, par_bassspeed
, par_micdistance
, par_reflection
, param_count
};
82 enum { in_count
= 2, out_count
= 2, support_midi
= true, require_midi
= false, rt_capable
= true };
83 PLUGIN_NAME_ID_LABEL("rotary_speaker", "rotaryspeaker", "Rotary Speaker")
86 /// A multitap stereo chorus thing - metadata
87 struct multichorus_metadata
: public plugin_metadata
<multichorus_metadata
>
90 enum { par_delay
, par_depth
, par_rate
, par_stereo
, par_voices
, par_vphase
, par_amount
, par_dryamount
, par_freq
, par_freq2
, par_q
, param_count
};
91 enum { in_count
= 2, out_count
= 2, rt_capable
= true, support_midi
= false, require_midi
= false };
92 PLUGIN_NAME_ID_LABEL("multichorus", "multichorus", "Multi Chorus")
95 /// Monosynth - metadata
96 struct monosynth_metadata
: public plugin_metadata
<monosynth_metadata
>
98 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
};
99 enum { flt_lp12
, flt_lp24
, flt_2lp12
, flt_hp12
, flt_lpbr
, flt_hpbr
, flt_bp6
, flt_2bp6
};
100 enum { par_wave1
, par_wave2
, par_detune
, par_osc2xpose
, par_oscmode
, par_oscmix
, par_filtertype
, par_cutoff
, par_resonance
, par_cutoffsep
, par_envmod
, par_envtores
, par_envtoamp
, par_attack
, par_decay
, par_sustain
, par_release
, par_keyfollow
, par_legato
, par_portamento
, par_vel2filter
, par_vel2amp
, par_master
, param_count
};
101 enum { in_count
= 0, out_count
= 2, support_midi
= true, require_midi
= true, rt_capable
= true };
102 enum { step_size
= 64 };
103 PLUGIN_NAME_ID_LABEL("monosynth", "monosynth", "Monosynth")
106 /// Thor's compressor - metadata
107 struct compressor_metadata
: public plugin_metadata
<compressor_metadata
>
109 enum { in_count
= 2, out_count
= 2, support_midi
= false, require_midi
= false, rt_capable
= true };
110 enum { param_threshold
, param_ratio
, param_attack
, param_release
, param_makeup
, param_knee
, param_detection
, param_stereo_link
, param_aweighting
, param_compression
, param_peak
, param_clip
, param_bypass
, param_count
};
111 PLUGIN_NAME_ID_LABEL("compressor", "compressor", "Compressor")
114 /// Organ - enums for parameter IDs etc. (this mess is caused by organ split between plugin and generic class - which was
115 /// a bad design decision and should be sorted out some day) XXXKF @todo
119 par_drawbar1
, par_drawbar2
, par_drawbar3
, par_drawbar4
, par_drawbar5
, par_drawbar6
, par_drawbar7
, par_drawbar8
, par_drawbar9
,
120 par_frequency1
, par_frequency2
, par_frequency3
, par_frequency4
, par_frequency5
, par_frequency6
, par_frequency7
, par_frequency8
, par_frequency9
,
121 par_waveform1
, par_waveform2
, par_waveform3
, par_waveform4
, par_waveform5
, par_waveform6
, par_waveform7
, par_waveform8
, par_waveform9
,
122 par_detune1
, par_detune2
, par_detune3
, par_detune4
, par_detune5
, par_detune6
, par_detune7
, par_detune8
, par_detune9
,
123 par_phase1
, par_phase2
, par_phase3
, par_phase4
, par_phase5
, par_phase6
, par_phase7
, par_phase8
, par_phase9
,
124 par_pan1
, par_pan2
, par_pan3
, par_pan4
, par_pan5
, par_pan6
, par_pan7
, par_pan8
, par_pan9
,
125 par_routing1
, par_routing2
, par_routing3
, par_routing4
, par_routing5
, par_routing6
, par_routing7
, par_routing8
, par_routing9
,
127 par_percdecay
, par_perclevel
, par_percwave
, par_percharm
, par_percvel2amp
,
128 par_percfmdecay
, par_percfmdepth
, par_percfmwave
, par_percfmharm
, par_percvel2fm
,
129 par_perctrigger
, par_percstereo
,
132 par_f1cutoff
, par_f1res
, par_f1env1
, par_f1env2
, par_f1env3
, par_f1keyf
,
133 par_f2cutoff
, par_f2res
, par_f2env1
, par_f2env2
, par_f2env3
, par_f2keyf
,
134 par_eg1attack
, par_eg1decay
, par_eg1sustain
, par_eg1release
, par_eg1velscl
, par_eg1ampctl
,
135 par_eg2attack
, par_eg2decay
, par_eg2sustain
, par_eg2release
, par_eg2velscl
, par_eg2ampctl
,
136 par_eg3attack
, par_eg3decay
, par_eg3sustain
, par_eg3release
, par_eg3velscl
, par_eg3ampctl
,
137 par_lforate
, par_lfoamt
, par_lfowet
, par_lfophase
, par_lfomode
,
138 par_transpose
, par_detune
,
147 enum organ_waveform
{
149 wave_sinepl1
, wave_sinepl2
, wave_sinepl3
,
150 wave_ssaw
, wave_ssqr
, wave_spls
, wave_saw
, wave_sqr
, wave_pulse
, wave_sinepl05
, wave_sqr05
, wave_halfsin
, wave_clvg
, wave_bell
, wave_bell2
,
151 wave_w1
, wave_w2
, wave_w3
, wave_w4
, wave_w5
, wave_w6
, wave_w7
, wave_w8
, wave_w9
,
152 wave_dsaw
, wave_dsqr
, wave_dpls
,
154 wave_strings
= wave_count_small
,
163 wave_count_big
= wave_count
- wave_count_small
192 struct organ_metadata
: public organ_enums
, public plugin_metadata
<organ_metadata
>
194 enum { in_count
= 0, out_count
= 2, support_midi
= true, require_midi
= true, rt_capable
= true };
195 PLUGIN_NAME_ID_LABEL("organ", "organ", "Organ")
196 plugin_command_info
*get_commands();
197 const char **get_default_configure_vars();