1 /* Calf DSP Library 2 * Audio module (plugin) metadata - header file 3 * 4 * Copyright (C) 2007-2008 Krzysztof Foltman 5 * Copyright (C) 2008 Thor Harald Johansen <thj@thj.no> 6 * 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. 11 * 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. 16 * 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. 21 */ 22 23 #ifndef __CALF_METADATA_H 24 #define __CALF_METADATA_H 25 26 #include "giface.h" 27 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 30 31 namespace calf_plugins { 32 33 struct flanger_metadata: public plugin_metadata<flanger_metadata> 34 { 35 public: 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") 39 }; 40 41 struct phaser_metadata: public plugin_metadata<phaser_metadata> 42 { 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") 46 }; 47 48 struct filter_metadata: public plugin_metadata<filter_metadata> 49 { 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 is_cvfilter_metadata54 bool is_cv(int param_no) { return param_no != par_mode && param_no != par_inertia; } 55 }; 56 57 /// Filterclavier - metadata 58 struct filterclavier_metadata: public plugin_metadata<filterclavier_metadata> 59 { 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 is_cvfilterclavier_metadata64 bool is_cv(int param_no) { return param_no != par_mode && param_no != par_inertia; } 65 }; 66 67 struct reverb_metadata: public plugin_metadata<reverb_metadata> 68 { 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") 72 }; 73 74 struct vintage_delay_metadata: public plugin_metadata<vintage_delay_metadata> 75 { 76 enum { par_bpm, par_divide, par_time_l, par_time_r, par_feedback, par_amount, par_mixmode, par_medium, par_dryamount, par_width, 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("vintage_delay", "vintagedelay", "Vintage Delay") 79 }; 80 81 struct rotary_speaker_metadata: public plugin_metadata<rotary_speaker_metadata> 82 { 83 public: 84 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 }; 85 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = false, rt_capable = true }; 86 PLUGIN_NAME_ID_LABEL("rotary_speaker", "rotaryspeaker", "Rotary Speaker") 87 }; 88 89 /// A multitap stereo chorus thing - metadata 90 struct multichorus_metadata: public plugin_metadata<multichorus_metadata> 91 { 92 public: 93 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 }; 94 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, support_midi = false, require_midi = false }; 95 PLUGIN_NAME_ID_LABEL("multichorus", "multichorus", "Multi Chorus") 96 }; 97 98 enum CalfEqMode { 99 MODE12DB, 100 MODE24DB, 101 MODE36DB 102 }; 103 104 /// Monosynth - metadata 105 struct monosynth_metadata: public plugin_metadata<monosynth_metadata> 106 { 107 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 }; 108 enum { flt_lp12, flt_lp24, flt_2lp12, flt_hp12, flt_lpbr, flt_hpbr, flt_bp6, flt_2bp6 }; 109 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, 110 par_env1attack, par_env1decay, par_env1sustain, par_env1fade, par_env1release, 111 par_keyfollow, par_legato, par_portamento, par_vel2filter, par_vel2amp, par_master, par_pwhlrange, 112 par_lforate, par_lfodelay, par_lfofilter, par_lfopitch, par_lfopw, par_mwhl_lfo, par_scaledetune, 113 par_env2tocutoff, par_env2tores, par_env2toamp, 114 par_env2attack, par_env2decay, par_env2sustain, par_env2fade, par_env2release, 115 par_stretch1, par_window1, 116 par_lfo1trig, par_lfo2trig, 117 par_lfo2rate, par_lfo2delay, 118 param_count }; 119 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = true }; 120 enum { step_size = 64, step_shift = 6 }; 121 enum { mod_matrix_slots = 10 }; 122 enum { 123 modsrc_none, 124 modsrc_velocity, 125 modsrc_pressure, 126 modsrc_modwheel, 127 modsrc_env1, 128 modsrc_env2, 129 modsrc_lfo1, 130 modsrc_lfo2, 131 modsrc_count, 132 }; 133 enum { 134 moddest_none, 135 moddest_attenuation, 136 moddest_oscmix, 137 moddest_cutoff, 138 moddest_resonance, 139 moddest_o1detune, 140 moddest_o2detune, 141 moddest_o1pw, 142 moddest_o2pw, 143 moddest_o1stretch, 144 moddest_count, 145 }; 146 PLUGIN_NAME_ID_LABEL("monosynth", "monosynth", "Monosynth") 147 148 mod_matrix_metadata mm_metadata; 149 150 monosynth_metadata(); 151 /// Lookup of table edit interface get_table_metadata_ifacemonosynth_metadata152 virtual const table_metadata_iface *get_table_metadata_iface(const char *key) const { if (!strcmp(key, "mod_matrix")) return &mm_metadata; else return NULL; } 153 const char *const *get_configure_vars() const; 154 }; 155 156 /// Thor's compressor - metadata 157 /// Added some meters and stripped the weighting part 158 struct compressor_metadata: public plugin_metadata<compressor_metadata> 159 { 160 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 161 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 162 param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_compression, 163 param_count }; 164 PLUGIN_NAME_ID_LABEL("compressor", "compressor", "Compressor") 165 }; 166 167 /// Markus's sidechain compressor - metadata 168 struct sidechaincompressor_metadata: public plugin_metadata<sidechaincompressor_metadata> 169 { 170 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 171 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 172 param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_compression, 173 param_sc_mode, param_f1_freq, param_f2_freq, param_f1_level, param_f2_level, 174 param_sc_listen, param_f1_active, param_f2_active, param_sc_route, param_sc_level, param_count }; 175 PLUGIN_NAME_ID_LABEL("sidechaincompressor", "sidechaincompressor", "Sidechain Compressor") 176 }; 177 178 /// Markus's multibandcompressor - metadata 179 struct multibandcompressor_metadata: public plugin_metadata<multibandcompressor_metadata> 180 { 181 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 182 enum { param_bypass, param_level_in, param_level_out, 183 STEREO_VU_METER_PARAMS, 184 param_freq0, param_freq1, param_freq2, 185 param_sep0, param_sep1, param_sep2, 186 param_q0, param_q1, param_q2, 187 param_mode, 188 param_threshold0, param_ratio0, param_attack0, param_release0, param_makeup0, param_knee0, 189 param_detection0, param_compression0, param_output0, param_bypass0, param_solo0, 190 param_threshold1, param_ratio1, param_attack1, param_release1, param_makeup1, param_knee1, 191 param_detection1, param_compression1, param_output1, param_bypass1, param_solo1, 192 param_threshold2, param_ratio2, param_attack2, param_release2, param_makeup2, param_knee2, 193 param_detection2, param_compression2, param_output2, param_bypass2, param_solo2, 194 param_threshold3, param_ratio3, param_attack3, param_release3, param_makeup3, param_knee3, 195 param_detection3, param_compression3, param_output3, param_bypass3, param_solo3, 196 param_count }; 197 PLUGIN_NAME_ID_LABEL("multiband_compressor", "multibandcompressor", "Multiband Compressor") 198 }; 199 200 /// Markus's deesser - metadata 201 struct deesser_metadata: public plugin_metadata<deesser_metadata> 202 { 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_detected, param_compression, param_detected_led, param_clip_out, 205 param_detection, param_mode, 206 param_threshold, param_ratio, param_laxity, param_makeup, 207 param_f1_freq, param_f2_freq, param_f1_level, param_f2_level, param_f2_q, 208 param_sc_listen, param_count }; 209 PLUGIN_NAME_ID_LABEL("deesser", "deesser", "Deesser") 210 }; 211 212 /// Damiens' Gate - metadata 213 /// Added some meters and stripped the weighting part 214 struct gate_metadata: public plugin_metadata<gate_metadata> 215 { 216 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 217 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 218 param_range, param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_gating, 219 param_count }; 220 PLUGIN_NAME_ID_LABEL("gate", "gate", "Gate") 221 }; 222 223 /// Markus's sidechain gate - metadata 224 struct sidechaingate_metadata: public plugin_metadata<sidechaingate_metadata> 225 { 226 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 227 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 228 param_range, param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_gating, 229 param_sc_mode, param_f1_freq, param_f2_freq, param_f1_level, param_f2_level, 230 param_sc_listen, param_f1_active, param_f2_active, param_sc_route, param_sc_level, param_count }; 231 PLUGIN_NAME_ID_LABEL("sidechaingate", "sidechaingate", "Sidechain Gate") 232 }; 233 234 /// Markus's multiband gate - metadata 235 struct multibandgate_metadata: public plugin_metadata<multibandgate_metadata> 236 { 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, param_level_out, 239 STEREO_VU_METER_PARAMS, 240 param_freq0, param_freq1, param_freq2, 241 param_sep0, param_sep1, param_sep2, 242 param_q0, param_q1, param_q2, 243 param_mode, 244 param_range0, param_threshold0, param_ratio0, param_attack0, param_release0, param_makeup0, param_knee0, 245 param_detection0, param_gating0, param_output0, param_bypass0, param_solo0, 246 param_range1, param_threshold1, param_ratio1, param_attack1, param_release1, param_makeup1, param_knee1, 247 param_detection1, param_gating1, param_output1, param_bypass1, param_solo1, 248 param_range2, param_threshold2, param_ratio2, param_attack2, param_release2, param_makeup2, param_knee2, 249 param_detection2, param_gating2, param_output2, param_bypass2, param_solo2, 250 param_range3, param_threshold3, param_ratio3, param_attack3, param_release3, param_makeup3, param_knee3, 251 param_detection3, param_gating3, param_output3, param_bypass3, param_solo3, 252 param_count }; 253 PLUGIN_NAME_ID_LABEL("multiband_gate", "multibandgate", "Multiband Gate") 254 }; 255 256 /// Markus's limiter - metadata 257 struct limiter_metadata: public plugin_metadata<limiter_metadata> 258 { 259 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 260 enum { param_bypass, param_level_in, param_level_out, 261 STEREO_VU_METER_PARAMS, 262 param_limit, param_attack, param_release, 263 param_att, 264 param_asc, param_asc_led, param_asc_coeff, 265 param_count }; 266 PLUGIN_NAME_ID_LABEL("limiter", "limiter", "Limiter") 267 }; 268 269 /// Markus's multibandlimiter - metadata 270 struct multibandlimiter_metadata: public plugin_metadata<multibandlimiter_metadata> 271 { 272 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 273 enum { param_bypass, param_level_in, param_level_out, 274 STEREO_VU_METER_PARAMS, 275 param_freq0, param_freq1, param_freq2, 276 param_sep0, param_sep1, param_sep2, 277 param_q0, param_q1, param_q2, 278 param_mode, 279 param_limit, param_attack, param_release, param_minrel, 280 param_att0, param_att1, param_att2, param_att3, 281 param_weight0, param_weight1, param_weight2, param_weight3, 282 param_release0, param_release1, param_release2, param_release3, 283 param_solo0, param_solo1, param_solo2, param_solo3, 284 param_effrelease0, param_effrelease1, param_effrelease2, param_effrelease3, 285 param_asc, param_asc_led, param_asc_coeff, 286 param_count }; 287 PLUGIN_NAME_ID_LABEL("multiband_limiter", "multibandlimiter", "Multiband Limiter") 288 }; 289 290 /// Markus's 5-band EQ - metadata 291 struct equalizer5band_metadata: public plugin_metadata<equalizer5band_metadata> 292 { 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, STEREO_VU_METER_PARAMS, 295 param_ls_active, param_ls_level, param_ls_freq, 296 param_hs_active, param_hs_level, param_hs_freq, 297 param_p1_active, param_p1_level, param_p1_freq, param_p1_q, 298 param_p2_active, param_p2_level, param_p2_freq, param_p2_q, 299 param_p3_active, param_p3_level, param_p3_freq, param_p3_q, 300 param_count }; 301 // dummy parameter numbers, shouldn't be used EVER, they're only there to avoid pushing LP/HP filters to a separate class 302 // and potentially making inlining and optimization harder for the compiler 303 enum { param_lp_active = 0xDEADBEEF, param_hp_active, param_hp_mode, param_lp_mode, param_hp_freq, param_lp_freq }; 304 enum { PeakBands = 3, first_graph_param = param_ls_active, last_graph_param = param_p3_q }; 305 PLUGIN_NAME_ID_LABEL("equalizer5band", "eq5", "Equalizer 5 Band") 306 }; 307 /// Markus's 8-band EQ - metadata 308 struct equalizer8band_metadata: public plugin_metadata<equalizer8band_metadata> 309 { 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_hp_active, param_hp_freq, param_hp_mode, 314 param_lp_active, param_lp_freq, param_lp_mode, 315 param_ls_active, param_ls_level, param_ls_freq, 316 param_hs_active, param_hs_level, param_hs_freq, 317 param_p1_active, param_p1_level, param_p1_freq, param_p1_q, 318 param_p2_active, param_p2_level, param_p2_freq, param_p2_q, 319 param_p3_active, param_p3_level, param_p3_freq, param_p3_q, 320 param_p4_active, param_p4_level, param_p4_freq, param_p4_q, 321 param_count }; 322 enum { PeakBands = 4, first_graph_param = param_hp_active, last_graph_param = param_p4_q }; 323 PLUGIN_NAME_ID_LABEL("equalizer8band", "eq8", "Equalizer 8 Band") 324 }; 325 /// Markus's 12-band EQ - metadata 326 struct equalizer12band_metadata: public plugin_metadata<equalizer12band_metadata> 327 { 328 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 329 enum { param_bypass, param_level_in, param_level_out, 330 STEREO_VU_METER_PARAMS, 331 param_hp_active, param_hp_freq, param_hp_mode, 332 param_lp_active, param_lp_freq, param_lp_mode, 333 param_ls_active, param_ls_level, param_ls_freq, 334 param_hs_active, param_hs_level, param_hs_freq, 335 param_p1_active, param_p1_level, param_p1_freq, param_p1_q, 336 param_p2_active, param_p2_level, param_p2_freq, param_p2_q, 337 param_p3_active, param_p3_level, param_p3_freq, param_p3_q, 338 param_p4_active, param_p4_level, param_p4_freq, param_p4_q, 339 param_p5_active, param_p5_level, param_p5_freq, param_p5_q, 340 param_p6_active, param_p6_level, param_p6_freq, param_p6_q, 341 param_p7_active, param_p7_level, param_p7_freq, param_p7_q, 342 param_p8_active, param_p8_level, param_p8_freq, param_p8_q, 343 param_count }; 344 enum { PeakBands = 8, first_graph_param = param_hp_active, last_graph_param = param_p8_q }; 345 PLUGIN_NAME_ID_LABEL("equalizer12band", "eq12", "Equalizer 12 Band") 346 }; 347 348 /// Markus's Pulsator - metadata 349 struct pulsator_metadata: public plugin_metadata<pulsator_metadata> 350 { 351 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true }; 352 enum { param_bypass, param_level_in, param_level_out, STEREO_VU_METER_PARAMS, 353 param_mode, param_freq, param_amount, param_offset, param_mono, param_reset, param_count }; 354 PLUGIN_NAME_ID_LABEL("pulsator", "pulsator", "Pulsator") 355 }; 356 357 /// Markus's Saturator - metadata 358 struct saturator_metadata: public plugin_metadata<saturator_metadata> 359 { 360 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true }; 361 enum { param_bypass, param_level_in, param_level_out, param_mix, MONO_VU_METER_PARAMS, param_drive, param_blend, param_meter_drive, 362 param_lp_pre_freq, param_hp_pre_freq, param_lp_post_freq, param_hp_post_freq, 363 param_p_freq, param_p_level, param_p_q, param_count }; 364 PLUGIN_NAME_ID_LABEL("saturator", "saturator", "Saturator") 365 }; 366 /// Markus's Exciter - metadata 367 struct exciter_metadata: public plugin_metadata<exciter_metadata> 368 { 369 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true }; 370 enum { param_bypass, param_level_in, param_level_out, param_amount, MONO_VU_METER_PARAMS, param_drive, param_blend, param_meter_drive, 371 param_freq, param_listen, param_ceil_active, param_ceil, param_count }; 372 PLUGIN_NAME_ID_LABEL("exciter", "exciter", "Exciter") 373 }; 374 /// Markus's Bass Enhancer - metadata 375 struct bassenhancer_metadata: public plugin_metadata<bassenhancer_metadata> 376 { 377 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true }; 378 enum { param_bypass, param_level_in, param_level_out, param_amount, MONO_VU_METER_PARAMS, param_drive, param_blend, param_meter_drive, 379 param_freq, param_listen, param_floor_active, param_floor, param_count }; 380 PLUGIN_NAME_ID_LABEL("bassenhancer", "bassenhancer", "Bass Enhancer") 381 }; 382 /// Markus's Mono Module - metadata 383 struct stereo_metadata: public plugin_metadata<stereo_metadata> 384 { 385 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true }; 386 enum { param_bypass, param_level_in, param_level_out, 387 STEREO_VU_METER_PARAMS, param_balance_in, param_balance_out, param_softclip, 388 param_mute_l, param_mute_r, param_phase_l, param_phase_r, 389 param_mode, param_slev, param_sbal, param_mlev, param_mpan, 390 param_widener, param_delay, 391 param_meter_phase, 392 param_count }; 393 PLUGIN_NAME_ID_LABEL("stereo", "stereo", "Stereo Tools") 394 }; 395 /// Markus's Mono Module - metadata 396 struct mono_metadata: public plugin_metadata<mono_metadata> 397 { 398 enum { in_count = 1, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true }; 399 enum { param_bypass, param_level_in, param_level_out, 400 param_meter_in, param_meter_outL, param_meter_outR, param_clip_in,param_clip_outL, param_clip_outR, 401 param_balance_out, param_softclip, 402 param_mute_l, param_mute_r, param_phase_l, param_phase_r, 403 param_delay, 404 param_count }; 405 PLUGIN_NAME_ID_LABEL("mono", "mono", "Mono Input") 406 }; 407 408 /// Organ - enums for parameter IDs etc. (this mess is caused by organ split between plugin and generic class - which was 409 /// a bad design decision and should be sorted out some day) XXXKF @todo 410 struct organ_enums 411 { 412 enum { 413 par_drawbar1, par_drawbar2, par_drawbar3, par_drawbar4, par_drawbar5, par_drawbar6, par_drawbar7, par_drawbar8, par_drawbar9, 414 par_frequency1, par_frequency2, par_frequency3, par_frequency4, par_frequency5, par_frequency6, par_frequency7, par_frequency8, par_frequency9, 415 par_waveform1, par_waveform2, par_waveform3, par_waveform4, par_waveform5, par_waveform6, par_waveform7, par_waveform8, par_waveform9, 416 par_detune1, par_detune2, par_detune3, par_detune4, par_detune5, par_detune6, par_detune7, par_detune8, par_detune9, 417 par_phase1, par_phase2, par_phase3, par_phase4, par_phase5, par_phase6, par_phase7, par_phase8, par_phase9, 418 par_pan1, par_pan2, par_pan3, par_pan4, par_pan5, par_pan6, par_pan7, par_pan8, par_pan9, 419 par_routing1, par_routing2, par_routing3, par_routing4, par_routing5, par_routing6, par_routing7, par_routing8, par_routing9, 420 par_foldover, 421 par_percdecay, par_perclevel, par_percwave, par_percharm, par_percvel2amp, 422 par_percfmdecay, par_percfmdepth, par_percfmwave, par_percfmharm, par_percvel2fm, 423 par_perctrigger, par_percstereo, 424 par_filterchain, 425 par_filter1type, 426 par_master, 427 par_f1cutoff, par_f1res, par_f1env1, par_f1env2, par_f1env3, par_f1keyf, 428 par_f2cutoff, par_f2res, par_f2env1, par_f2env2, par_f2env3, par_f2keyf, 429 par_eg1attack, par_eg1decay, par_eg1sustain, par_eg1release, par_eg1velscl, par_eg1ampctl, 430 par_eg2attack, par_eg2decay, par_eg2sustain, par_eg2release, par_eg2velscl, par_eg2ampctl, 431 par_eg3attack, par_eg3decay, par_eg3sustain, par_eg3release, par_eg3velscl, par_eg3ampctl, 432 par_lforate, par_lfoamt, par_lfowet, par_lfophase, par_lfomode, par_lfotype, 433 par_transpose, par_detune, 434 par_polyphony, 435 par_quadenv, 436 par_pwhlrange, 437 par_bassfreq, 438 par_bassgain, 439 par_treblefreq, 440 par_treblegain, 441 param_count 442 }; 443 enum organ_waveform { 444 wave_sine, 445 wave_sinepl1, wave_sinepl2, wave_sinepl3, 446 wave_ssaw, wave_ssqr, wave_spls, wave_saw, wave_sqr, wave_pulse, wave_sinepl05, wave_sqr05, wave_halfsin, wave_clvg, wave_bell, wave_bell2, 447 wave_w1, wave_w2, wave_w3, wave_w4, wave_w5, wave_w6, wave_w7, wave_w8, wave_w9, 448 wave_dsaw, wave_dsqr, wave_dpls, 449 wave_count_small, 450 wave_strings = wave_count_small, 451 wave_strings2, 452 wave_sinepad, 453 wave_bellpad, 454 wave_space, 455 wave_choir, 456 wave_choir2, 457 wave_choir3, 458 wave_count, 459 wave_count_big = wave_count - wave_count_small 460 }; 461 enum { 462 ampctl_none, 463 ampctl_direct, 464 ampctl_f1, 465 ampctl_f2, 466 ampctl_all, 467 ampctl_count 468 }; 469 enum { 470 lfotype_allpass = 0, 471 lfotype_cv1, 472 lfotype_cv2, 473 lfotype_cv3, 474 lfotype_cvfull, 475 lfotype_count 476 }; 477 enum { 478 lfomode_off = 0, 479 lfomode_direct, 480 lfomode_filter1, 481 lfomode_filter2, 482 lfomode_voice, 483 lfomode_global, 484 lfomode_count 485 }; 486 enum { 487 perctrig_first = 0, 488 perctrig_each, 489 perctrig_eachplus, 490 perctrig_polyphonic, 491 perctrig_count 492 }; 493 }; 494 495 /// Organ - metadata 496 struct organ_metadata: public organ_enums, public plugin_metadata<organ_metadata> 497 { 498 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = true }; 499 PLUGIN_NAME_ID_LABEL("organ", "organ", "Organ") 500 501 public: 502 plugin_command_info *get_commands(); 503 const char *const *get_configure_vars() const; 504 }; 505 506 /// FluidSynth - metadata 507 struct fluidsynth_metadata: public plugin_metadata<fluidsynth_metadata> 508 { 509 enum { par_master, par_interpolation, par_reverb, par_chorus, param_count }; 510 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = false }; 511 PLUGIN_NAME_ID_LABEL("fluidsynth", "fluidsynth", "Fluidsynth") 512 513 public: 514 const char *const *get_configure_vars() const; 515 }; 516 517 /// Wavetable - metadata 518 struct wavetable_metadata: public plugin_metadata<wavetable_metadata> 519 { 520 enum { 521 wt_fmshiny, 522 wt_fmshiny2, 523 wt_rezo, 524 wt_metal, 525 wt_bell, 526 wt_blah, 527 wt_pluck, 528 wt_stretch, 529 wt_stretch2, 530 wt_hardsync, 531 wt_hardsync2, 532 wt_softsync, 533 wt_bell2, 534 wt_bell3, 535 wt_tine, 536 wt_tine2, 537 wt_clav, 538 wt_clav2, 539 wt_gtr, 540 wt_gtr2, 541 wt_gtr3, 542 wt_gtr4, 543 wt_gtr5, 544 wt_reed, 545 wt_reed2, 546 wt_silver, 547 wt_brass, 548 wt_multi, 549 wt_multi2, 550 wt_count 551 }; 552 enum { 553 modsrc_none, 554 modsrc_velocity, 555 modsrc_pressure, 556 modsrc_modwheel, 557 modsrc_env1, 558 modsrc_env2, 559 modsrc_env3, 560 modsrc_count, 561 }; 562 enum { 563 moddest_none, 564 moddest_attenuation, 565 moddest_oscmix, 566 moddest_cutoff, 567 moddest_resonance, 568 moddest_o1shift, 569 moddest_o2shift, 570 moddest_o1detune, 571 moddest_o2detune, 572 moddest_count, 573 }; 574 enum { 575 par_o1wave, par_o1offset, par_o1transpose, par_o1detune, par_o1level, 576 par_o2wave, par_o2offset, par_o2transpose, par_o2detune, par_o2level, 577 par_eg1attack, par_eg1decay, par_eg1sustain, par_eg1fade, par_eg1release, par_eg1velscl, 578 par_eg2attack, par_eg2decay, par_eg2sustain, par_eg2fade, par_eg2release, par_eg2velscl, 579 par_eg3attack, par_eg3decay, par_eg3sustain, par_eg3fade, par_eg3release, par_eg3velscl, 580 par_pwhlrange, 581 param_count }; 582 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = true }; 583 enum { mod_matrix_slots = 10 }; 584 enum { step_size = 64 }; 585 PLUGIN_NAME_ID_LABEL("wavetable", "wavetable", "Wavetable") 586 mod_matrix_metadata mm_metadata; 587 588 wavetable_metadata(); 589 /// Lookup of table edit interface get_table_metadata_ifacewavetable_metadata590 virtual const table_metadata_iface *get_table_metadata_iface(const char *key) const { if (!strcmp(key, "mod_matrix")) return &mm_metadata; else return NULL; } 591 }; 592 593 }; 594 595 #endif 596