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 #define PERIODICAL_PARAMS param_timing, param_bpm, param_ms, param_hz, param_bpm_host 31 32 namespace calf_plugins { 33 34 struct flanger_metadata: public plugin_metadata<flanger_metadata> 35 { 36 public: 37 enum { par_delay, par_depth, par_rate, par_fb, par_stereo, par_reset, par_amount, par_dryamount, 38 param_on, param_level_in, param_level_out, 39 STEREO_VU_METER_PARAMS, param_lfo, 40 param_count }; 41 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 42 PLUGIN_NAME_ID_LABEL("flanger", "flanger", "Flanger") 43 }; 44 45 struct phaser_metadata: public plugin_metadata<phaser_metadata> 46 { 47 enum { par_freq, par_depth, par_rate, par_fb, par_stages, par_stereo, par_reset, par_amount, par_dryamount, 48 param_on, param_level_in, param_level_out, 49 STEREO_VU_METER_PARAMS, param_lfo, 50 param_count }; 51 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 52 PLUGIN_NAME_ID_LABEL("phaser", "phaser", "Phaser") 53 }; 54 55 struct filter_metadata: public plugin_metadata<filter_metadata> 56 { 57 enum { par_cutoff, par_resonance, par_mode, par_inertia, 58 param_bypass, param_level_in, param_level_out, 59 STEREO_VU_METER_PARAMS, 60 param_count }; 61 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, require_midi = false, support_midi = false, require_instance_access = false }; 62 PLUGIN_NAME_ID_LABEL("filter", "filter", "Filter") 63 /// do not export mode and inertia as CVs, as those are settings and not parameters is_cvfilter_metadata64 bool is_cv(int param_no) const { return param_no != par_mode && param_no != par_inertia; } 65 }; 66 67 /// Filterclavier - metadata 68 struct filterclavier_metadata: public plugin_metadata<filterclavier_metadata> 69 { 70 enum { par_transpose, par_detune, par_max_resonance, par_mode, par_inertia, 71 param_bypass, param_level_in, param_level_out, 72 STEREO_VU_METER_PARAMS, 73 param_count }; 74 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, require_midi = true, support_midi = true, require_instance_access = false }; 75 PLUGIN_NAME_ID_LABEL("filterclavier", "filterclavier", "Filterclavier") 76 /// do not export mode and inertia as CVs, as those are settings and not parameters is_cvfilterclavier_metadata77 bool is_cv(int param_no) const { return param_no != par_mode && param_no != par_inertia; } 78 }; 79 80 /// Envelope Filter - metadata 81 struct envelopefilter_metadata: public plugin_metadata<envelopefilter_metadata> 82 { 83 enum { in_count = 4, out_count = 2, ins_optional = 2, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 84 enum { param_bypass, param_level_in, param_level_out, 85 STEREO_VU_METER_PARAMS, 86 param_mix, param_q, param_mode, 87 param_attack, param_release, 88 param_upper, param_lower, param_gain, 89 param_sidechain, param_response, 90 param_count }; 91 PLUGIN_NAME_ID_LABEL("envelopefilter", "envelopefilter", "Envelope Filter") 92 }; 93 94 struct reverb_metadata: public plugin_metadata<reverb_metadata> 95 { 96 enum { param_meter_inL, param_meter_inR, param_clip_outL, 97 par_decay, par_hfdamp, par_roomsize, par_diffusion, par_amount, par_dry, par_predelay, par_basscut, par_treblecut, par_on, 98 param_level_in, param_level_out, 99 param_meter_outL, param_meter_outR, param_clip_inL, param_clip_inR, param_clip_outR, 100 param_count }; 101 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 102 PLUGIN_NAME_ID_LABEL("reverb", "reverb", "Reverb") 103 }; 104 105 struct vintage_delay_metadata: public plugin_metadata<vintage_delay_metadata> 106 { 107 enum { param_on, param_level_in, param_level_out, 108 STEREO_VU_METER_PARAMS, 109 par_divide, par_time_l, par_time_r, par_feedback, 110 par_amount, par_mixmode, par_medium, par_dryamount, 111 par_width, par_frag, par_pbeats, par_pfrag, 112 PERIODICAL_PARAMS, 113 param_count }; 114 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, support_midi = false, require_midi = false, require_instance_access = false }; 115 PLUGIN_NAME_ID_LABEL("vintagedelay", "vintagedelay", "Vintage Delay") 116 }; 117 118 struct comp_delay_metadata: public plugin_metadata<comp_delay_metadata> 119 { 120 enum { par_distance_mm, par_distance_cm, par_distance_m, par_dry, par_wet, param_temp, 121 param_bypass, param_level_in, param_level_out, 122 STEREO_VU_METER_PARAMS, param_count }; 123 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, rt_capable = true, support_midi = false, require_midi = false, require_instance_access = false }; 124 PLUGIN_NAME_ID_LABEL("compdelay", "compdelay", "Compensation Delay Line") 125 }; 126 127 struct haas_enhancer_metadata: public plugin_metadata<haas_enhancer_metadata> 128 { 129 enum { 130 param_bypass, param_level_in, param_level_out, 131 par_s_gain, 132 STEREO_VU_METER_PARAMS, 133 param_meter_sideL, param_meter_sideR, 134 par_m_source, par_m_phase, 135 par_s_delay0, par_s_balance0, par_s_gain0, par_s_phase0, 136 par_s_delay1, par_s_balance1, par_s_gain1, par_s_phase1, 137 param_count 138 }; 139 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, support_midi = false, require_midi = false, require_instance_access = false }; 140 PLUGIN_NAME_ID_LABEL("haasenhancer", "haasenhancer", "Haas Stereo Enhancer") 141 }; 142 143 struct reverse_delay_metadata: public plugin_metadata<reverse_delay_metadata> 144 { 145 enum { par_bpm, par_bpm_host, par_divide, par_time_l, par_time_r, par_feedback, par_amount, par_width, par_sync, par_sync_led_l, par_sync_led_r, par_reset, par_window, 146 param_bypass, param_level_in, param_level_out, 147 STEREO_VU_METER_PARAMS, 148 param_count }; 149 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, support_midi = false, require_midi = false, require_instance_access = false }; 150 PLUGIN_NAME_ID_LABEL("reversedelay", "reversedelay", "Reverse Delay") 151 }; 152 153 struct rotary_speaker_metadata: public plugin_metadata<rotary_speaker_metadata> 154 { 155 public: 156 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, 157 param_bypass, param_level_in, param_level_out, 158 STEREO_VU_METER_PARAMS, 159 param_count }; 160 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = false, rt_capable = true, require_instance_access = false }; 161 PLUGIN_NAME_ID_LABEL("rotary_speaker", "rotaryspeaker", "Rotary Speaker") 162 }; 163 164 /// A multitap stereo chorus thing - metadata 165 struct multichorus_metadata: public plugin_metadata<multichorus_metadata> 166 { 167 public: 168 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, 169 param_on, param_level_in, param_level_out, 170 STEREO_VU_METER_PARAMS, param_lfo, 171 param_count }; 172 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, rt_capable = true, support_midi = false, require_midi = false, require_instance_access = false }; 173 PLUGIN_NAME_ID_LABEL("multichorus", "multichorus", "Multi Chorus") 174 }; 175 176 enum CalfEqMode { 177 MODE12DB, 178 MODE24DB, 179 MODE36DB 180 }; 181 182 /// Monosynth - metadata 183 struct monosynth_metadata: public plugin_metadata<monosynth_metadata> 184 { 185 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 }; 186 enum { flt_lp12, flt_lp24, flt_2lp12, flt_hp12, flt_lpbr, flt_hpbr, flt_bp6, flt_2bp6 }; 187 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, 188 par_env1attack, par_env1decay, par_env1sustain, par_env1fade, par_env1release, 189 par_keyfollow, par_legato, par_portamento, par_vel2filter, par_vel2amp, par_master, par_pwhlrange, 190 par_lforate, par_lfodelay, par_lfofilter, par_lfopitch, par_lfopw, par_mwhl_lfo, par_scaledetune, 191 par_env2tocutoff, par_env2tores, par_env2toamp, 192 par_env2attack, par_env2decay, par_env2sustain, par_env2fade, par_env2release, 193 par_stretch1, par_window1, 194 par_lfo1trig, par_lfo2trig, 195 par_lfo2rate, par_lfo2delay, 196 par_o2unison, par_o2unisonfrq, 197 par_osc1xpose, 198 par_midi, 199 param_count }; 200 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = true, require_instance_access = false }; 201 enum { step_size = 64, step_shift = 6 }; 202 enum { mod_matrix_slots = 10 }; 203 enum { 204 modsrc_none, 205 modsrc_velocity, 206 modsrc_pressure, 207 modsrc_modwheel, 208 modsrc_env1, 209 modsrc_env2, 210 modsrc_lfo1, 211 modsrc_lfo2, 212 modsrc_count, 213 }; 214 enum { 215 moddest_none, 216 moddest_attenuation, 217 moddest_oscmix, 218 moddest_cutoff, 219 moddest_resonance, 220 moddest_o1detune, 221 moddest_o2detune, 222 moddest_o1pw, 223 moddest_o2pw, 224 moddest_o1stretch, 225 moddest_o2unisonamp, 226 moddest_o2unisondetune, 227 moddest_count, 228 }; 229 PLUGIN_NAME_ID_LABEL("monosynth", "monosynth", "Monosynth") 230 231 mod_matrix_metadata mm_metadata; 232 233 monosynth_metadata(); 234 /// Lookup of table edit interface get_table_metadata_ifacemonosynth_metadata235 virtual const table_metadata_iface *get_table_metadata_iface(const char *key) const { if (!strcmp(key, "mod_matrix")) return &mm_metadata; else return NULL; } 236 void get_configure_vars(std::vector<std::string> &names) const; 237 }; 238 239 /// Thor's compressor - metadata 240 /// Added some meters and stripped the weighting part 241 struct compressor_metadata: public plugin_metadata<compressor_metadata> 242 { 243 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 244 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 245 param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_compression, param_mix, 246 param_count }; 247 PLUGIN_NAME_ID_LABEL("compressor", "compressor", "Compressor") 248 }; 249 250 /// Damien's compressor - metadata 251 /// Added some meters and stripped the weighting part 252 struct monocompressor_metadata: public plugin_metadata<monocompressor_metadata> 253 { 254 enum { in_count = 1, out_count = 1, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 255 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 256 param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_compression, param_mix, 257 param_count }; 258 PLUGIN_NAME_ID_LABEL("monocompressor", "monocompressor", "Mono Compressor") 259 }; 260 261 /// Markus's sidechain compressor - metadata 262 struct sidechaincompressor_metadata: public plugin_metadata<sidechaincompressor_metadata> 263 { 264 enum { in_count = 4, out_count = 2, ins_optional = 2, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 265 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 266 param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_compression, 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_mix, param_count }; 269 PLUGIN_NAME_ID_LABEL("sidechaincompressor", "sidechaincompressor", "Sidechain Compressor") 270 }; 271 272 /// Markus's multibandcompressor - metadata 273 struct multibandcompressor_metadata: public plugin_metadata<multibandcompressor_metadata> 274 { 275 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 276 enum { param_bypass, param_level_in, param_level_out, 277 STEREO_VU_METER_PARAMS, 278 param_freq0, param_freq1, param_freq2, 279 param_mode, 280 param_threshold0, param_ratio0, param_attack0, param_release0, param_makeup0, param_knee0, 281 param_detection0, param_compression0, param_output0, param_bypass0, param_solo0, 282 param_threshold1, param_ratio1, param_attack1, param_release1, param_makeup1, param_knee1, 283 param_detection1, param_compression1, param_output1, param_bypass1, param_solo1, 284 param_threshold2, param_ratio2, param_attack2, param_release2, param_makeup2, param_knee2, 285 param_detection2, param_compression2, param_output2, param_bypass2, param_solo2, 286 param_threshold3, param_ratio3, param_attack3, param_release3, param_makeup3, param_knee3, 287 param_detection3, param_compression3, param_output3, param_bypass3, param_solo3, 288 param_notebook, 289 param_count }; 290 PLUGIN_NAME_ID_LABEL("multibandcompressor", "multibandcompressor", "Multiband Compressor") 291 }; 292 293 /// Markus's deesser - metadata 294 struct deesser_metadata: public plugin_metadata<deesser_metadata> 295 { 296 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 297 enum { param_bypass, param_detected, param_compression, param_detected_led, param_clip_out, 298 param_detection, param_mode, 299 param_threshold, param_ratio, param_laxity, param_makeup, 300 param_f1_freq, param_f2_freq, param_f1_level, param_f2_level, param_f2_q, 301 param_sc_listen, param_count }; 302 PLUGIN_NAME_ID_LABEL("deesser", "deesser", "Deesser") 303 }; 304 305 /// Damiens' Gate - metadata 306 /// Added some meters and stripped the weighting part 307 struct gate_metadata: public plugin_metadata<gate_metadata> 308 { 309 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 310 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 311 param_range, param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_gating, 312 param_count }; 313 PLUGIN_NAME_ID_LABEL("gate", "gate", "Gate") 314 }; 315 316 /// Markus's sidechain gate - metadata 317 struct sidechaingate_metadata: public plugin_metadata<sidechaingate_metadata> 318 { 319 enum { in_count = 4, out_count = 2, ins_optional = 2, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 320 enum { param_bypass, param_level_in, MONO_VU_METER_PARAMS, 321 param_range, param_threshold, param_ratio, param_attack, param_release, param_makeup, param_knee, param_detection, param_stereo_link, param_gating, 322 param_sc_mode, param_f1_freq, param_f2_freq, param_f1_level, param_f2_level, 323 param_sc_listen, param_f1_active, param_f2_active, param_sc_route, param_sc_level, param_count }; 324 PLUGIN_NAME_ID_LABEL("sidechaingate", "sidechaingate", "Sidechain Gate") 325 }; 326 327 /// Markus's multiband gate - metadata 328 struct multibandgate_metadata: public plugin_metadata<multibandgate_metadata> 329 { 330 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 331 enum { param_bypass, param_level_in, param_level_out, 332 STEREO_VU_METER_PARAMS, 333 param_freq0, param_freq1, param_freq2, 334 param_mode, 335 param_range0, param_threshold0, param_ratio0, param_attack0, param_release0, param_makeup0, param_knee0, 336 param_detection0, param_gating0, param_output0, param_bypass0, param_solo0, 337 param_range1, param_threshold1, param_ratio1, param_attack1, param_release1, param_makeup1, param_knee1, 338 param_detection1, param_gating1, param_output1, param_bypass1, param_solo1, 339 param_range2, param_threshold2, param_ratio2, param_attack2, param_release2, param_makeup2, param_knee2, 340 param_detection2, param_gating2, param_output2, param_bypass2, param_solo2, 341 param_range3, param_threshold3, param_ratio3, param_attack3, param_release3, param_makeup3, param_knee3, 342 param_detection3, param_gating3, param_output3, param_bypass3, param_solo3, 343 param_notebook, 344 param_count }; 345 PLUGIN_NAME_ID_LABEL("multibandgate", "multibandgate", "Multiband Gate") 346 }; 347 348 /// Markus's limiter - metadata 349 struct limiter_metadata: public plugin_metadata<limiter_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, require_instance_access = false }; 352 enum { param_bypass, param_level_in, param_level_out, 353 STEREO_VU_METER_PARAMS, 354 param_limit, param_attack, param_release, 355 param_att, 356 param_asc, param_asc_led, param_asc_coeff, 357 param_oversampling, 358 param_auto_level, 359 param_count }; 360 PLUGIN_NAME_ID_LABEL("limiter", "limiter", "Limiter") 361 }; 362 363 /// Markus's and Chrischis multibandlimiter - metadata 364 struct multibandlimiter_metadata: public plugin_metadata<multibandlimiter_metadata> 365 { 366 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 367 enum { param_bypass, param_level_in, param_level_out, 368 STEREO_VU_METER_PARAMS, 369 param_freq0, param_freq1, param_freq2, 370 param_mode, 371 param_limit, param_attack, param_release, param_minrel, 372 param_att0, param_att1, param_att2, param_att3, 373 param_weight0, param_weight1, param_weight2, param_weight3, 374 param_release0, param_release1, param_release2, param_release3, 375 param_solo0, param_solo1, param_solo2, param_solo3, 376 param_effrelease0, param_effrelease1, param_effrelease2, param_effrelease3, 377 param_asc, param_asc_led, param_asc_coeff, 378 param_oversampling, 379 param_auto_level, 380 param_count }; 381 PLUGIN_NAME_ID_LABEL("multibandlimiter", "multibandlimiter", "Multiband Limiter") 382 }; 383 384 /// Markus's and Chrischis sidechainlimiter - metadata 385 struct sidechainlimiter_metadata: public plugin_metadata<sidechainlimiter_metadata> 386 { 387 enum { in_count = 4, out_count = 2, ins_optional = 2, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 388 enum { param_bypass, param_level_in, param_level_out, 389 STEREO_VU_METER_PARAMS, 390 param_meter_scL, param_meter_scR, 391 param_freq0, param_freq1, param_freq2, 392 param_mode, 393 param_limit, param_attack, param_release, param_minrel, 394 param_att0, param_att1, param_att2, param_att3, param_att_sc, 395 param_weight0, param_weight1, param_weight2, param_weight3, param_weight_sc, 396 param_release0, param_release1, param_release2, param_release3, param_release_sc, 397 param_solo0, param_solo1, param_solo2, param_solo3, param_solo_sc, 398 param_effrelease0, param_effrelease1, param_effrelease2, param_effrelease3, param_effrelease_sc, 399 param_asc, param_asc_led, param_asc_coeff, 400 param_oversampling, param_level_sc, 401 param_auto_level, 402 param_count }; 403 PLUGIN_NAME_ID_LABEL("sidechainlimiter", "sidechainlimiter", "Sidechain Limiter") 404 }; 405 406 /// Damien's RIAA and CD Emphasis - metadata 407 struct emphasis_metadata: public plugin_metadata<emphasis_metadata> 408 { 409 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 410 enum { param_bypass, param_level_in, param_level_out, STEREO_VU_METER_PARAMS, param_mode, param_type, 411 param_count }; 412 PLUGIN_NAME_ID_LABEL("emphasis", "emphasis", "Emphasis") 413 }; 414 415 /// Markus's 5-band EQ - metadata 416 struct equalizer5band_metadata: public plugin_metadata<equalizer5band_metadata> 417 { 418 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 419 enum { param_bypass, param_level_in, param_level_out, 420 STEREO_VU_METER_PARAMS, 421 param_ls_active, param_ls_level, param_ls_freq, param_ls_q, 422 param_hs_active, param_hs_level, param_hs_freq, param_hs_q, 423 param_p1_active, param_p1_level, param_p1_freq, param_p1_q, 424 param_p2_active, param_p2_level, param_p2_freq, param_p2_q, 425 param_p3_active, param_p3_level, param_p3_freq, param_p3_q, 426 param_individuals, param_zoom, param_analyzer_active, param_analyzer_mode, 427 param_count }; 428 // dummy parameter numbers, shouldn't be used EVER, they're only there to avoid pushing LP/HP filters to a separate class 429 // and potentially making inlining and optimization harder for the compiler 430 enum { param_lp_active = 0xDEADBEEF, param_hp_active, param_hp_mode, param_lp_mode, param_hp_freq, param_lp_freq, param_hp_q, param_lp_q }; 431 enum { PeakBands = 3, first_graph_param = param_ls_active, last_graph_param = param_p3_q }; 432 PLUGIN_NAME_ID_LABEL("equalizer5band", "eq5", "Equalizer 5 Band") 433 }; 434 435 /// Markus's 8-band EQ - metadata 436 struct equalizer8band_metadata: public plugin_metadata<equalizer8band_metadata> 437 { 438 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 439 enum { param_bypass, param_level_in, param_level_out, 440 STEREO_VU_METER_PARAMS, 441 param_hp_active, param_hp_freq, param_hp_mode, param_hp_q, 442 param_lp_active, param_lp_freq, param_lp_mode, param_lp_q, 443 param_ls_active, param_ls_level, param_ls_freq, param_ls_q, 444 param_hs_active, param_hs_level, param_hs_freq, param_hs_q, 445 param_p1_active, param_p1_level, param_p1_freq, param_p1_q, 446 param_p2_active, param_p2_level, param_p2_freq, param_p2_q, 447 param_p3_active, param_p3_level, param_p3_freq, param_p3_q, 448 param_p4_active, param_p4_level, param_p4_freq, param_p4_q, 449 param_individuals, param_zoom, param_analyzer_active, param_analyzer_mode, 450 param_count }; 451 enum { PeakBands = 4, first_graph_param = param_hp_active, last_graph_param = param_p4_q }; 452 PLUGIN_NAME_ID_LABEL("equalizer8band", "eq8", "Equalizer 8 Band") 453 }; 454 /// Markus's 12-band EQ - metadata 455 struct equalizer12band_metadata: public plugin_metadata<equalizer12band_metadata> 456 { 457 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 458 enum { param_bypass, param_level_in, param_level_out, 459 STEREO_VU_METER_PARAMS, 460 param_hp_active, param_hp_freq, param_hp_mode, param_hp_q, 461 param_lp_active, param_lp_freq, param_lp_mode, param_lp_q, 462 param_ls_active, param_ls_level, param_ls_freq, param_ls_q, 463 param_hs_active, param_hs_level, param_hs_freq, param_hs_q, 464 param_p1_active, param_p1_level, param_p1_freq, param_p1_q, 465 param_p2_active, param_p2_level, param_p2_freq, param_p2_q, 466 param_p3_active, param_p3_level, param_p3_freq, param_p3_q, 467 param_p4_active, param_p4_level, param_p4_freq, param_p4_q, 468 param_p5_active, param_p5_level, param_p5_freq, param_p5_q, 469 param_p6_active, param_p6_level, param_p6_freq, param_p6_q, 470 param_p7_active, param_p7_level, param_p7_freq, param_p7_q, 471 param_p8_active, param_p8_level, param_p8_freq, param_p8_q, 472 param_individuals, param_zoom, param_analyzer_active, param_analyzer_mode, 473 param_count }; 474 enum { PeakBands = 8, first_graph_param = param_hp_active, last_graph_param = param_p8_q }; 475 PLUGIN_NAME_ID_LABEL("equalizer12band", "eq12", "Equalizer 12 Band") 476 }; 477 /// 30-band EQ - metadata 478 struct equalizer30band_metadata: public plugin_metadata<equalizer30band_metadata> 479 { 480 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 481 enum { 482 param_level_in, param_level_in_vuL, param_level_in_vuR, param_level_in_clipL, param_level_in_clipR, 483 param_bypass, param_filters, 484 param_gainscale1, param_gainscale2, 485 param_level_out, param_level_out_vuL, param_level_out_vuR, param_level_out_clipL, param_level_out_clipR, 486 487 //1 - 30 Bands 488 param_gain10, param_gain_scale10, 489 param_gain11, param_gain_scale11, 490 param_gain12, param_gain_scale12, 491 param_gain13, param_gain_scale13, 492 param_gain14, param_gain_scale14, 493 param_gain15, param_gain_scale15, 494 param_gain16, param_gain_scale16, 495 param_gain17, param_gain_scale17, 496 param_gain18, param_gain_scale18, 497 param_gain19, param_gain_scale19, 498 param_gain110, param_gain_scale110, 499 param_gain111, param_gain_scale111, 500 param_gain112, param_gain_scale112, 501 param_gain113, param_gain_scale113, 502 param_gain114, param_gain_scale114, 503 param_gain115, param_gain_scale115, 504 param_gain116, param_gain_scale116, 505 param_gain117, param_gain_scale117, 506 param_gain118, param_gain_scale118, 507 param_gain119, param_gain_scale119, 508 param_gain120, param_gain_scale120, 509 param_gain121, param_gain_scale121, 510 param_gain122, param_gain_scale122, 511 param_gain123, param_gain_scale123, 512 param_gain124, param_gain_scale124, 513 param_gain125, param_gain_scale125, 514 param_gain126, param_gain_scale126, 515 param_gain127, param_gain_scale127, 516 param_gain128, param_gain_scale128, 517 param_gain129, param_gain_scale129, 518 param_gain130, param_gain_scale130, 519 520 //2 - 30 Bands 521 param_gain20, param_gain_scale20, 522 param_gain21, param_gain_scale21, 523 param_gain22, param_gain_scale22, 524 param_gain23, param_gain_scale23, 525 param_gain24, param_gain_scale24, 526 param_gain25, param_gain_scale25, 527 param_gain26, param_gain_scale26, 528 param_gain27, param_gain_scale27, 529 param_gain28, param_gain_scale28, 530 param_gain29, param_gain_scale29, 531 param_gain210, param_gain_scale210, 532 param_gain211, param_gain_scale211, 533 param_gain212, param_gain_scale212, 534 param_gain213, param_gain_scale213, 535 param_gain214, param_gain_scale214, 536 param_gain215, param_gain_scale215, 537 param_gain216, param_gain_scale216, 538 param_gain217, param_gain_scale217, 539 param_gain218, param_gain_scale218, 540 param_gain219, param_gain_scale219, 541 param_gain220, param_gain_scale220, 542 param_gain221, param_gain_scale221, 543 param_gain222, param_gain_scale222, 544 param_gain223, param_gain_scale223, 545 param_gain224, param_gain_scale224, 546 param_gain225, param_gain_scale225, 547 param_gain226, param_gain_scale226, 548 param_gain227, param_gain_scale227, 549 param_gain228, param_gain_scale228, 550 param_gain229, param_gain_scale229, 551 param_gain230, param_gain_scale230, 552 553 param_l_active, param_r_active, param_linked, 554 555 param_count }; 556 enum { band_params = 2 }; 557 enum { gain_step = 6 }; 558 559 PLUGIN_NAME_ID_LABEL("equalizer30band", "eq30", "Equalizer 30 Band") 560 }; 561 /// Markus's X-Overs 562 struct xover2_metadata: public plugin_metadata<xover2_metadata> 563 { 564 enum { in_count = 2, out_count = 4, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 565 enum { param_level, param_meter_0, param_meter_1, param_mode, 566 param_freq0, 567 param_level1, param_active1, param_phase1, param_delay1, param_meter_01, param_meter_11, 568 param_level2, param_active2, param_phase2, param_delay2, param_meter_02, param_meter_12, 569 param_count }; 570 enum { channels = 2, bands = 2 }; 571 PLUGIN_NAME_ID_LABEL("xover2band", "xover2", "X-Over 2 Band") 572 }; 573 struct xover3_metadata: public plugin_metadata<xover3_metadata> 574 { 575 enum { in_count = 2, out_count = 6, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 576 enum { param_level, param_meter_0, param_meter_1, param_mode, 577 param_freq0, param_freq1, 578 param_level1, param_active1, param_phase1, param_delay1, param_meter_01, param_meter_11, 579 param_level2, param_active2, param_phase2, param_delay2, param_meter_02, param_meter_12, 580 param_level3, param_active3, param_phase3, param_delay3, param_meter_03, param_meter_13, 581 param_count }; 582 enum { channels = 2, bands = 3 }; 583 PLUGIN_NAME_ID_LABEL("xover3band", "xover3", "X-Over 3 Band") 584 }; 585 struct xover4_metadata: public plugin_metadata<xover4_metadata> 586 { 587 enum { in_count = 2, out_count = 8, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 588 enum { param_level, param_meter_0, param_meter_1, param_mode, 589 param_freq0, param_freq1, param_freq2, 590 param_level1, param_active1, param_phase1, param_delay1, param_meter_01, param_meter_11, 591 param_level2, param_active2, param_phase2, param_delay2, param_meter_02, param_meter_12, 592 param_level3, param_active3, param_phase3, param_delay3, param_meter_03, param_meter_13, 593 param_level4, param_active4, param_phase4, param_delay4, param_meter_04, param_meter_14, 594 param_count }; 595 enum { channels = 2, bands = 4 }; 596 PLUGIN_NAME_ID_LABEL("xover4band", "xover4", "X-Over 4 Band") 597 }; 598 599 /// Markus and Chrischis Vocoder - metadata 600 struct vocoder_metadata: public plugin_metadata<vocoder_metadata> 601 { 602 enum { in_count = 4, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 603 enum { param_bypass, param_link, param_detectors, 604 param_carrier_in, param_carrier_inL, param_carrier_inR, param_carrier_clip_inL, param_carrier_clip_inR, 605 param_mod_in, param_mod_inL, param_mod_inR, param_mod_clip_inL, param_mod_clip_inR, 606 param_out, param_outL, param_outR, param_clip_outL, param_clip_outR, 607 param_carrier, param_mod, param_proc, param_order, param_bands, param_hiq, 608 param_attack, param_release, param_analyzer, 609 param_volume0, param_pan0, param_noise0, param_mod0, param_solo0, param_level0, param_q0, 610 param_volume1, param_pan1, param_noise1, param_mod1, param_solo1, param_level1, param_q1, 611 param_volume2, param_pan2, param_noise2, param_mod2, param_solo2, param_level2, param_q2, 612 param_volume3, param_pan3, param_noise3, param_mod3, param_solo3, param_level3, param_q3, 613 param_volume4, param_pan4, param_noise4, param_mod4, param_solo4, param_level4, param_q4, 614 param_volume5, param_pan5, param_noise5, param_mod5, param_solo5, param_level5, param_q5, 615 param_volume6, param_pan6, param_noise6, param_mod6, param_solo6, param_level6, param_q6, 616 param_volume7, param_pan7, param_noise7, param_mod7, param_solo7, param_level7, param_q7, 617 param_volume8, param_pan8, param_noise8, param_mod8, param_solo8, param_level8, param_q8, 618 param_volume9, param_pan9, param_noise9, param_mod9, param_solo9, param_level9, param_q9, 619 param_volume10, param_pan10, param_noise10, param_mod10, param_solo10, param_level10, param_q10, 620 param_volume11, param_pan11, param_noise11, param_mod11, param_solo11, param_level11, param_q11, 621 param_volume12, param_pan12, param_noise12, param_mod12, param_solo12, param_level12, param_q12, 622 param_volume13, param_pan13, param_noise13, param_mod13, param_solo13, param_level13, param_q13, 623 param_volume14, param_pan14, param_noise14, param_mod14, param_solo14, param_level14, param_q14, 624 param_volume15, param_pan15, param_noise15, param_mod15, param_solo15, param_level15, param_q15, 625 param_volume16, param_pan16, param_noise16, param_mod16, param_solo16, param_level16, param_q16, 626 param_volume17, param_pan17, param_noise17, param_mod17, param_solo17, param_level17, param_q17, 627 param_volume18, param_pan18, param_noise18, param_mod18, param_solo18, param_level18, param_q18, 628 param_volume19, param_pan19, param_noise19, param_mod19, param_solo19, param_level19, param_q19, 629 param_volume20, param_pan20, param_noise20, param_mod20, param_solo20, param_level20, param_q20, 630 param_volume21, param_pan21, param_noise21, param_mod21, param_solo21, param_level21, param_q21, 631 param_volume22, param_pan22, param_noise22, param_mod22, param_solo22, param_level22, param_q22, 632 param_volume23, param_pan23, param_noise23, param_mod23, param_solo23, param_level23, param_q23, 633 param_volume24, param_pan24, param_noise24, param_mod24, param_solo24, param_level24, param_q24, 634 param_volume25, param_pan25, param_noise25, param_mod25, param_solo25, param_level25, param_q25, 635 param_volume26, param_pan26, param_noise26, param_mod26, param_solo26, param_level26, param_q26, 636 param_volume27, param_pan27, param_noise27, param_mod27, param_solo27, param_level27, param_q27, 637 param_volume28, param_pan28, param_noise28, param_mod28, param_solo28, param_level28, param_q28, 638 param_volume29, param_pan29, param_noise29, param_mod29, param_solo29, param_level29, param_q29, 639 param_volume30, param_pan30, param_noise30, param_mod30, param_solo30, param_level30, param_q30, 640 param_volume31, param_pan31, param_noise31, param_mod31, param_solo31, param_level31, param_q31, 641 param_lower, param_upper, param_tilt, 642 param_count }; 643 enum { band_params = 7 }; 644 PLUGIN_NAME_ID_LABEL("vocoder", "vocoder", "Vocoder") 645 }; 646 647 /// Markus's Pulsator - metadata 648 struct pulsator_metadata: public plugin_metadata<pulsator_metadata> 649 { 650 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 651 enum { param_bypass, param_level_in, param_level_out, STEREO_VU_METER_PARAMS, 652 param_mode, param_amount, param_offset_l, param_offset_r, 653 param_mono, param_reset, param_pwidth, 654 PERIODICAL_PARAMS, 655 param_count }; 656 PLUGIN_NAME_ID_LABEL("pulsator", "pulsator", "Pulsator") 657 }; 658 659 /// Markus's Ring Modulator - metadata 660 struct ringmodulator_metadata: public plugin_metadata<ringmodulator_metadata> 661 { 662 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 663 enum { param_bypass, param_level_in, param_level_out, STEREO_VU_METER_PARAMS, 664 param_mod_mode, param_mod_freq, param_mod_amount, param_mod_phase, param_mod_detune, param_mod_listen, 665 666 param_lfo1_mode, param_lfo1_freq, param_lfo1_reset, 667 param_lfo1_mod_freq_lo, param_lfo1_mod_freq_hi, param_lfo1_mod_freq_active, 668 param_lfo1_mod_detune_lo, param_lfo1_mod_detune_hi, param_lfo1_mod_detune_active, 669 param_lfo1_activity, 670 671 param_lfo2_mode, param_lfo2_freq, param_lfo2_reset, 672 param_lfo2_lfo1_freq_lo, param_lfo2_lfo1_freq_hi, param_lfo2_lfo1_freq_active, 673 param_lfo2_mod_amount_lo, param_lfo2_mod_amount_hi, param_lfo2_mod_amount_active, 674 param_lfo2_activity, 675 676 param_count }; 677 PLUGIN_NAME_ID_LABEL("ringmodulator", "ringmodulator", "Ring Modulator") 678 }; 679 680 /// Markus's Saturator - metadata 681 struct saturator_metadata: public plugin_metadata<saturator_metadata> 682 { 683 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 684 enum { param_bypass, param_level_in, param_level_out, 685 STEREO_VU_METER_PARAMS, 686 param_mix, param_drive, param_blend, 687 param_lp_pre_freq, param_hp_pre_freq, param_lp_post_freq, param_hp_post_freq, 688 param_p_freq, param_p_level, param_p_q, param_pre, param_post, param_count }; 689 PLUGIN_NAME_ID_LABEL("saturator", "saturator", "Saturator") 690 }; 691 /// Markus's Exciter - metadata 692 struct exciter_metadata: public plugin_metadata<exciter_metadata> 693 { 694 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 695 enum { param_bypass, param_level_in, param_level_out, param_amount, MONO_VU_METER_PARAMS, param_drive, param_blend, param_meter_drive, 696 param_freq, param_listen, param_ceil_active, param_ceil, param_count }; 697 PLUGIN_NAME_ID_LABEL("exciter", "exciter", "Exciter") 698 }; 699 /// Markus's Bass Enhancer - metadata 700 struct bassenhancer_metadata: public plugin_metadata<bassenhancer_metadata> 701 { 702 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 703 enum { param_bypass, param_level_in, param_level_out, param_amount, MONO_VU_METER_PARAMS, param_drive, param_blend, param_meter_drive, 704 param_freq, param_listen, param_floor_active, param_floor, param_count }; 705 PLUGIN_NAME_ID_LABEL("bassenhancer", "bassenhancer", "Bass Enhancer") 706 }; 707 /// Markus's and Chrischi's Crusher Module - metadata 708 struct crusher_metadata: public plugin_metadata<crusher_metadata> 709 { 710 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 711 enum { param_bypass, param_level_in, param_level_out, 712 STEREO_VU_METER_PARAMS, 713 param_bits, param_morph, param_mode, param_dc, param_aa, 714 param_samples, param_lfo, param_lforange, param_lforate, 715 param_count }; 716 PLUGIN_NAME_ID_LABEL("crusher", "crusher", "Crusher") 717 }; 718 /// Markus's Stereo Module - metadata 719 struct stereo_metadata: public plugin_metadata<stereo_metadata> 720 { 721 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 722 enum { param_bypass, param_level_in, param_level_out, 723 STEREO_VU_METER_PARAMS, param_balance_in, param_balance_out, param_softclip, 724 param_mute_l, param_mute_r, param_phase_l, param_phase_r, 725 param_mode, param_slev, param_sbal, param_mlev, param_mpan, 726 param_stereo_base, param_delay, 727 param_meter_phase, param_sc_level, param_stereo_phase, 728 param_count }; 729 PLUGIN_NAME_ID_LABEL("stereo", "stereo", "Stereo Tools") 730 }; 731 /// Markus's Mono Module - metadata 732 struct mono_metadata: public plugin_metadata<mono_metadata> 733 { 734 enum { in_count = 1, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 735 enum { param_bypass, param_level_in, param_level_out, 736 param_meter_in, param_meter_outL, param_meter_outR, param_clip_in,param_clip_outL, param_clip_outR, 737 param_balance_out, param_softclip, 738 param_mute_l, param_mute_r, param_phase_l, param_phase_r, 739 param_delay, param_stereo_base, param_stereo_phase, param_sc_level, 740 param_count }; 741 PLUGIN_NAME_ID_LABEL("mono", "mono", "Mono Input") 742 }; 743 /// Markus's multibandenhancer - metadata 744 struct multibandenhancer_metadata: public plugin_metadata<multibandenhancer_metadata> 745 { 746 enum { in_count = 2, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 747 enum { param_bypass, param_level_in, param_level_out, 748 STEREO_VU_METER_PARAMS, 749 param_freq0, param_freq1, param_freq2, 750 param_mode, 751 param_base0, param_base1, param_base2, param_base3, 752 param_drive0, param_drive1, param_drive2, param_drive3, 753 param_blend0, param_blend1, param_blend2, param_blend3, 754 param_solo0, param_solo1, param_solo2, param_solo3, 755 param_count }; 756 PLUGIN_NAME_ID_LABEL("multibandenhancer", "multibandenhancer", "Multiband Enhancer") 757 }; 758 /// Markus's multispread - metadata 759 struct multispread_metadata: public plugin_metadata<multispread_metadata> 760 { 761 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 0, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 762 enum { param_bypass, param_level_in, param_level_out, 763 STEREO_VU_METER_PARAMS, 764 param_mono, param_filters, 765 param_amount0, param_amount1, param_amount2, param_amount3, 766 param_intensity, 767 param_count }; 768 PLUGIN_NAME_ID_LABEL("multispread", "multispread", "Multi Spread") 769 }; 770 /// Markus's and Chrischi's Analyzer 771 struct analyzer_metadata: public plugin_metadata<analyzer_metadata> 772 { 773 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = true }; 774 enum { param_meter_L, param_meter_R, param_clip_L, param_clip_R, 775 param_analyzer_level, param_analyzer_mode, 776 param_analyzer_scale, param_analyzer_post, 777 param_analyzer_view, param_analyzer_smoothing, 778 param_analyzer_windowing, 779 param_analyzer_accuracy, param_analyzer_speed, 780 param_analyzer_display, param_analyzer_hold, param_analyzer_freeze, 781 param_gonio_mode, param_gonio_use_fade, param_gonio_fade, param_gonio_accuracy, param_gonio_display, 782 param_count }; 783 PLUGIN_NAME_ID_LABEL("analyzer", "analyzer", "Analyzer") 784 }; 785 /// Markus's and Chrischi's Transient Designer 786 struct transientdesigner_metadata: public plugin_metadata<transientdesigner_metadata> 787 { 788 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 789 enum { param_bypass, param_level_in, param_level_out, 790 STEREO_VU_METER_PARAMS, param_mix, 791 param_attack_time, param_attack_boost, 792 param_sustain_threshold, param_release_time, param_release_boost, 793 param_display, param_display_threshold, param_lookahead, 794 param_view, param_hipass, param_lopass, param_hp_mode, param_lp_mode, param_listen, 795 param_count }; 796 PLUGIN_NAME_ID_LABEL("transientdesigner", "transientdesigner", "Transient Designer") 797 }; 798 /// Markus's Vinyl Simulator 799 struct vinyl_metadata: public plugin_metadata<vinyl_metadata> 800 { 801 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = true }; 802 enum { param_bypass, param_level_in, param_level_out, 803 STEREO_VU_METER_PARAMS, 804 param_drone, param_speed, param_aging, param_freq, 805 param_gain0, param_pitch0, param_active0, 806 param_gain1, param_pitch1, param_active1, 807 param_gain2, param_pitch2, param_active2, 808 param_gain3, param_pitch3, param_active3, 809 param_gain4, param_pitch4, param_active4, 810 param_gain5, param_pitch5, param_active5, 811 param_gain6, param_pitch6, param_active6, 812 param_count }; 813 PLUGIN_NAME_ID_LABEL("vinyl", "vinyl", "Vinyl") 814 }; 815 /// Markus's Tape Simulator 816 struct tapesimulator_metadata: public plugin_metadata<tapesimulator_metadata> 817 { 818 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 819 enum { param_bypass, param_level_in, param_level_out, 820 STEREO_VU_METER_PARAMS, param_mix, param_lp, 821 param_speed, param_noise, param_mechanical, param_magnetical, param_post, 822 param_count }; 823 PLUGIN_NAME_ID_LABEL("tapesimulator", "tapesimulator", "Tape Simulator") 824 }; 825 /// Organ - enums for parameter IDs etc. (this mess is caused by organ split between plugin and generic class - which was 826 /// a bad design decision and should be sorted out some day) XXXKF @todo 827 struct organ_enums 828 { 829 enum { 830 par_drawbar1, par_drawbar2, par_drawbar3, par_drawbar4, par_drawbar5, par_drawbar6, par_drawbar7, par_drawbar8, par_drawbar9, 831 par_frequency1, par_frequency2, par_frequency3, par_frequency4, par_frequency5, par_frequency6, par_frequency7, par_frequency8, par_frequency9, 832 par_waveform1, par_waveform2, par_waveform3, par_waveform4, par_waveform5, par_waveform6, par_waveform7, par_waveform8, par_waveform9, 833 par_detune1, par_detune2, par_detune3, par_detune4, par_detune5, par_detune6, par_detune7, par_detune8, par_detune9, 834 par_phase1, par_phase2, par_phase3, par_phase4, par_phase5, par_phase6, par_phase7, par_phase8, par_phase9, 835 par_pan1, par_pan2, par_pan3, par_pan4, par_pan5, par_pan6, par_pan7, par_pan8, par_pan9, 836 par_routing1, par_routing2, par_routing3, par_routing4, par_routing5, par_routing6, par_routing7, par_routing8, par_routing9, 837 par_foldover, 838 par_percdecay, par_perclevel, par_percwave, par_percharm, par_percvel2amp, 839 par_percfmdecay, par_percfmdepth, par_percfmwave, par_percfmharm, par_percvel2fm, 840 par_perctrigger, par_percstereo, 841 par_filterchain, 842 par_filter1type, 843 par_master, 844 par_f1cutoff, par_f1res, par_f1env1, par_f1env2, par_f1env3, par_f1keyf, 845 par_f2cutoff, par_f2res, par_f2env1, par_f2env2, par_f2env3, par_f2keyf, 846 par_eg1attack, par_eg1decay, par_eg1sustain, par_eg1release, par_eg1velscl, par_eg1ampctl, 847 par_eg2attack, par_eg2decay, par_eg2sustain, par_eg2release, par_eg2velscl, par_eg2ampctl, 848 par_eg3attack, par_eg3decay, par_eg3sustain, par_eg3release, par_eg3velscl, par_eg3ampctl, 849 par_lforate, par_lfoamt, par_lfowet, par_lfophase, par_lfomode, par_lfotype, 850 par_transpose, par_detune, 851 par_polyphony, 852 par_quadenv, 853 par_pwhlrange, 854 par_bassfreq, 855 par_bassgain, 856 par_treblefreq, 857 par_treblegain, 858 par_midi, 859 param_count 860 }; 861 enum organ_waveform { 862 wave_sine, 863 wave_sinepl1, wave_sinepl2, wave_sinepl3, 864 wave_ssaw, wave_ssqr, wave_spls, wave_saw, wave_sqr, wave_pulse, wave_sinepl05, wave_sqr05, wave_halfsin, wave_clvg, wave_bell, wave_bell2, 865 wave_w1, wave_w2, wave_w3, wave_w4, wave_w5, wave_w6, wave_w7, wave_w8, wave_w9, 866 wave_dsaw, wave_dsqr, wave_dpls, 867 wave_count_small, 868 wave_strings = wave_count_small, 869 wave_strings2, 870 wave_sinepad, 871 wave_bellpad, 872 wave_space, 873 wave_choir, 874 wave_choir2, 875 wave_choir3, 876 wave_count, 877 wave_count_big = wave_count - wave_count_small 878 }; 879 enum { 880 ampctl_none, 881 ampctl_direct, 882 ampctl_f1, 883 ampctl_f2, 884 ampctl_all, 885 ampctl_count 886 }; 887 enum { 888 lfotype_allpass = 0, 889 lfotype_cv1, 890 lfotype_cv2, 891 lfotype_cv3, 892 lfotype_cvfull, 893 lfotype_count 894 }; 895 enum { 896 lfomode_off = 0, 897 lfomode_direct, 898 lfomode_filter1, 899 lfomode_filter2, 900 lfomode_voice, 901 lfomode_global, 902 lfomode_count 903 }; 904 enum { 905 perctrig_first = 0, 906 perctrig_each, 907 perctrig_eachplus, 908 perctrig_polyphonic, 909 perctrig_count 910 }; 911 }; 912 913 /// Organ - metadata 914 struct organ_metadata: public organ_enums, public plugin_metadata<organ_metadata> 915 { 916 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = true, require_instance_access = false }; 917 PLUGIN_NAME_ID_LABEL("organ", "organ", "Organ") 918 919 public: 920 plugin_command_info *get_commands() const; 921 void get_configure_vars(std::vector<std::string> &names) const; 922 }; 923 924 /// FluidSynth - metadata 925 struct fluidsynth_metadata: public plugin_metadata<fluidsynth_metadata> 926 { 927 enum { par_master, par_interpolation, par_reverb, par_chorus, param_count }; 928 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = false, require_instance_access = true }; 929 PLUGIN_NAME_ID_LABEL("fluidsynth", "fluidsynth", "Fluidsynth") 930 931 public: 932 void get_configure_vars(std::vector<std::string> &names) const; 933 }; 934 935 /// Wavetable - metadata 936 struct wavetable_metadata: public plugin_metadata<wavetable_metadata> 937 { 938 enum { 939 wt_fmshiny, 940 wt_fmshiny2, 941 wt_rezo, 942 wt_metal, 943 wt_bell, 944 wt_blah, 945 wt_pluck, 946 wt_stretch, 947 wt_stretch2, 948 wt_hardsync, 949 wt_hardsync2, 950 wt_softsync, 951 wt_bell2, 952 wt_bell3, 953 wt_tine, 954 wt_tine2, 955 wt_clav, 956 wt_clav2, 957 wt_gtr, 958 wt_gtr2, 959 wt_gtr3, 960 wt_gtr4, 961 wt_gtr5, 962 wt_reed, 963 wt_reed2, 964 wt_silver, 965 wt_brass, 966 wt_multi, 967 wt_multi2, 968 wt_count 969 }; 970 enum { 971 modsrc_none, 972 modsrc_velocity, 973 modsrc_pressure, 974 modsrc_modwheel, 975 modsrc_env1, 976 modsrc_env2, 977 modsrc_env3, 978 modsrc_lfo1, 979 modsrc_lfo2, 980 modsrc_keyfollow, 981 modsrc_count, 982 }; 983 enum { 984 moddest_none, 985 moddest_attenuation, 986 moddest_oscmix, 987 moddest_cutoff, 988 moddest_resonance, 989 moddest_o1shift, 990 moddest_o2shift, 991 moddest_o1detune, 992 moddest_o2detune, 993 moddest_pitch, 994 moddest_count, 995 }; 996 enum { 997 par_o1wave, par_o1offset, par_o1transpose, par_o1detune, par_o1level, 998 par_o2wave, par_o2offset, par_o2transpose, par_o2detune, par_o2level, 999 par_eg1attack, par_eg1decay, par_eg1sustain, par_eg1fade, par_eg1release, par_eg1velscl, 1000 par_eg2attack, par_eg2decay, par_eg2sustain, par_eg2fade, par_eg2release, par_eg2velscl, 1001 par_eg3attack, par_eg3decay, par_eg3sustain, par_eg3fade, par_eg3release, par_eg3velscl, 1002 par_pwhlrange, 1003 par_eg1toamp, 1004 par_lfo1rate, 1005 par_lfo2rate, 1006 par_midi, 1007 param_count }; 1008 enum { in_count = 0, out_count = 2, ins_optional = 0, outs_optional = 0, support_midi = true, require_midi = true, rt_capable = true, require_instance_access = false }; 1009 enum { mod_matrix_slots = 10 }; 1010 enum { step_size = 64 }; 1011 PLUGIN_NAME_ID_LABEL("wavetable", "wavetable", "Wavetable") 1012 mod_matrix_metadata mm_metadata; 1013 1014 wavetable_metadata(); 1015 /// Lookup of table edit interface get_table_metadata_ifacewavetable_metadata1016 virtual const table_metadata_iface *get_table_metadata_iface(const char *key) const { if (!strcmp(key, "mod_matrix")) return &mm_metadata; else return NULL; } 1017 void get_configure_vars(std::vector<std::string> &names) const; 1018 }; 1019 1020 struct pitch_metadata: public plugin_metadata<pitch_metadata> 1021 { 1022 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 1023 enum { 1024 par_pd_threshold, 1025 par_pd_subdivide, 1026 par_tune, par_note, par_cents, par_clarity, par_freq, 1027 param_count 1028 }; 1029 PLUGIN_NAME_ID_LABEL("pitch", "pitch", "Pitch Tools") 1030 }; 1031 1032 struct widgets_metadata: public plugin_metadata<widgets_metadata> 1033 { 1034 enum { in_count = 2, out_count = 2, ins_optional = 1, outs_optional = 1, support_midi = false, require_midi = false, rt_capable = true, require_instance_access = false }; 1035 enum { 1036 param_meter1, 1037 param_meter2, 1038 param_meter3, 1039 param_meter4, 1040 param_value1, 1041 param_value2, 1042 param_count 1043 }; 1044 PLUGIN_NAME_ID_LABEL("widgets", "widgets", "Widget Test") 1045 }; 1046 1047 }; 1048 1049 #endif 1050