41 using namespace constants;
44 static const std::string kIdDelimiter =
"_";
45 static const std::string kEnvIdPrefix =
"env";
46 static const std::string kLfoIdPrefix =
"lfo";
47 static const std::string kRandomIdPrefix =
"random";
48 static const std::string kOscIdPrefix =
"osc";
49 static const std::string kFilterIdPrefix =
"filter";
50 static const std::string kModulationIdPrefix =
"modulation";
51 static const std::string kNameDelimiter =
" ";
52 static const std::string kEnvNamePrefix =
"Envelope";
53 static const std::string kLfoNamePrefix =
"LFO";
54 static const std::string kRandomNamePrefix =
"Random LFO";
55 static const std::string kOscNamePrefix =
"Oscillator";
56 static const std::string kFilterNamePrefix =
"Filter";
57 static const std::string kModulationNamePrefix =
"Modulation";
60 {
"bypass", 0x000702, 0.0, 1.0, 0.0, 0.0, 60.0,
62 {
"beats_per_minute", 0x000000, 0.333333333, 5.0, 2.0, 0.0, 60.0,
64 {
"delay_dry_wet", 0x000000, 0.0, 1.0, 0.3334, 0.0, 100.0,
66 {
"delay_feedback", 0x000000, -1.0, 1.0, 0.5, 0.0, 100.0,
68 {
"delay_frequency", 0x000000, -2.0, 9.0, 2.0, 0.0, 1.0,
70 {
"delay_aux_frequency", 0x000507, -2.0, 9.0, 2.0, 0.0, 1.0,
72 {
"delay_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
74 {
"delay_style", 0x000000, 0.0, 3.0, 0.0, 0.0, 1.0,
76 {
"delay_filter_cutoff", 0x000000, 8.0, 136.0, 60.0, 0.0, 1.0,
78 {
"delay_filter_spread", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
80 {
"delay_sync", 0x000000, 0.0, 3.0, 1.0, 0.0, 1.0,
82 {
"delay_tempo", 0x000000, 4.0, 12.0, 9.0, 0.0, 1.0,
84 {
"delay_aux_sync", 0x000507, 0.0, 3.0, 1.0, 0.0, 1.0,
86 {
"delay_aux_tempo", 0x000507, 4.0, 12.0, 9.0, 0.0, 1.0,
88 {
"distortion_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
90 {
"distortion_type", 0x000000, 0.0, 5.0, 0.0, 0.0, 1.0,
94 {
"distortion_mix", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
96 {
"distortion_filter_order", 0x000000, 0.0, 2.0, 0.0, 0.0, 1.0,
98 {
"distortion_filter_cutoff", 0x000000, 8.0, 136.0, 80.0, 0.0, 1.0,
100 {
"distortion_filter_resonance", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
102 {
"distortion_filter_blend", 0x000000, 0.0, 2.0, 0.0, 0.0, 1.0,
104 {
"legato", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
106 {
"macro_control_1", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
108 {
"macro_control_2", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
110 {
"macro_control_3", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
112 {
"macro_control_4", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
114 {
"pitch_bend_range", 0x000000, 0.0, 48.0, 2.0, 0.0, 1.0,
116 {
"polyphony", 0x000000, 1.0,
kMaxPolyphony - 1, 8.0, 0.0, 1.0,
118 {
"voice_tune", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
120 {
"voice_transpose", 0x000604, -48.0, 48.0, 0.0, 0.0, 1.0,
122 {
"voice_amplitude", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
124 {
"stereo_routing", 0x000000, 0.0, 1.0, 1.0, 0.0, 100.0,
126 {
"stereo_mode", 0x000605, 0.0, 1.0, 0.0, 0.0, 1.0,
128 {
"portamento_time", 0x000000, -10.0, 4.0, -10.0, 0.0, 1.0,
130 {
"portamento_slope", 0x000000, -8.0, 8.0, 0.0, 0.0, 1.0,
132 {
"portamento_force", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
134 {
"portamento_scale", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
136 {
"reverb_pre_low_cutoff", 0x000000, 0.0, 128.0, 0.0, 0.0, 1.0,
138 {
"reverb_pre_high_cutoff", 0x000000, 0.0, 128.0, 110.0, 0.0, 1.0,
140 {
"reverb_low_shelf_cutoff", 0x000000, 0.0, 128.0, 0.0, 0.0, 1.0,
142 {
"reverb_low_shelf_gain", 0x000000, -6.0, 0.0, 0.0, 0.0, 1.0,
144 {
"reverb_high_shelf_cutoff", 0x000000, 0.0, 128.0, 90.0, 0.0, 1.0,
146 {
"reverb_high_shelf_gain", 0x000000, -6.0, 0.0, -1.0, 0.0, 1.0,
148 {
"reverb_dry_wet", 0x000000, 0.0, 1.0, 0.25, 0.0, 100.0,
150 {
"reverb_delay", 0x000609, 0.0, 0.3, 0.0, 0.0, 1.0,
152 {
"reverb_decay_time", 0x000000, -6.0, 6.0, 0.0, 0.0, 1.0,
154 {
"reverb_size", 0x000506, 0.0, 1.0, 0.5, 0.0, 100.0,
156 {
"reverb_chorus_amount", 0x000000, 0.0, 1.0, 0.223607, 0.0, 100.0,
158 {
"reverb_chorus_frequency", 0x000000, -8.0, 3.0, -2.0, 0.0, 1.0,
160 {
"reverb_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
162 {
"sub_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
164 {
"sub_direct_out", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
166 {
"sub_transpose", 0x000000, -48.0, 48.0, 0.0, 0.0, 1.0,
168 {
"sub_transpose_quantize", 0x000000, 0.0, 8191.0, 0.0, 0.0, 1.0,
170 {
"sub_tune", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
172 {
"sub_level", 0x000000, 0.0, 1.0, 0.70710678119, 0.0, 1.0,
174 {
"sub_pan", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
178 {
"sample_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
180 {
"sample_random_phase", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
182 {
"sample_keytrack", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
184 {
"sample_loop", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
186 {
"sample_bounce", 0x000603, 0.0, 1.0, 0.0, 0.0, 1.0,
188 {
"sample_transpose", 0x000000, -48.0, 48.0, 0.0, 0.0, 1.0,
190 {
"sample_transpose_quantize", 0x000000, 0.0, 8191.0, 0.0, 0.0, 1.0,
192 {
"sample_tune", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
194 {
"sample_level", 0x000000, 0.0, 1.0, 0.70710678119, 0.0, 1.0,
198 {
"sample_pan", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
200 {
"velocity_track", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
202 {
"volume", 0x000000, 0.0, 7399.4404, 5473.0404, -80, 1.0,
204 {
"phaser_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
206 {
"phaser_dry_wet", 0x000000, 0.0, 1.0, 1.0, 0.0, 100.0,
208 {
"phaser_feedback", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
210 {
"phaser_frequency", 0x000000, -5.0, 2.0, -3.0, 0.0, 1.0,
212 {
"phaser_sync", 0x000000, 0.0, 3.0, 1.0, 0.0, 1.0,
214 {
"phaser_tempo", 0x000000, 0.0, 10.0, 3.0, 0.0, 1.0,
216 {
"phaser_center", 0x000000, 8.0, 136.0, 80.0, 0.0, 1.0,
218 {
"phaser_blend", 0x000509, 0.0, 2.0, 1.0, 0.0, 1.0,
220 {
"phaser_mod_depth", 0x000000, 0.0, 48.0, 24.0, 0.0, 1.0,
222 {
"phaser_phase_offset", 0x000000, 0, 1.0, 0.33333333, 0.0,
kDegreesPerCycle,
224 {
"flanger_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
226 {
"flanger_dry_wet", 0x000000, 0.0, 0.5, 0.5, 0.0, 200.0,
228 {
"flanger_feedback", 0x000000, -1.0, 1.0, 0.5, 0.0, 100.0,
230 {
"flanger_frequency", 0x000000, -5.0, 2.0, 2.0, 0.0, 1.0,
232 {
"flanger_sync", 0x000000, 0.0, 3.0, 1.0, 0.0, 1.0,
234 {
"flanger_tempo", 0x000000, 0.0, 10.0, 4.0, 0.0, 1.0,
236 {
"flanger_center", 0x000505, 8.0, 136.0, 64.0, 0.0, 1.0,
238 {
"flanger_mod_depth", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
240 {
"flanger_phase_offset", 0x000000, 0, 1.0, 0.33333333, 0.0,
kDegreesPerCycle,
242 {
"chorus_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
244 {
"chorus_dry_wet", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
246 {
"chorus_feedback", 0x000000, -0.95, 0.95, 0.4, 0.0, 100.0,
248 {
"chorus_cutoff", 0x000000, 8.0, 136.0, 60.0, 0.0, 1.0,
250 {
"chorus_spread", 0x000607, 0.0, 1.0, 1.0, 0.0, 1.0,
252 {
"chorus_voices", 0x000508, 1.0, 4.0, 4.0, 0.0, 4.0,
254 {
"chorus_frequency", 0x000000, -6.0, 3.0, -3.0, 0.0, 1.0,
256 {
"chorus_sync", 0x000000, 0.0, 3.0, 1.0, 0.0, 1.0,
258 {
"chorus_tempo", 0x000000, 0.0, 10.0, 4.0, 0.0, 1.0,
260 {
"chorus_mod_depth", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
262 {
"chorus_delay_1", 0x000000, -10.0, -5.64386, -9.0, 0.0, 1000.0,
264 {
"chorus_delay_2", 0x000000, -10.0, -5.64386, -7.0, 0.0, 1000.0,
266 {
"compressor_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
268 {
"compressor_low_upper_threshold", 0x000000, -80.0, 0.0, -28.0, 0.0, 1.0,
270 {
"compressor_band_upper_threshold", 0x000000, -80.0, 0.0, -25.0, 0.0, 1.0,
272 {
"compressor_high_upper_threshold", 0x000000, -80.0, 0.0, -30.0, 0.0, 1.0,
274 {
"compressor_low_lower_threshold", 0x000000, -80.0, 0.0, -35.0, 0.0, 1.0,
276 {
"compressor_band_lower_threshold", 0x000000, -80.0, 0.0, -36.0, 0.0, 1.0,
278 {
"compressor_high_lower_threshold", 0x000000, -80.0, 0.0, -35.0, 0.0, 1.0,
280 {
"compressor_low_upper_ratio", 0x000000, 0.0, 1.0, 0.9, 0.0, 1.0,
282 {
"compressor_band_upper_ratio", 0x000000, 0.0, 1.0, 0.857, 0.0, 1.0,
284 {
"compressor_high_upper_ratio", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
286 {
"compressor_low_lower_ratio", 0x000000, -1.0, 1.0, 0.8, 0.0, 1.0,
288 {
"compressor_band_lower_ratio", 0x000000, -1.0, 1.0, 0.8, 0.0, 1.0,
290 {
"compressor_high_lower_ratio", 0x000000, -1.0, 1.0, 0.8, 0.0, 1.0,
292 {
"compressor_low_gain", 0x000000, -30.0, 30.0, 16.3, 0.0, 1.0,
294 {
"compressor_band_gain", 0x000000, -30.0, 30.0, 11.7, 0.0, 1.0,
296 {
"compressor_high_gain", 0x000000, -30.0, 30.0, 16.3, 0.0, 1.0,
298 {
"compressor_attack", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
300 {
"compressor_release", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
304 {
"compressor_mix", 0x000602, 0.0, 1.0, 1.0, 0.0, 1.0,
306 {
"compressor_low_band_unused", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
308 {
"eq_on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
310 {
"eq_low_mode", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
312 {
"eq_low_cutoff", 0x000000, 8.0, 136.0, 40.0, 0.0, 1.0,
316 {
"eq_low_resonance", 0x000000, 0.0, 1.0, 0.3163, 0.0, 100.0,
318 {
"eq_band_mode", 0x000506, 0.0, 1.0, 0.0, 0.0, 1.0,
320 {
"eq_band_cutoff", 0x000000, 8.0, 136.0, 80.0, 0.0, 1.0,
324 {
"eq_band_resonance", 0x000000, 0.0, 1.0, 0.4473, 0.0, 100.0,
326 {
"eq_high_mode", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
328 {
"eq_high_cutoff", 0x000000, 8.0, 136.0, 100.0, 0.0, 1.0,
332 {
"eq_high_resonance", 0x000000, 0.0, 1.0, 0.3163, 0.0, 100.0,
340 {
"oversampling", 0x000000, 0.0, 3.0, 1.0, 0.0, 1.0,
342 {
"pitch_wheel", 0x000400, -1.0, 1.0, 0.0, 0.0, 1.0,
344 {
"mod_wheel", 0x000400, 0.0, 1.0, 0.0, 0.0, 1.0,
346 {
"mpe_enabled", 0x000501, 0.0, 1.0, 0.0, 0.0, 1.0,
348 {
"view_spectrogram", 0x000803, 0.0, 2.0, 0.0, 0.0, 1.0,
353 {
"delay", 0x000503, 0.0, 1.4142135624, 0.0, 0.0, 1.0,
355 {
"attack", 0x000000, 0.0, 2.37842, 0.1495, 0.0, 1.0,
357 {
"hold", 0x000504, 0.0, 1.4142135624, 0.0, 0.0, 1.0,
359 {
"decay", 0x000000, 0.0, 2.37842, 1.0, 0.0, 1.0,
361 {
"release", 0x000000, 0.0, 2.37842, 0.5476, 0.0, 1.0,
363 {
"attack_power", 0x000000, -20.0, 20.0, 0.0f, 0.0, 1.0,
365 {
"decay_power", 0x000000, -20.0, 20.0, -2.0f, 0.0, 1.0,
367 {
"release_power", 0x000000, -20.0, 20.0, -2.0f, 0.0, 1.0,
369 {
"sustain", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
374 {
"phase", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
378 {
"frequency", 0x000000, -7.0, 9.0, 1.0, 0.0, 1.0,
382 {
"tempo", 0x000000, 0.0, 12.0, 7.0, 0.0, 1.0,
384 {
"fade_time", 0x000000, 0.0, 8.0, 0.0, 0.0, 1.0,
386 {
"smooth_mode", 0x000801, 0.0, 1.0, 1.0, 0.0, 1.0,
388 {
"smooth_time", 0x000801, -10.0, 4.0, -7.5, 0.0, 1.0,
390 {
"delay_time", 0x000000, 0.0, 4.0, 0.0, 0.0, 1.0,
392 {
"stereo", 0x000406, -0.5, 0.5, 0.0, 0.0, 1.0,
394 {
"keytrack_transpose", 0x000704, -60.0, 36.0, -12.0, 0.0, 1.0,
396 {
"keytrack_tune", 0x000704, -1.0, 1.0, 0.0, 0.0, 100.0,
403 {
"frequency", 0x000401, -7.0, 9.0, 1.0, 0.0, 1.0,
407 {
"tempo", 0x000401, 0.0, 12.0, 8.0, 0.0, 1.0,
409 {
"stereo", 0x000401, 0.0, 1.0, 0.0, 0.0, 1.0,
411 {
"sync_type", 0x000600, 0.0, 1.0, 0.0, 0.0, 1.0,
413 {
"keytrack_transpose", 0x000704, -60.0, 36.0, -12.0, 0.0, 1.0,
415 {
"keytrack_tune", 0x000704, -1.0, 1.0, 0.0, 0.0, 100.0,
420 {
"mix", 0x000000, 0.0f, 1.0f, 1.0f, 0.0, 100.0,
422 {
"cutoff", 0x000000, 8.0, 136.0, 60.0, -60.0, 1.0,
424 {
"resonance", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
426 {
"drive", 0x000000, 0.0, 20.0, 0.0, 0.0, 1.0,
428 {
"blend", 0x000000, 0.0, 2.0, 0.0, 0.0, 1.0,
430 {
"style", 0x000000, 0.0, 9.0, 0.0, 0.0, 1.0,
434 {
"on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
436 {
"blend_transpose", 0x000000, 0.0, 84.0, 42.0, 0.0, 1.0,
438 {
"keytrack", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
440 {
"formant_x", 0x000000, 0.0, 1.0, 0.5, 0.0, 1.0,
442 {
"formant_y", 0x000000, 0.0, 1.0, 0.5, 0.0, 1.0,
444 {
"formant_transpose", 0x000000, -12.0, 12.0, 0.0, 0.0, 1.0,
446 {
"formant_resonance", 0x000000, 0.3, 1.0, 0.85, 0.0, 100.0,
448 {
"formant_spread", 0x000707, -1.0, 1.0, 0.0, 0.0, 100.0,
450 {
"osc1_input", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
452 {
"osc2_input", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
454 {
"osc3_input", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
456 {
"sample_input", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
458 {
"filter_input", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
463 {
"on", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
465 {
"transpose", 0x000000, -48.0, 48.0, 0.0, 0.0, 1.0,
467 {
"transpose_quantize", 0x000000, 0.0, 8191.0, 0.0, 0.0, 1.0,
469 {
"tune", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
471 {
"pan", 0x000000, -1.0, 1.0, 0.0, 0.0, 100.0,
475 {
"unison_detune", 0x000000, 0.0, 10.0, 4.472135955, 0.0, 1.0,
477 {
"unison_voices", 0x000000, 1.0, 16.0, 1.0, 0.0, 1.0,
479 {
"unison_blend", 0x000000, 0.0, 1.0, 0.8, 0.0, 100.0,
481 {
"detune_power", 0x000000, -5.0, 5.0, 1.5, 0.0, 1.0,
483 {
"detune_range", 0x000000, 0.0, 48.0, 2.0, 0.0, 1.0,
485 {
"level", 0x000000, 0.0, 1.0, 0.70710678119, 0.0, 1.0,
487 {
"midi_track", 0x000000, 0.0, 1.0, 1.0, 0.0, 1.0,
489 {
"smooth_interpolation", 0x000000, 0.0, 1.0, 0.0, 0.0, 1.0,
491 {
"spectral_unison", 0x000500, 0.0, 1.0, 1.0, 0.0, 1.0,
497 {
"stereo_spread", 0x000000, 0.0, 1.0, 1.0, 0.0, 100.0,
499 {
"phase", 0x000000, 0.0, 1.0, 0.5, 0.0, 360.0,
501 {
"distortion_phase", 0x000000, 0.0, 1.0, 0.5, 0.0, 360.0,
503 {
"random_phase", 0x000000, 0.0, 1.0, 1.0, 0.0, 100.0,
507 {
"distortion_amount", 0x000000, 0.0, 1.0, 0.5, 0.0, 100.0,
509 {
"distortion_spread", 0x000000, -0.5, 0.5, 0.0, 0.0, 200.0,
513 {
"spectral_morph_amount", 0x000407, 0.0, 1.0, 0.5, 0.0, 100.0,
515 {
"spectral_morph_spread", 0x000407, -0.5, 0.5, 0.0, 0.0, 200.0,
519 {
"view_2d", 0x000402, 0.0, 2.0, 1.0, 0.0, 1.0,
524 {
"amount", 0x000000, -1.0, 1.0, 0.0, 0.0, 1.0,
526 {
"power", 0x000000, -10.0, 10.0, 0.0, 0.0, 1.0,
528 {
"bipolar", 0x000000, 0.0, 1.0f, 0.0, 0.0, 1.0,
530 {
"stereo", 0x000000, 0.0, 1.0f, 0.0, 0.0, 1.0,
532 {
"bypass", 0x000000, 0.0, 1.0f, 0.0, 0.0, 1.0,
538 static constexpr int kNumOscillatorsOld = 2;
539 static constexpr int kNewOscillatorVersion = 0x000500;
540 static constexpr int kOldMaxModulations = 32;
541 static constexpr int kNewModulationVersion = 0x000601;
545 for (
int i = 0; i < num_parameters; ++i) {
560 for (
int lfo = 0; lfo <
kNumLfos; ++lfo)
570 for (
int osc = 0; osc < kNumOscillatorsOld; ++osc)
575 kOscNamePrefix, kNewOscillatorVersion);
580 for (
int filter = 0; filter <
kNumFilters; ++filter)
587 for (
int modulation = 0; modulation < kOldMaxModulations; ++modulation) {
589 kModulationIdPrefix, kModulationNamePrefix);
594 kModulationIdPrefix, kModulationNamePrefix, kNewModulationVersion);
598 details_lookup_[
"osc_1_on"].default_value = 1.0f;
599 details_lookup_[
"osc_2_destination"].default_value = 1.0f;
600 details_lookup_[
"osc_3_destination"].default_value = 3.0f;
601 details_lookup_[
"filter_1_osc1_input"].default_value = 1.0f;
602 details_lookup_[
"filter_2_osc2_input"].default_value = 1.0f;
609 std::string id_prefix, std::string name_prefix,
int version) {
610 std::string string_num = std::to_string(index + 1);
611 addParameterGroup(list, num_parameters, string_num, id_prefix, name_prefix, version);
615 std::string id_prefix, std::string name_prefix,
int version) {
616 std::string id_start = id_prefix + kIdDelimiter +
id + kIdDelimiter;
617 std::string name_start = name_prefix + kNameDelimiter +
id + kNameDelimiter;
620 for (
int i = 0; i < num_parameters; ++i) {
625 details.
name = id_start + details.
name;
628 details_lookup_[details.
name] = details;
629 details_list_.push_back(&details_lookup_[details.
name]);
static constexpr mono_float kMaxGain
Maximum gain in dB for shelf or gain-based operations.
Definition digital_svf.h:37
static constexpr mono_float kMinGain
Minimum gain in dB for shelf or gain-based operations.
Definition digital_svf.h:42
static constexpr mono_float kMinDrive
Minimum allowed drive in decibels.
Definition distortion.h:26
static constexpr mono_float kMaxDrive
Maximum allowed drive in decibels.
Definition distortion.h:21
@ kNumBandOptions
Definition compressor.h:221
static ValueDetailsLookup lookup_
Definition synth_parameters.h:228
@ kNumShapes
Definition wave_frame.h:153
@ kNumStyles
Definition random_lfo.h:77
@ kNumSyncTypes
Definition synth_lfo.h:79
@ kNumSyncOptions
Definition synth_lfo.h:98
@ kNumDistortionTypes
Definition synth_oscillator.h:159
@ kNumSpectralMorphTypes
Definition synth_oscillator.h:139
@ kNumUnisonStackTypes
Definition synth_oscillator.h:177
Maintains a lookup table for all parameters defined in Vital.
Definition synth_parameters.h:63
static const ValueDetails parameter_list[]
Definition synth_parameters.h:173
static const ValueDetails osc_parameter_list[]
Definition synth_parameters.h:178
static const ValueDetails random_lfo_parameter_list[]
Definition synth_parameters.h:176
static const ValueDetails env_parameter_list[]
Definition synth_parameters.h:174
static const ValueDetails filter_parameter_list[]
Definition synth_parameters.h:177
ValueDetailsLookup()
Constructs a ValueDetailsLookup and initializes its parameter tables.
Definition synth_parameters.cpp:537
static const ValueDetails mod_parameter_list[]
Definition synth_parameters.h:179
static const ValueDetails lfo_parameter_list[]
Definition synth_parameters.h:175
void addParameterGroup(const ValueDetails *list, int num_parameters, int index, std::string id_prefix, std::string name_prefix, int version=-1)
Adds a group of parameters, each with prefixed names and display names.
Definition synth_parameters.cpp:608
@ kNumVoiceOverrides
Definition voice_handler.h:403
@ kKill
Immediately kill an existing voice to free one.
Definition voice_handler.h:401
@ kRoundRobin
Definition voice_handler.h:415
@ kNumVoicePriorities
Definition voice_handler.h:416
#define VITAL_ASSERT(x)
Definition common.h:11
const std::string kFilterModelNames[]
Names of different filter models (analog, dirty, ladder, etc.).
Definition synth_strings.h:197
const std::string kPhaseDistortionNames[]
Names of different phase distortion modes.
Definition synth_strings.h:429
const std::string kSyncedFrequencyNames[]
Names for synced LFO frequencies (Freeze, 32/1, 16/1, etc.).
Definition synth_strings.h:241
const std::string kRandomNames[]
Full names for different random generator modes.
Definition synth_strings.h:316
const std::string kEqHighModeNames[]
Names for EQ high band modes.
Definition synth_strings.h:360
const std::string kOversamplingNames[]
Names for oversampling rates.
Definition synth_strings.h:37
const std::string kVoicePriorityNames[]
Voice allocation priority modes (e.g., newest, oldest note).
Definition synth_strings.h:339
const std::string kUnisonStackNames[]
Names for different unison voice stacking modes.
Definition synth_strings.h:97
const std::string kFilterStyleNames[]
Filter style names for visualizing different filter slopes and blends.
Definition synth_strings.h:115
const std::string kFrequencySyncNames[]
Names for frequency synchronization modes (time, tempo, keytrack, etc.).
Definition synth_strings.h:149
const std::string kEqLowModeNames[]
Names for EQ low band modes.
Definition synth_strings.h:378
const std::string kDistortionFilterOrderNames[]
Filter order names for distortion section (pre, post, none).
Definition synth_strings.h:187
const std::string kVoiceOverrideNames[]
Behavior of what happens when voice limit is exceeded (kill or steal).
Definition synth_strings.h:351
const std::string kCompressorBandNames[]
Full names for compressor band modes.
Definition synth_strings.h:59
const std::string kDestinationNames[vital::constants::kNumSourceDestinations+vital::constants::kNumEffects]
Names of possible audio routing destinations (filters, effects).
Definition synth_strings.h:387
const std::string kDelayStyleNames[]
Names for delay line styles (mono, stereo, ping-pong, etc.).
Definition synth_strings.h:48
const std::string kOffOnNames[]
Off/On state names.
Definition synth_strings.h:18
const std::string kSyncNames[]
Full names for different sync/re-triggering modes of modulators.
Definition synth_strings.h:292
const std::string kEqBandModeNames[]
Names for EQ band modes (Shelf or Notch).
Definition synth_strings.h:369
const std::string kStereoModeNames[vital::StereoEncoder::kNumStereoModes]
Names for stereo routing modes.
Definition synth_strings.h:261
const std::string kDistortionTypeNames[]
More descriptive names for various distortion types.
Definition synth_strings.h:174
const std::string kSpectralMorphNames[]
Names for spectral morphing modes in the wavetable.
Definition synth_strings.h:449
@ kNumEffects
Definition synth_constants.h:187
@ kNumFilterModels
Definition synth_constants.h:203
@ kNumSourceDestinations
Definition synth_constants.h:121
constexpr int factorial(int value)
Computes the factorial of a given integer at compile time.
Definition utils.h:38
Contains classes and functions used within the Vital synthesizer framework.
constexpr int kNumOscillators
Number of oscillators available in Vital.
Definition synth_constants.h:16
constexpr int kNumFilters
Number of filter slots in Vital.
Definition synth_constants.h:31
constexpr int kNumRandomLfos
Number of random LFO sources (random modulation generators).
Definition synth_constants.h:25
constexpr int kDegreesPerCycle
Degrees in a full rotation (for LFO phases).
Definition common.h:49
constexpr int kMaxPolyphony
The maximum number of voices allocated for polyphony (includes an extra for handling transitions).
Definition synth_constants.h:40
constexpr int kNumEnvelopes
Number of envelope generators in Vital.
Definition synth_constants.h:22
constexpr int kNumOscillatorWaveFrames
Number of wave frames in each oscillator’s wavetable.
Definition synth_constants.h:19
constexpr int kNumLfos
Number of LFO sources available in the Vital synthesizer.
Definition synth_constants.h:13
constexpr int kMaxModulationConnections
Maximum number of modulation connections allowed.
Definition synth_constants.h:49
bool compareValueDetails(const ValueDetails *a, const ValueDetails *b)
Comparison function for sorting parameters by version and name.
Definition synth_parameters.cpp:34
Holds metadata about a single parameter (control) in the Vital synthesizer.
Definition synth_parameters.h:23
@ kQuartic
Parameter value transformed by a quartic curve.
Definition synth_parameters.h:33
@ kSquareRoot
Parameter value transformed by a square root function.
Definition synth_parameters.h:34
@ kLinear
Parameter scales linearly between min and max.
Definition synth_parameters.h:30
@ kExponential
Parameter value transformed by an exponential function.
Definition synth_parameters.h:35
@ kIndexed
Parameter steps through discrete indexed values.
Definition synth_parameters.h:29
@ kQuadratic
Parameter value transformed by a quadratic curve.
Definition synth_parameters.h:31
std::string display_name
Human-readable name for display in UI.
Definition synth_parameters.h:48
std::string local_description
Local description or additional metadata.
Definition synth_parameters.h:50
int version_added
Version code when the parameter was introduced or changed.
Definition synth_parameters.h:39
std::string name
Unique parameter name/identifier.
Definition synth_parameters.h:38
Provides various utility functions, classes, and constants for audio, math, and general-purpose opera...
Declares classes and data structures to handle polyphonic voices in Vital, including voice assignment...