Modular sub-engines computed amp_val as a pure function of mod_amp (the matrix d08_amp destination sum), so once the MLP drove the matrix cells every joystick movement had a chance to silence the voice: matrix cells have signed range [-1, 1], sigmoid outputs near 0.5 denormalise to 0, and the amp gate collapsed. Additive survived in scattered regions because it only has one kill-switch (d08_amp); subtractive and fm were almost always dead because they also have d05_cutoff and d01_op1_level. Two changes: 1. DSP: each sub-engine gets a base_amp hslider (default 1.0) so amp_val = clamp(base_amp + mod_amp) * level * vel_gain. At the default the voice is always fully open and d08_amp modulation is purely additive decoration; drop base_amp to 0 for classic ADSR-gated VCA behaviour. 2. ModularEngine._rebuildParamMeta: restore the _exposedMatrixCells gate (default empty). paramCount drops from 512 to 32 (4 ADSR * 4 + 8 LFO * 2); matrix cells are opt-in via setExposeMatrixCell. _applyDefaultPatch no longer writes s00_d08_amp since base_amp keeps the voice audible without routing. Tests updated for the new 32-param baseline; matrix-cell persistence test now calls setExposeMatrixCell(1, 5, true) before asserting the cell lands in paramMeta. Drive-by: engine-switching test bumped from 3 to 4 engine cards (stale since the modular engine was added).
1211 lines
70 KiB
Text
1211 lines
70 KiB
Text
// modular-additive.dsp — 64-partial additive voice for the "Modular" mode.
|
||
//
|
||
// AUTO-GENERATED by gen-modular-dsp.py. DO NOT EDIT BY HAND.
|
||
// Regenerate with:
|
||
// cd playground/faust && python3 gen-modular-dsp.py
|
||
//
|
||
// Audio path: 64 harmonic sines with spectral descriptors (tilt, odd/even, formants).
|
||
// All envelopes and LFOs come from mod-pool.lib via a 48-source × 10-dest
|
||
// modulation matrix. No internal envs/LFOs.
|
||
//
|
||
// Modulation destinations (10):
|
||
// 0 pitch semitones, applied to the fundamental frequency
|
||
// 1 bright high-partial group amplitude boost/cut (replaces bright env)
|
||
// 2 tilt added to spectral_tilt knob
|
||
// 3 inharmonicity added to inharmonicity knob
|
||
// 4 odd_even added to odd/even balance knob
|
||
// 5 formant_ctr shifts both formant centre frequencies (harmonic index)
|
||
// 6 formant_depth added to formant_depth knob
|
||
// 7 noise_mix added to noise_floor knob (clamped 0..1)
|
||
// 8 amp master amplitude dest (route an ADSR here for a VCA env)
|
||
// 9 pan stereo balance
|
||
//
|
||
// Hidden controls (driven by noteOn/noteOff, not by the ML engine):
|
||
// freq, gate, _vel
|
||
//
|
||
// Build:
|
||
// cd playground/faust && ./build.sh
|
||
//
|
||
// ---------------------------------------------------------------------------
|
||
|
||
import("stdfaust.lib");
|
||
mp = library("mod-pool.lib");
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Hidden controls
|
||
// ---------------------------------------------------------------------------
|
||
freq = hslider("0_Hidden/freq[hidden:1][unit:Hz]", 220, 20, 4000, 0.01);
|
||
gate = button("0_Hidden/gate[hidden:1]");
|
||
vel = hslider("0_Hidden/_vel[hidden:1]", 0.7, 0.0, 1.0, 0.001) : si.smoo;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Group 1 — Spectral Shape (harmonic bank + descriptors)
|
||
// ---------------------------------------------------------------------------
|
||
h1_amp = hslider("1_Spectral/00_h1_amp", 0.8, 0.0, 1.0, 0.001);
|
||
h2_amp = hslider("1_Spectral/01_h2_amp", 0.5, 0.0, 1.0, 0.001);
|
||
h3_amp = hslider("1_Spectral/02_h3_amp", 0.35, 0.0, 1.0, 0.001);
|
||
h4_amp = hslider("1_Spectral/03_h4_amp", 0.25, 0.0, 1.0, 0.001);
|
||
h5_amp = hslider("1_Spectral/04_h5_amp", 0.18, 0.0, 1.0, 0.001);
|
||
h6_amp = hslider("1_Spectral/05_h6_amp", 0.12, 0.0, 1.0, 0.001);
|
||
h7_amp = hslider("1_Spectral/06_h7_amp", 0.08, 0.0, 1.0, 0.001);
|
||
h8_amp = hslider("1_Spectral/07_h8_amp", 0.06, 0.0, 1.0, 0.001);
|
||
h9_16_amp = hslider("1_Spectral/08_h9_16_amp", 0.05, 0.0, 1.0, 0.001);
|
||
h17_32_amp = hslider("1_Spectral/09_h17_32_amp", 0.025, 0.0, 1.0, 0.001);
|
||
h33_64_amp = hslider("1_Spectral/10_h33_64_amp", 0.01, 0.0, 1.0, 0.001);
|
||
spectral_tilt = hslider("1_Spectral/11_spectral_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
inharmonicity = hslider("1_Spectral/12_inharmonicity", 0.0, 0.0, 0.15, 0.0001);
|
||
odd_even = hslider("1_Spectral/13_odd_even", 0.5, 0.0, 1.0, 0.001);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Group 2 — Formants & Noise
|
||
// ---------------------------------------------------------------------------
|
||
formant1_freq = hslider("2_Formants/00_formant1_freq[tooltip:Formant 1 harmonic idx]", 3.0, 1.0, 16.0, 0.01);
|
||
formant2_freq = hslider("2_Formants/01_formant2_freq[tooltip:Formant 2 harmonic idx]", 6.0, 1.0, 16.0, 0.01);
|
||
formant_depth = hslider("2_Formants/02_formant_depth", 0.0, 0.0, 1.0, 0.001);
|
||
noise_floor = hslider("2_Formants/03_noise_floor", 0.0, 0.0, 0.2, 0.001);
|
||
noise_color = hslider("2_Formants/04_noise_color", 0.5, 0.0, 1.0, 0.001);
|
||
sub_harmonic = hslider("2_Formants/05_sub_harmonic", 0.0, 0.0, 1.0, 0.001);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Group 3 — Master
|
||
// ---------------------------------------------------------------------------
|
||
level = hslider("3_Master/00_level", 0.7, 0.0, 1.0, 0.001);
|
||
fine_tune = hslider("3_Master/01_fine_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1);
|
||
saturation = hslider("3_Master/02_saturation", 0.0, 0.0, 1.0, 0.001);
|
||
stereo_phase_spread= hslider("3_Master/03_stereo_phase_spread",0.1, 0.0, 1.0, 0.001);
|
||
master_pan = hslider("3_Master/04_master_pan", 0.0, -1.0, 1.0, 0.001);
|
||
// Static amp floor — see subtractive engine for full explanation.
|
||
base_amp = hslider("3_Master/05_base_amp", 1.0, 0.0, 1.0, 0.001);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Modulation matrix — 48 sources × 10 destinations.
|
||
// Each hslider is one "amount" entry in [-1, +1]. Zero = no connection.
|
||
// Group "MM_Matrix" so the paramMeta parser can recognise matrix params.
|
||
// ---------------------------------------------------------------------------
|
||
|
||
// Matrix column: destination 0 = pitch
|
||
amt_s00_d00_pitch = hslider("MM_Matrix/s00_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d00_pitch = hslider("MM_Matrix/s01_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d00_pitch = hslider("MM_Matrix/s02_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d00_pitch = hslider("MM_Matrix/s03_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d00_pitch = hslider("MM_Matrix/s04_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d00_pitch = hslider("MM_Matrix/s05_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d00_pitch = hslider("MM_Matrix/s06_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d00_pitch = hslider("MM_Matrix/s07_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d00_pitch = hslider("MM_Matrix/s08_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d00_pitch = hslider("MM_Matrix/s09_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d00_pitch = hslider("MM_Matrix/s10_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d00_pitch = hslider("MM_Matrix/s11_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d00_pitch = hslider("MM_Matrix/s12_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d00_pitch = hslider("MM_Matrix/s13_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d00_pitch = hslider("MM_Matrix/s14_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d00_pitch = hslider("MM_Matrix/s15_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d00_pitch = hslider("MM_Matrix/s16_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d00_pitch = hslider("MM_Matrix/s17_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d00_pitch = hslider("MM_Matrix/s18_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d00_pitch = hslider("MM_Matrix/s19_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d00_pitch = hslider("MM_Matrix/s20_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d00_pitch = hslider("MM_Matrix/s21_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d00_pitch = hslider("MM_Matrix/s22_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d00_pitch = hslider("MM_Matrix/s23_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d00_pitch = hslider("MM_Matrix/s24_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d00_pitch = hslider("MM_Matrix/s25_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d00_pitch = hslider("MM_Matrix/s26_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d00_pitch = hslider("MM_Matrix/s27_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d00_pitch = hslider("MM_Matrix/s28_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d00_pitch = hslider("MM_Matrix/s29_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d00_pitch = hslider("MM_Matrix/s30_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d00_pitch = hslider("MM_Matrix/s31_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d00_pitch = hslider("MM_Matrix/s32_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d00_pitch = hslider("MM_Matrix/s33_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d00_pitch = hslider("MM_Matrix/s34_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d00_pitch = hslider("MM_Matrix/s35_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d00_pitch = hslider("MM_Matrix/s36_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d00_pitch = hslider("MM_Matrix/s37_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d00_pitch = hslider("MM_Matrix/s38_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d00_pitch = hslider("MM_Matrix/s39_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d00_pitch = hslider("MM_Matrix/s40_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d00_pitch = hslider("MM_Matrix/s41_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d00_pitch = hslider("MM_Matrix/s42_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d00_pitch = hslider("MM_Matrix/s43_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d00_pitch = hslider("MM_Matrix/s44_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d00_pitch = hslider("MM_Matrix/s45_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d00_pitch = hslider("MM_Matrix/s46_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d00_pitch = hslider("MM_Matrix/s47_d00_pitch", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 1 = bright
|
||
amt_s00_d01_bright = hslider("MM_Matrix/s00_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d01_bright = hslider("MM_Matrix/s01_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d01_bright = hslider("MM_Matrix/s02_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d01_bright = hslider("MM_Matrix/s03_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d01_bright = hslider("MM_Matrix/s04_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d01_bright = hslider("MM_Matrix/s05_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d01_bright = hslider("MM_Matrix/s06_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d01_bright = hslider("MM_Matrix/s07_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d01_bright = hslider("MM_Matrix/s08_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d01_bright = hslider("MM_Matrix/s09_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d01_bright = hslider("MM_Matrix/s10_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d01_bright = hslider("MM_Matrix/s11_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d01_bright = hslider("MM_Matrix/s12_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d01_bright = hslider("MM_Matrix/s13_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d01_bright = hslider("MM_Matrix/s14_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d01_bright = hslider("MM_Matrix/s15_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d01_bright = hslider("MM_Matrix/s16_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d01_bright = hslider("MM_Matrix/s17_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d01_bright = hslider("MM_Matrix/s18_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d01_bright = hslider("MM_Matrix/s19_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d01_bright = hslider("MM_Matrix/s20_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d01_bright = hslider("MM_Matrix/s21_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d01_bright = hslider("MM_Matrix/s22_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d01_bright = hslider("MM_Matrix/s23_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d01_bright = hslider("MM_Matrix/s24_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d01_bright = hslider("MM_Matrix/s25_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d01_bright = hslider("MM_Matrix/s26_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d01_bright = hslider("MM_Matrix/s27_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d01_bright = hslider("MM_Matrix/s28_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d01_bright = hslider("MM_Matrix/s29_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d01_bright = hslider("MM_Matrix/s30_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d01_bright = hslider("MM_Matrix/s31_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d01_bright = hslider("MM_Matrix/s32_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d01_bright = hslider("MM_Matrix/s33_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d01_bright = hslider("MM_Matrix/s34_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d01_bright = hslider("MM_Matrix/s35_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d01_bright = hslider("MM_Matrix/s36_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d01_bright = hslider("MM_Matrix/s37_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d01_bright = hslider("MM_Matrix/s38_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d01_bright = hslider("MM_Matrix/s39_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d01_bright = hslider("MM_Matrix/s40_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d01_bright = hslider("MM_Matrix/s41_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d01_bright = hslider("MM_Matrix/s42_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d01_bright = hslider("MM_Matrix/s43_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d01_bright = hslider("MM_Matrix/s44_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d01_bright = hslider("MM_Matrix/s45_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d01_bright = hslider("MM_Matrix/s46_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d01_bright = hslider("MM_Matrix/s47_d01_bright", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 2 = tilt
|
||
amt_s00_d02_tilt = hslider("MM_Matrix/s00_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d02_tilt = hslider("MM_Matrix/s01_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d02_tilt = hslider("MM_Matrix/s02_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d02_tilt = hslider("MM_Matrix/s03_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d02_tilt = hslider("MM_Matrix/s04_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d02_tilt = hslider("MM_Matrix/s05_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d02_tilt = hslider("MM_Matrix/s06_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d02_tilt = hslider("MM_Matrix/s07_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d02_tilt = hslider("MM_Matrix/s08_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d02_tilt = hslider("MM_Matrix/s09_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d02_tilt = hslider("MM_Matrix/s10_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d02_tilt = hslider("MM_Matrix/s11_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d02_tilt = hslider("MM_Matrix/s12_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d02_tilt = hslider("MM_Matrix/s13_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d02_tilt = hslider("MM_Matrix/s14_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d02_tilt = hslider("MM_Matrix/s15_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d02_tilt = hslider("MM_Matrix/s16_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d02_tilt = hslider("MM_Matrix/s17_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d02_tilt = hslider("MM_Matrix/s18_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d02_tilt = hslider("MM_Matrix/s19_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d02_tilt = hslider("MM_Matrix/s20_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d02_tilt = hslider("MM_Matrix/s21_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d02_tilt = hslider("MM_Matrix/s22_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d02_tilt = hslider("MM_Matrix/s23_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d02_tilt = hslider("MM_Matrix/s24_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d02_tilt = hslider("MM_Matrix/s25_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d02_tilt = hslider("MM_Matrix/s26_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d02_tilt = hslider("MM_Matrix/s27_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d02_tilt = hslider("MM_Matrix/s28_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d02_tilt = hslider("MM_Matrix/s29_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d02_tilt = hslider("MM_Matrix/s30_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d02_tilt = hslider("MM_Matrix/s31_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d02_tilt = hslider("MM_Matrix/s32_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d02_tilt = hslider("MM_Matrix/s33_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d02_tilt = hslider("MM_Matrix/s34_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d02_tilt = hslider("MM_Matrix/s35_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d02_tilt = hslider("MM_Matrix/s36_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d02_tilt = hslider("MM_Matrix/s37_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d02_tilt = hslider("MM_Matrix/s38_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d02_tilt = hslider("MM_Matrix/s39_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d02_tilt = hslider("MM_Matrix/s40_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d02_tilt = hslider("MM_Matrix/s41_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d02_tilt = hslider("MM_Matrix/s42_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d02_tilt = hslider("MM_Matrix/s43_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d02_tilt = hslider("MM_Matrix/s44_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d02_tilt = hslider("MM_Matrix/s45_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d02_tilt = hslider("MM_Matrix/s46_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d02_tilt = hslider("MM_Matrix/s47_d02_tilt", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 3 = inharmonicity
|
||
amt_s00_d03_inharmonicity = hslider("MM_Matrix/s00_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d03_inharmonicity = hslider("MM_Matrix/s01_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d03_inharmonicity = hslider("MM_Matrix/s02_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d03_inharmonicity = hslider("MM_Matrix/s03_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d03_inharmonicity = hslider("MM_Matrix/s04_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d03_inharmonicity = hslider("MM_Matrix/s05_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d03_inharmonicity = hslider("MM_Matrix/s06_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d03_inharmonicity = hslider("MM_Matrix/s07_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d03_inharmonicity = hslider("MM_Matrix/s08_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d03_inharmonicity = hslider("MM_Matrix/s09_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d03_inharmonicity = hslider("MM_Matrix/s10_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d03_inharmonicity = hslider("MM_Matrix/s11_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d03_inharmonicity = hslider("MM_Matrix/s12_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d03_inharmonicity = hslider("MM_Matrix/s13_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d03_inharmonicity = hslider("MM_Matrix/s14_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d03_inharmonicity = hslider("MM_Matrix/s15_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d03_inharmonicity = hslider("MM_Matrix/s16_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d03_inharmonicity = hslider("MM_Matrix/s17_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d03_inharmonicity = hslider("MM_Matrix/s18_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d03_inharmonicity = hslider("MM_Matrix/s19_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d03_inharmonicity = hslider("MM_Matrix/s20_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d03_inharmonicity = hslider("MM_Matrix/s21_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d03_inharmonicity = hslider("MM_Matrix/s22_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d03_inharmonicity = hslider("MM_Matrix/s23_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d03_inharmonicity = hslider("MM_Matrix/s24_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d03_inharmonicity = hslider("MM_Matrix/s25_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d03_inharmonicity = hslider("MM_Matrix/s26_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d03_inharmonicity = hslider("MM_Matrix/s27_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d03_inharmonicity = hslider("MM_Matrix/s28_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d03_inharmonicity = hslider("MM_Matrix/s29_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d03_inharmonicity = hslider("MM_Matrix/s30_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d03_inharmonicity = hslider("MM_Matrix/s31_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d03_inharmonicity = hslider("MM_Matrix/s32_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d03_inharmonicity = hslider("MM_Matrix/s33_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d03_inharmonicity = hslider("MM_Matrix/s34_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d03_inharmonicity = hslider("MM_Matrix/s35_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d03_inharmonicity = hslider("MM_Matrix/s36_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d03_inharmonicity = hslider("MM_Matrix/s37_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d03_inharmonicity = hslider("MM_Matrix/s38_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d03_inharmonicity = hslider("MM_Matrix/s39_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d03_inharmonicity = hslider("MM_Matrix/s40_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d03_inharmonicity = hslider("MM_Matrix/s41_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d03_inharmonicity = hslider("MM_Matrix/s42_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d03_inharmonicity = hslider("MM_Matrix/s43_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d03_inharmonicity = hslider("MM_Matrix/s44_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d03_inharmonicity = hslider("MM_Matrix/s45_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d03_inharmonicity = hslider("MM_Matrix/s46_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d03_inharmonicity = hslider("MM_Matrix/s47_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 4 = odd_even
|
||
amt_s00_d04_odd_even = hslider("MM_Matrix/s00_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d04_odd_even = hslider("MM_Matrix/s01_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d04_odd_even = hslider("MM_Matrix/s02_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d04_odd_even = hslider("MM_Matrix/s03_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d04_odd_even = hslider("MM_Matrix/s04_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d04_odd_even = hslider("MM_Matrix/s05_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d04_odd_even = hslider("MM_Matrix/s06_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d04_odd_even = hslider("MM_Matrix/s07_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d04_odd_even = hslider("MM_Matrix/s08_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d04_odd_even = hslider("MM_Matrix/s09_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d04_odd_even = hslider("MM_Matrix/s10_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d04_odd_even = hslider("MM_Matrix/s11_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d04_odd_even = hslider("MM_Matrix/s12_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d04_odd_even = hslider("MM_Matrix/s13_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d04_odd_even = hslider("MM_Matrix/s14_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d04_odd_even = hslider("MM_Matrix/s15_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d04_odd_even = hslider("MM_Matrix/s16_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d04_odd_even = hslider("MM_Matrix/s17_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d04_odd_even = hslider("MM_Matrix/s18_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d04_odd_even = hslider("MM_Matrix/s19_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d04_odd_even = hslider("MM_Matrix/s20_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d04_odd_even = hslider("MM_Matrix/s21_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d04_odd_even = hslider("MM_Matrix/s22_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d04_odd_even = hslider("MM_Matrix/s23_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d04_odd_even = hslider("MM_Matrix/s24_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d04_odd_even = hslider("MM_Matrix/s25_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d04_odd_even = hslider("MM_Matrix/s26_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d04_odd_even = hslider("MM_Matrix/s27_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d04_odd_even = hslider("MM_Matrix/s28_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d04_odd_even = hslider("MM_Matrix/s29_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d04_odd_even = hslider("MM_Matrix/s30_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d04_odd_even = hslider("MM_Matrix/s31_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d04_odd_even = hslider("MM_Matrix/s32_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d04_odd_even = hslider("MM_Matrix/s33_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d04_odd_even = hslider("MM_Matrix/s34_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d04_odd_even = hslider("MM_Matrix/s35_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d04_odd_even = hslider("MM_Matrix/s36_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d04_odd_even = hslider("MM_Matrix/s37_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d04_odd_even = hslider("MM_Matrix/s38_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d04_odd_even = hslider("MM_Matrix/s39_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d04_odd_even = hslider("MM_Matrix/s40_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d04_odd_even = hslider("MM_Matrix/s41_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d04_odd_even = hslider("MM_Matrix/s42_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d04_odd_even = hslider("MM_Matrix/s43_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d04_odd_even = hslider("MM_Matrix/s44_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d04_odd_even = hslider("MM_Matrix/s45_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d04_odd_even = hslider("MM_Matrix/s46_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d04_odd_even = hslider("MM_Matrix/s47_d04_odd_even", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 5 = formant_ctr
|
||
amt_s00_d05_formant_ctr = hslider("MM_Matrix/s00_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d05_formant_ctr = hslider("MM_Matrix/s01_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d05_formant_ctr = hslider("MM_Matrix/s02_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d05_formant_ctr = hslider("MM_Matrix/s03_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d05_formant_ctr = hslider("MM_Matrix/s04_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d05_formant_ctr = hslider("MM_Matrix/s05_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d05_formant_ctr = hslider("MM_Matrix/s06_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d05_formant_ctr = hslider("MM_Matrix/s07_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d05_formant_ctr = hslider("MM_Matrix/s08_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d05_formant_ctr = hslider("MM_Matrix/s09_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d05_formant_ctr = hslider("MM_Matrix/s10_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d05_formant_ctr = hslider("MM_Matrix/s11_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d05_formant_ctr = hslider("MM_Matrix/s12_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d05_formant_ctr = hslider("MM_Matrix/s13_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d05_formant_ctr = hslider("MM_Matrix/s14_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d05_formant_ctr = hslider("MM_Matrix/s15_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d05_formant_ctr = hslider("MM_Matrix/s16_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d05_formant_ctr = hslider("MM_Matrix/s17_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d05_formant_ctr = hslider("MM_Matrix/s18_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d05_formant_ctr = hslider("MM_Matrix/s19_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d05_formant_ctr = hslider("MM_Matrix/s20_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d05_formant_ctr = hslider("MM_Matrix/s21_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d05_formant_ctr = hslider("MM_Matrix/s22_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d05_formant_ctr = hslider("MM_Matrix/s23_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d05_formant_ctr = hslider("MM_Matrix/s24_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d05_formant_ctr = hslider("MM_Matrix/s25_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d05_formant_ctr = hslider("MM_Matrix/s26_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d05_formant_ctr = hslider("MM_Matrix/s27_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d05_formant_ctr = hslider("MM_Matrix/s28_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d05_formant_ctr = hslider("MM_Matrix/s29_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d05_formant_ctr = hslider("MM_Matrix/s30_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d05_formant_ctr = hslider("MM_Matrix/s31_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d05_formant_ctr = hslider("MM_Matrix/s32_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d05_formant_ctr = hslider("MM_Matrix/s33_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d05_formant_ctr = hslider("MM_Matrix/s34_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d05_formant_ctr = hslider("MM_Matrix/s35_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d05_formant_ctr = hslider("MM_Matrix/s36_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d05_formant_ctr = hslider("MM_Matrix/s37_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d05_formant_ctr = hslider("MM_Matrix/s38_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d05_formant_ctr = hslider("MM_Matrix/s39_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d05_formant_ctr = hslider("MM_Matrix/s40_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d05_formant_ctr = hslider("MM_Matrix/s41_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d05_formant_ctr = hslider("MM_Matrix/s42_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d05_formant_ctr = hslider("MM_Matrix/s43_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d05_formant_ctr = hslider("MM_Matrix/s44_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d05_formant_ctr = hslider("MM_Matrix/s45_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d05_formant_ctr = hslider("MM_Matrix/s46_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d05_formant_ctr = hslider("MM_Matrix/s47_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 6 = formant_depth
|
||
amt_s00_d06_formant_depth = hslider("MM_Matrix/s00_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d06_formant_depth = hslider("MM_Matrix/s01_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d06_formant_depth = hslider("MM_Matrix/s02_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d06_formant_depth = hslider("MM_Matrix/s03_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d06_formant_depth = hslider("MM_Matrix/s04_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d06_formant_depth = hslider("MM_Matrix/s05_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d06_formant_depth = hslider("MM_Matrix/s06_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d06_formant_depth = hslider("MM_Matrix/s07_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d06_formant_depth = hslider("MM_Matrix/s08_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d06_formant_depth = hslider("MM_Matrix/s09_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d06_formant_depth = hslider("MM_Matrix/s10_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d06_formant_depth = hslider("MM_Matrix/s11_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d06_formant_depth = hslider("MM_Matrix/s12_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d06_formant_depth = hslider("MM_Matrix/s13_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d06_formant_depth = hslider("MM_Matrix/s14_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d06_formant_depth = hslider("MM_Matrix/s15_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d06_formant_depth = hslider("MM_Matrix/s16_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d06_formant_depth = hslider("MM_Matrix/s17_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d06_formant_depth = hslider("MM_Matrix/s18_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d06_formant_depth = hslider("MM_Matrix/s19_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d06_formant_depth = hslider("MM_Matrix/s20_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d06_formant_depth = hslider("MM_Matrix/s21_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d06_formant_depth = hslider("MM_Matrix/s22_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d06_formant_depth = hslider("MM_Matrix/s23_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d06_formant_depth = hslider("MM_Matrix/s24_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d06_formant_depth = hslider("MM_Matrix/s25_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d06_formant_depth = hslider("MM_Matrix/s26_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d06_formant_depth = hslider("MM_Matrix/s27_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d06_formant_depth = hslider("MM_Matrix/s28_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d06_formant_depth = hslider("MM_Matrix/s29_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d06_formant_depth = hslider("MM_Matrix/s30_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d06_formant_depth = hslider("MM_Matrix/s31_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d06_formant_depth = hslider("MM_Matrix/s32_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d06_formant_depth = hslider("MM_Matrix/s33_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d06_formant_depth = hslider("MM_Matrix/s34_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d06_formant_depth = hslider("MM_Matrix/s35_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d06_formant_depth = hslider("MM_Matrix/s36_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d06_formant_depth = hslider("MM_Matrix/s37_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d06_formant_depth = hslider("MM_Matrix/s38_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d06_formant_depth = hslider("MM_Matrix/s39_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d06_formant_depth = hslider("MM_Matrix/s40_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d06_formant_depth = hslider("MM_Matrix/s41_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d06_formant_depth = hslider("MM_Matrix/s42_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d06_formant_depth = hslider("MM_Matrix/s43_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d06_formant_depth = hslider("MM_Matrix/s44_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d06_formant_depth = hslider("MM_Matrix/s45_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d06_formant_depth = hslider("MM_Matrix/s46_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d06_formant_depth = hslider("MM_Matrix/s47_d06_formant_depth", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 7 = noise_mix
|
||
amt_s00_d07_noise_mix = hslider("MM_Matrix/s00_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d07_noise_mix = hslider("MM_Matrix/s01_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d07_noise_mix = hslider("MM_Matrix/s02_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d07_noise_mix = hslider("MM_Matrix/s03_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d07_noise_mix = hslider("MM_Matrix/s04_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d07_noise_mix = hslider("MM_Matrix/s05_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d07_noise_mix = hslider("MM_Matrix/s06_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d07_noise_mix = hslider("MM_Matrix/s07_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d07_noise_mix = hslider("MM_Matrix/s08_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d07_noise_mix = hslider("MM_Matrix/s09_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d07_noise_mix = hslider("MM_Matrix/s10_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d07_noise_mix = hslider("MM_Matrix/s11_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d07_noise_mix = hslider("MM_Matrix/s12_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d07_noise_mix = hslider("MM_Matrix/s13_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d07_noise_mix = hslider("MM_Matrix/s14_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d07_noise_mix = hslider("MM_Matrix/s15_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d07_noise_mix = hslider("MM_Matrix/s16_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d07_noise_mix = hslider("MM_Matrix/s17_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d07_noise_mix = hslider("MM_Matrix/s18_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d07_noise_mix = hslider("MM_Matrix/s19_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d07_noise_mix = hslider("MM_Matrix/s20_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d07_noise_mix = hslider("MM_Matrix/s21_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d07_noise_mix = hslider("MM_Matrix/s22_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d07_noise_mix = hslider("MM_Matrix/s23_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d07_noise_mix = hslider("MM_Matrix/s24_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d07_noise_mix = hslider("MM_Matrix/s25_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d07_noise_mix = hslider("MM_Matrix/s26_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d07_noise_mix = hslider("MM_Matrix/s27_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d07_noise_mix = hslider("MM_Matrix/s28_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d07_noise_mix = hslider("MM_Matrix/s29_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d07_noise_mix = hslider("MM_Matrix/s30_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d07_noise_mix = hslider("MM_Matrix/s31_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d07_noise_mix = hslider("MM_Matrix/s32_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d07_noise_mix = hslider("MM_Matrix/s33_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d07_noise_mix = hslider("MM_Matrix/s34_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d07_noise_mix = hslider("MM_Matrix/s35_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d07_noise_mix = hslider("MM_Matrix/s36_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d07_noise_mix = hslider("MM_Matrix/s37_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d07_noise_mix = hslider("MM_Matrix/s38_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d07_noise_mix = hslider("MM_Matrix/s39_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d07_noise_mix = hslider("MM_Matrix/s40_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d07_noise_mix = hslider("MM_Matrix/s41_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d07_noise_mix = hslider("MM_Matrix/s42_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d07_noise_mix = hslider("MM_Matrix/s43_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d07_noise_mix = hslider("MM_Matrix/s44_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d07_noise_mix = hslider("MM_Matrix/s45_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d07_noise_mix = hslider("MM_Matrix/s46_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d07_noise_mix = hslider("MM_Matrix/s47_d07_noise_mix", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 8 = amp
|
||
amt_s00_d08_amp = hslider("MM_Matrix/s00_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d08_amp = hslider("MM_Matrix/s01_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d08_amp = hslider("MM_Matrix/s02_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d08_amp = hslider("MM_Matrix/s03_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d08_amp = hslider("MM_Matrix/s04_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d08_amp = hslider("MM_Matrix/s05_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d08_amp = hslider("MM_Matrix/s06_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d08_amp = hslider("MM_Matrix/s07_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d08_amp = hslider("MM_Matrix/s08_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d08_amp = hslider("MM_Matrix/s09_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d08_amp = hslider("MM_Matrix/s10_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d08_amp = hslider("MM_Matrix/s11_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d08_amp = hslider("MM_Matrix/s12_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d08_amp = hslider("MM_Matrix/s13_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d08_amp = hslider("MM_Matrix/s14_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d08_amp = hslider("MM_Matrix/s15_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d08_amp = hslider("MM_Matrix/s16_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d08_amp = hslider("MM_Matrix/s17_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d08_amp = hslider("MM_Matrix/s18_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d08_amp = hslider("MM_Matrix/s19_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d08_amp = hslider("MM_Matrix/s20_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d08_amp = hslider("MM_Matrix/s21_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d08_amp = hslider("MM_Matrix/s22_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d08_amp = hslider("MM_Matrix/s23_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d08_amp = hslider("MM_Matrix/s24_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d08_amp = hslider("MM_Matrix/s25_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d08_amp = hslider("MM_Matrix/s26_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d08_amp = hslider("MM_Matrix/s27_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d08_amp = hslider("MM_Matrix/s28_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d08_amp = hslider("MM_Matrix/s29_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d08_amp = hslider("MM_Matrix/s30_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d08_amp = hslider("MM_Matrix/s31_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d08_amp = hslider("MM_Matrix/s32_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d08_amp = hslider("MM_Matrix/s33_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d08_amp = hslider("MM_Matrix/s34_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d08_amp = hslider("MM_Matrix/s35_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d08_amp = hslider("MM_Matrix/s36_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d08_amp = hslider("MM_Matrix/s37_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d08_amp = hslider("MM_Matrix/s38_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d08_amp = hslider("MM_Matrix/s39_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d08_amp = hslider("MM_Matrix/s40_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d08_amp = hslider("MM_Matrix/s41_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d08_amp = hslider("MM_Matrix/s42_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d08_amp = hslider("MM_Matrix/s43_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d08_amp = hslider("MM_Matrix/s44_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d08_amp = hslider("MM_Matrix/s45_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d08_amp = hslider("MM_Matrix/s46_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d08_amp = hslider("MM_Matrix/s47_d08_amp", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 9 = pan
|
||
amt_s00_d09_pan = hslider("MM_Matrix/s00_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d09_pan = hslider("MM_Matrix/s01_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d09_pan = hslider("MM_Matrix/s02_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d09_pan = hslider("MM_Matrix/s03_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d09_pan = hslider("MM_Matrix/s04_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d09_pan = hslider("MM_Matrix/s05_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d09_pan = hslider("MM_Matrix/s06_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d09_pan = hslider("MM_Matrix/s07_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d09_pan = hslider("MM_Matrix/s08_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d09_pan = hslider("MM_Matrix/s09_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d09_pan = hslider("MM_Matrix/s10_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d09_pan = hslider("MM_Matrix/s11_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d09_pan = hslider("MM_Matrix/s12_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d09_pan = hslider("MM_Matrix/s13_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d09_pan = hslider("MM_Matrix/s14_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d09_pan = hslider("MM_Matrix/s15_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d09_pan = hslider("MM_Matrix/s16_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d09_pan = hslider("MM_Matrix/s17_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d09_pan = hslider("MM_Matrix/s18_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d09_pan = hslider("MM_Matrix/s19_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d09_pan = hslider("MM_Matrix/s20_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d09_pan = hslider("MM_Matrix/s21_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d09_pan = hslider("MM_Matrix/s22_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d09_pan = hslider("MM_Matrix/s23_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d09_pan = hslider("MM_Matrix/s24_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d09_pan = hslider("MM_Matrix/s25_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d09_pan = hslider("MM_Matrix/s26_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d09_pan = hslider("MM_Matrix/s27_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d09_pan = hslider("MM_Matrix/s28_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d09_pan = hslider("MM_Matrix/s29_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d09_pan = hslider("MM_Matrix/s30_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d09_pan = hslider("MM_Matrix/s31_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d09_pan = hslider("MM_Matrix/s32_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d09_pan = hslider("MM_Matrix/s33_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d09_pan = hslider("MM_Matrix/s34_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d09_pan = hslider("MM_Matrix/s35_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d09_pan = hslider("MM_Matrix/s36_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d09_pan = hslider("MM_Matrix/s37_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d09_pan = hslider("MM_Matrix/s38_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d09_pan = hslider("MM_Matrix/s39_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d09_pan = hslider("MM_Matrix/s40_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d09_pan = hslider("MM_Matrix/s41_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d09_pan = hslider("MM_Matrix/s42_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d09_pan = hslider("MM_Matrix/s43_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d09_pan = hslider("MM_Matrix/s44_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d09_pan = hslider("MM_Matrix/s45_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d09_pan = hslider("MM_Matrix/s46_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d09_pan = hslider("MM_Matrix/s47_d09_pan", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Destination signals — one per modulation destination. Each is a 48-term
|
||
// weighted sum of sources × amounts. The `gate` argument is threaded through
|
||
// so that mp.src??(gate) can drive ADSR envelopes.
|
||
// ---------------------------------------------------------------------------
|
||
|
||
mod_pitch(gate) =
|
||
mp.src00(gate) * amt_s00_d00_pitch +
|
||
mp.src01(gate) * amt_s01_d00_pitch +
|
||
mp.src02(gate) * amt_s02_d00_pitch +
|
||
mp.src03(gate) * amt_s03_d00_pitch +
|
||
mp.src04(gate) * amt_s04_d00_pitch +
|
||
mp.src05(gate) * amt_s05_d00_pitch +
|
||
mp.src06(gate) * amt_s06_d00_pitch +
|
||
mp.src07(gate) * amt_s07_d00_pitch +
|
||
mp.src08(gate) * amt_s08_d00_pitch +
|
||
mp.src09(gate) * amt_s09_d00_pitch +
|
||
mp.src10(gate) * amt_s10_d00_pitch +
|
||
mp.src11(gate) * amt_s11_d00_pitch +
|
||
mp.src12(gate) * amt_s12_d00_pitch +
|
||
mp.src13(gate) * amt_s13_d00_pitch +
|
||
mp.src14(gate) * amt_s14_d00_pitch +
|
||
mp.src15(gate) * amt_s15_d00_pitch +
|
||
mp.src16(gate) * amt_s16_d00_pitch +
|
||
mp.src17(gate) * amt_s17_d00_pitch +
|
||
mp.src18(gate) * amt_s18_d00_pitch +
|
||
mp.src19(gate) * amt_s19_d00_pitch +
|
||
mp.src20(gate) * amt_s20_d00_pitch +
|
||
mp.src21(gate) * amt_s21_d00_pitch +
|
||
mp.src22(gate) * amt_s22_d00_pitch +
|
||
mp.src23(gate) * amt_s23_d00_pitch +
|
||
mp.src24(gate) * amt_s24_d00_pitch +
|
||
mp.src25(gate) * amt_s25_d00_pitch +
|
||
mp.src26(gate) * amt_s26_d00_pitch +
|
||
mp.src27(gate) * amt_s27_d00_pitch +
|
||
mp.src28(gate) * amt_s28_d00_pitch +
|
||
mp.src29(gate) * amt_s29_d00_pitch +
|
||
mp.src30(gate) * amt_s30_d00_pitch +
|
||
mp.src31(gate) * amt_s31_d00_pitch +
|
||
mp.src32(gate) * amt_s32_d00_pitch +
|
||
mp.src33(gate) * amt_s33_d00_pitch +
|
||
mp.src34(gate) * amt_s34_d00_pitch +
|
||
mp.src35(gate) * amt_s35_d00_pitch +
|
||
mp.src36(gate) * amt_s36_d00_pitch +
|
||
mp.src37(gate) * amt_s37_d00_pitch +
|
||
mp.src38(gate) * amt_s38_d00_pitch +
|
||
mp.src39(gate) * amt_s39_d00_pitch +
|
||
mp.src40(gate) * amt_s40_d00_pitch +
|
||
mp.src41(gate) * amt_s41_d00_pitch +
|
||
mp.src42(gate) * amt_s42_d00_pitch +
|
||
mp.src43(gate) * amt_s43_d00_pitch +
|
||
mp.src44(gate) * amt_s44_d00_pitch +
|
||
mp.src45(gate) * amt_s45_d00_pitch +
|
||
mp.src46(gate) * amt_s46_d00_pitch +
|
||
mp.src47(gate) * amt_s47_d00_pitch;
|
||
|
||
mod_bright(gate) =
|
||
mp.src00(gate) * amt_s00_d01_bright +
|
||
mp.src01(gate) * amt_s01_d01_bright +
|
||
mp.src02(gate) * amt_s02_d01_bright +
|
||
mp.src03(gate) * amt_s03_d01_bright +
|
||
mp.src04(gate) * amt_s04_d01_bright +
|
||
mp.src05(gate) * amt_s05_d01_bright +
|
||
mp.src06(gate) * amt_s06_d01_bright +
|
||
mp.src07(gate) * amt_s07_d01_bright +
|
||
mp.src08(gate) * amt_s08_d01_bright +
|
||
mp.src09(gate) * amt_s09_d01_bright +
|
||
mp.src10(gate) * amt_s10_d01_bright +
|
||
mp.src11(gate) * amt_s11_d01_bright +
|
||
mp.src12(gate) * amt_s12_d01_bright +
|
||
mp.src13(gate) * amt_s13_d01_bright +
|
||
mp.src14(gate) * amt_s14_d01_bright +
|
||
mp.src15(gate) * amt_s15_d01_bright +
|
||
mp.src16(gate) * amt_s16_d01_bright +
|
||
mp.src17(gate) * amt_s17_d01_bright +
|
||
mp.src18(gate) * amt_s18_d01_bright +
|
||
mp.src19(gate) * amt_s19_d01_bright +
|
||
mp.src20(gate) * amt_s20_d01_bright +
|
||
mp.src21(gate) * amt_s21_d01_bright +
|
||
mp.src22(gate) * amt_s22_d01_bright +
|
||
mp.src23(gate) * amt_s23_d01_bright +
|
||
mp.src24(gate) * amt_s24_d01_bright +
|
||
mp.src25(gate) * amt_s25_d01_bright +
|
||
mp.src26(gate) * amt_s26_d01_bright +
|
||
mp.src27(gate) * amt_s27_d01_bright +
|
||
mp.src28(gate) * amt_s28_d01_bright +
|
||
mp.src29(gate) * amt_s29_d01_bright +
|
||
mp.src30(gate) * amt_s30_d01_bright +
|
||
mp.src31(gate) * amt_s31_d01_bright +
|
||
mp.src32(gate) * amt_s32_d01_bright +
|
||
mp.src33(gate) * amt_s33_d01_bright +
|
||
mp.src34(gate) * amt_s34_d01_bright +
|
||
mp.src35(gate) * amt_s35_d01_bright +
|
||
mp.src36(gate) * amt_s36_d01_bright +
|
||
mp.src37(gate) * amt_s37_d01_bright +
|
||
mp.src38(gate) * amt_s38_d01_bright +
|
||
mp.src39(gate) * amt_s39_d01_bright +
|
||
mp.src40(gate) * amt_s40_d01_bright +
|
||
mp.src41(gate) * amt_s41_d01_bright +
|
||
mp.src42(gate) * amt_s42_d01_bright +
|
||
mp.src43(gate) * amt_s43_d01_bright +
|
||
mp.src44(gate) * amt_s44_d01_bright +
|
||
mp.src45(gate) * amt_s45_d01_bright +
|
||
mp.src46(gate) * amt_s46_d01_bright +
|
||
mp.src47(gate) * amt_s47_d01_bright;
|
||
|
||
mod_tilt(gate) =
|
||
mp.src00(gate) * amt_s00_d02_tilt +
|
||
mp.src01(gate) * amt_s01_d02_tilt +
|
||
mp.src02(gate) * amt_s02_d02_tilt +
|
||
mp.src03(gate) * amt_s03_d02_tilt +
|
||
mp.src04(gate) * amt_s04_d02_tilt +
|
||
mp.src05(gate) * amt_s05_d02_tilt +
|
||
mp.src06(gate) * amt_s06_d02_tilt +
|
||
mp.src07(gate) * amt_s07_d02_tilt +
|
||
mp.src08(gate) * amt_s08_d02_tilt +
|
||
mp.src09(gate) * amt_s09_d02_tilt +
|
||
mp.src10(gate) * amt_s10_d02_tilt +
|
||
mp.src11(gate) * amt_s11_d02_tilt +
|
||
mp.src12(gate) * amt_s12_d02_tilt +
|
||
mp.src13(gate) * amt_s13_d02_tilt +
|
||
mp.src14(gate) * amt_s14_d02_tilt +
|
||
mp.src15(gate) * amt_s15_d02_tilt +
|
||
mp.src16(gate) * amt_s16_d02_tilt +
|
||
mp.src17(gate) * amt_s17_d02_tilt +
|
||
mp.src18(gate) * amt_s18_d02_tilt +
|
||
mp.src19(gate) * amt_s19_d02_tilt +
|
||
mp.src20(gate) * amt_s20_d02_tilt +
|
||
mp.src21(gate) * amt_s21_d02_tilt +
|
||
mp.src22(gate) * amt_s22_d02_tilt +
|
||
mp.src23(gate) * amt_s23_d02_tilt +
|
||
mp.src24(gate) * amt_s24_d02_tilt +
|
||
mp.src25(gate) * amt_s25_d02_tilt +
|
||
mp.src26(gate) * amt_s26_d02_tilt +
|
||
mp.src27(gate) * amt_s27_d02_tilt +
|
||
mp.src28(gate) * amt_s28_d02_tilt +
|
||
mp.src29(gate) * amt_s29_d02_tilt +
|
||
mp.src30(gate) * amt_s30_d02_tilt +
|
||
mp.src31(gate) * amt_s31_d02_tilt +
|
||
mp.src32(gate) * amt_s32_d02_tilt +
|
||
mp.src33(gate) * amt_s33_d02_tilt +
|
||
mp.src34(gate) * amt_s34_d02_tilt +
|
||
mp.src35(gate) * amt_s35_d02_tilt +
|
||
mp.src36(gate) * amt_s36_d02_tilt +
|
||
mp.src37(gate) * amt_s37_d02_tilt +
|
||
mp.src38(gate) * amt_s38_d02_tilt +
|
||
mp.src39(gate) * amt_s39_d02_tilt +
|
||
mp.src40(gate) * amt_s40_d02_tilt +
|
||
mp.src41(gate) * amt_s41_d02_tilt +
|
||
mp.src42(gate) * amt_s42_d02_tilt +
|
||
mp.src43(gate) * amt_s43_d02_tilt +
|
||
mp.src44(gate) * amt_s44_d02_tilt +
|
||
mp.src45(gate) * amt_s45_d02_tilt +
|
||
mp.src46(gate) * amt_s46_d02_tilt +
|
||
mp.src47(gate) * amt_s47_d02_tilt;
|
||
|
||
mod_inharmonicity(gate) =
|
||
mp.src00(gate) * amt_s00_d03_inharmonicity +
|
||
mp.src01(gate) * amt_s01_d03_inharmonicity +
|
||
mp.src02(gate) * amt_s02_d03_inharmonicity +
|
||
mp.src03(gate) * amt_s03_d03_inharmonicity +
|
||
mp.src04(gate) * amt_s04_d03_inharmonicity +
|
||
mp.src05(gate) * amt_s05_d03_inharmonicity +
|
||
mp.src06(gate) * amt_s06_d03_inharmonicity +
|
||
mp.src07(gate) * amt_s07_d03_inharmonicity +
|
||
mp.src08(gate) * amt_s08_d03_inharmonicity +
|
||
mp.src09(gate) * amt_s09_d03_inharmonicity +
|
||
mp.src10(gate) * amt_s10_d03_inharmonicity +
|
||
mp.src11(gate) * amt_s11_d03_inharmonicity +
|
||
mp.src12(gate) * amt_s12_d03_inharmonicity +
|
||
mp.src13(gate) * amt_s13_d03_inharmonicity +
|
||
mp.src14(gate) * amt_s14_d03_inharmonicity +
|
||
mp.src15(gate) * amt_s15_d03_inharmonicity +
|
||
mp.src16(gate) * amt_s16_d03_inharmonicity +
|
||
mp.src17(gate) * amt_s17_d03_inharmonicity +
|
||
mp.src18(gate) * amt_s18_d03_inharmonicity +
|
||
mp.src19(gate) * amt_s19_d03_inharmonicity +
|
||
mp.src20(gate) * amt_s20_d03_inharmonicity +
|
||
mp.src21(gate) * amt_s21_d03_inharmonicity +
|
||
mp.src22(gate) * amt_s22_d03_inharmonicity +
|
||
mp.src23(gate) * amt_s23_d03_inharmonicity +
|
||
mp.src24(gate) * amt_s24_d03_inharmonicity +
|
||
mp.src25(gate) * amt_s25_d03_inharmonicity +
|
||
mp.src26(gate) * amt_s26_d03_inharmonicity +
|
||
mp.src27(gate) * amt_s27_d03_inharmonicity +
|
||
mp.src28(gate) * amt_s28_d03_inharmonicity +
|
||
mp.src29(gate) * amt_s29_d03_inharmonicity +
|
||
mp.src30(gate) * amt_s30_d03_inharmonicity +
|
||
mp.src31(gate) * amt_s31_d03_inharmonicity +
|
||
mp.src32(gate) * amt_s32_d03_inharmonicity +
|
||
mp.src33(gate) * amt_s33_d03_inharmonicity +
|
||
mp.src34(gate) * amt_s34_d03_inharmonicity +
|
||
mp.src35(gate) * amt_s35_d03_inharmonicity +
|
||
mp.src36(gate) * amt_s36_d03_inharmonicity +
|
||
mp.src37(gate) * amt_s37_d03_inharmonicity +
|
||
mp.src38(gate) * amt_s38_d03_inharmonicity +
|
||
mp.src39(gate) * amt_s39_d03_inharmonicity +
|
||
mp.src40(gate) * amt_s40_d03_inharmonicity +
|
||
mp.src41(gate) * amt_s41_d03_inharmonicity +
|
||
mp.src42(gate) * amt_s42_d03_inharmonicity +
|
||
mp.src43(gate) * amt_s43_d03_inharmonicity +
|
||
mp.src44(gate) * amt_s44_d03_inharmonicity +
|
||
mp.src45(gate) * amt_s45_d03_inharmonicity +
|
||
mp.src46(gate) * amt_s46_d03_inharmonicity +
|
||
mp.src47(gate) * amt_s47_d03_inharmonicity;
|
||
|
||
mod_odd_even(gate) =
|
||
mp.src00(gate) * amt_s00_d04_odd_even +
|
||
mp.src01(gate) * amt_s01_d04_odd_even +
|
||
mp.src02(gate) * amt_s02_d04_odd_even +
|
||
mp.src03(gate) * amt_s03_d04_odd_even +
|
||
mp.src04(gate) * amt_s04_d04_odd_even +
|
||
mp.src05(gate) * amt_s05_d04_odd_even +
|
||
mp.src06(gate) * amt_s06_d04_odd_even +
|
||
mp.src07(gate) * amt_s07_d04_odd_even +
|
||
mp.src08(gate) * amt_s08_d04_odd_even +
|
||
mp.src09(gate) * amt_s09_d04_odd_even +
|
||
mp.src10(gate) * amt_s10_d04_odd_even +
|
||
mp.src11(gate) * amt_s11_d04_odd_even +
|
||
mp.src12(gate) * amt_s12_d04_odd_even +
|
||
mp.src13(gate) * amt_s13_d04_odd_even +
|
||
mp.src14(gate) * amt_s14_d04_odd_even +
|
||
mp.src15(gate) * amt_s15_d04_odd_even +
|
||
mp.src16(gate) * amt_s16_d04_odd_even +
|
||
mp.src17(gate) * amt_s17_d04_odd_even +
|
||
mp.src18(gate) * amt_s18_d04_odd_even +
|
||
mp.src19(gate) * amt_s19_d04_odd_even +
|
||
mp.src20(gate) * amt_s20_d04_odd_even +
|
||
mp.src21(gate) * amt_s21_d04_odd_even +
|
||
mp.src22(gate) * amt_s22_d04_odd_even +
|
||
mp.src23(gate) * amt_s23_d04_odd_even +
|
||
mp.src24(gate) * amt_s24_d04_odd_even +
|
||
mp.src25(gate) * amt_s25_d04_odd_even +
|
||
mp.src26(gate) * amt_s26_d04_odd_even +
|
||
mp.src27(gate) * amt_s27_d04_odd_even +
|
||
mp.src28(gate) * amt_s28_d04_odd_even +
|
||
mp.src29(gate) * amt_s29_d04_odd_even +
|
||
mp.src30(gate) * amt_s30_d04_odd_even +
|
||
mp.src31(gate) * amt_s31_d04_odd_even +
|
||
mp.src32(gate) * amt_s32_d04_odd_even +
|
||
mp.src33(gate) * amt_s33_d04_odd_even +
|
||
mp.src34(gate) * amt_s34_d04_odd_even +
|
||
mp.src35(gate) * amt_s35_d04_odd_even +
|
||
mp.src36(gate) * amt_s36_d04_odd_even +
|
||
mp.src37(gate) * amt_s37_d04_odd_even +
|
||
mp.src38(gate) * amt_s38_d04_odd_even +
|
||
mp.src39(gate) * amt_s39_d04_odd_even +
|
||
mp.src40(gate) * amt_s40_d04_odd_even +
|
||
mp.src41(gate) * amt_s41_d04_odd_even +
|
||
mp.src42(gate) * amt_s42_d04_odd_even +
|
||
mp.src43(gate) * amt_s43_d04_odd_even +
|
||
mp.src44(gate) * amt_s44_d04_odd_even +
|
||
mp.src45(gate) * amt_s45_d04_odd_even +
|
||
mp.src46(gate) * amt_s46_d04_odd_even +
|
||
mp.src47(gate) * amt_s47_d04_odd_even;
|
||
|
||
mod_formant_ctr(gate) =
|
||
mp.src00(gate) * amt_s00_d05_formant_ctr +
|
||
mp.src01(gate) * amt_s01_d05_formant_ctr +
|
||
mp.src02(gate) * amt_s02_d05_formant_ctr +
|
||
mp.src03(gate) * amt_s03_d05_formant_ctr +
|
||
mp.src04(gate) * amt_s04_d05_formant_ctr +
|
||
mp.src05(gate) * amt_s05_d05_formant_ctr +
|
||
mp.src06(gate) * amt_s06_d05_formant_ctr +
|
||
mp.src07(gate) * amt_s07_d05_formant_ctr +
|
||
mp.src08(gate) * amt_s08_d05_formant_ctr +
|
||
mp.src09(gate) * amt_s09_d05_formant_ctr +
|
||
mp.src10(gate) * amt_s10_d05_formant_ctr +
|
||
mp.src11(gate) * amt_s11_d05_formant_ctr +
|
||
mp.src12(gate) * amt_s12_d05_formant_ctr +
|
||
mp.src13(gate) * amt_s13_d05_formant_ctr +
|
||
mp.src14(gate) * amt_s14_d05_formant_ctr +
|
||
mp.src15(gate) * amt_s15_d05_formant_ctr +
|
||
mp.src16(gate) * amt_s16_d05_formant_ctr +
|
||
mp.src17(gate) * amt_s17_d05_formant_ctr +
|
||
mp.src18(gate) * amt_s18_d05_formant_ctr +
|
||
mp.src19(gate) * amt_s19_d05_formant_ctr +
|
||
mp.src20(gate) * amt_s20_d05_formant_ctr +
|
||
mp.src21(gate) * amt_s21_d05_formant_ctr +
|
||
mp.src22(gate) * amt_s22_d05_formant_ctr +
|
||
mp.src23(gate) * amt_s23_d05_formant_ctr +
|
||
mp.src24(gate) * amt_s24_d05_formant_ctr +
|
||
mp.src25(gate) * amt_s25_d05_formant_ctr +
|
||
mp.src26(gate) * amt_s26_d05_formant_ctr +
|
||
mp.src27(gate) * amt_s27_d05_formant_ctr +
|
||
mp.src28(gate) * amt_s28_d05_formant_ctr +
|
||
mp.src29(gate) * amt_s29_d05_formant_ctr +
|
||
mp.src30(gate) * amt_s30_d05_formant_ctr +
|
||
mp.src31(gate) * amt_s31_d05_formant_ctr +
|
||
mp.src32(gate) * amt_s32_d05_formant_ctr +
|
||
mp.src33(gate) * amt_s33_d05_formant_ctr +
|
||
mp.src34(gate) * amt_s34_d05_formant_ctr +
|
||
mp.src35(gate) * amt_s35_d05_formant_ctr +
|
||
mp.src36(gate) * amt_s36_d05_formant_ctr +
|
||
mp.src37(gate) * amt_s37_d05_formant_ctr +
|
||
mp.src38(gate) * amt_s38_d05_formant_ctr +
|
||
mp.src39(gate) * amt_s39_d05_formant_ctr +
|
||
mp.src40(gate) * amt_s40_d05_formant_ctr +
|
||
mp.src41(gate) * amt_s41_d05_formant_ctr +
|
||
mp.src42(gate) * amt_s42_d05_formant_ctr +
|
||
mp.src43(gate) * amt_s43_d05_formant_ctr +
|
||
mp.src44(gate) * amt_s44_d05_formant_ctr +
|
||
mp.src45(gate) * amt_s45_d05_formant_ctr +
|
||
mp.src46(gate) * amt_s46_d05_formant_ctr +
|
||
mp.src47(gate) * amt_s47_d05_formant_ctr;
|
||
|
||
mod_formant_depth(gate) =
|
||
mp.src00(gate) * amt_s00_d06_formant_depth +
|
||
mp.src01(gate) * amt_s01_d06_formant_depth +
|
||
mp.src02(gate) * amt_s02_d06_formant_depth +
|
||
mp.src03(gate) * amt_s03_d06_formant_depth +
|
||
mp.src04(gate) * amt_s04_d06_formant_depth +
|
||
mp.src05(gate) * amt_s05_d06_formant_depth +
|
||
mp.src06(gate) * amt_s06_d06_formant_depth +
|
||
mp.src07(gate) * amt_s07_d06_formant_depth +
|
||
mp.src08(gate) * amt_s08_d06_formant_depth +
|
||
mp.src09(gate) * amt_s09_d06_formant_depth +
|
||
mp.src10(gate) * amt_s10_d06_formant_depth +
|
||
mp.src11(gate) * amt_s11_d06_formant_depth +
|
||
mp.src12(gate) * amt_s12_d06_formant_depth +
|
||
mp.src13(gate) * amt_s13_d06_formant_depth +
|
||
mp.src14(gate) * amt_s14_d06_formant_depth +
|
||
mp.src15(gate) * amt_s15_d06_formant_depth +
|
||
mp.src16(gate) * amt_s16_d06_formant_depth +
|
||
mp.src17(gate) * amt_s17_d06_formant_depth +
|
||
mp.src18(gate) * amt_s18_d06_formant_depth +
|
||
mp.src19(gate) * amt_s19_d06_formant_depth +
|
||
mp.src20(gate) * amt_s20_d06_formant_depth +
|
||
mp.src21(gate) * amt_s21_d06_formant_depth +
|
||
mp.src22(gate) * amt_s22_d06_formant_depth +
|
||
mp.src23(gate) * amt_s23_d06_formant_depth +
|
||
mp.src24(gate) * amt_s24_d06_formant_depth +
|
||
mp.src25(gate) * amt_s25_d06_formant_depth +
|
||
mp.src26(gate) * amt_s26_d06_formant_depth +
|
||
mp.src27(gate) * amt_s27_d06_formant_depth +
|
||
mp.src28(gate) * amt_s28_d06_formant_depth +
|
||
mp.src29(gate) * amt_s29_d06_formant_depth +
|
||
mp.src30(gate) * amt_s30_d06_formant_depth +
|
||
mp.src31(gate) * amt_s31_d06_formant_depth +
|
||
mp.src32(gate) * amt_s32_d06_formant_depth +
|
||
mp.src33(gate) * amt_s33_d06_formant_depth +
|
||
mp.src34(gate) * amt_s34_d06_formant_depth +
|
||
mp.src35(gate) * amt_s35_d06_formant_depth +
|
||
mp.src36(gate) * amt_s36_d06_formant_depth +
|
||
mp.src37(gate) * amt_s37_d06_formant_depth +
|
||
mp.src38(gate) * amt_s38_d06_formant_depth +
|
||
mp.src39(gate) * amt_s39_d06_formant_depth +
|
||
mp.src40(gate) * amt_s40_d06_formant_depth +
|
||
mp.src41(gate) * amt_s41_d06_formant_depth +
|
||
mp.src42(gate) * amt_s42_d06_formant_depth +
|
||
mp.src43(gate) * amt_s43_d06_formant_depth +
|
||
mp.src44(gate) * amt_s44_d06_formant_depth +
|
||
mp.src45(gate) * amt_s45_d06_formant_depth +
|
||
mp.src46(gate) * amt_s46_d06_formant_depth +
|
||
mp.src47(gate) * amt_s47_d06_formant_depth;
|
||
|
||
mod_noise_mix(gate) =
|
||
mp.src00(gate) * amt_s00_d07_noise_mix +
|
||
mp.src01(gate) * amt_s01_d07_noise_mix +
|
||
mp.src02(gate) * amt_s02_d07_noise_mix +
|
||
mp.src03(gate) * amt_s03_d07_noise_mix +
|
||
mp.src04(gate) * amt_s04_d07_noise_mix +
|
||
mp.src05(gate) * amt_s05_d07_noise_mix +
|
||
mp.src06(gate) * amt_s06_d07_noise_mix +
|
||
mp.src07(gate) * amt_s07_d07_noise_mix +
|
||
mp.src08(gate) * amt_s08_d07_noise_mix +
|
||
mp.src09(gate) * amt_s09_d07_noise_mix +
|
||
mp.src10(gate) * amt_s10_d07_noise_mix +
|
||
mp.src11(gate) * amt_s11_d07_noise_mix +
|
||
mp.src12(gate) * amt_s12_d07_noise_mix +
|
||
mp.src13(gate) * amt_s13_d07_noise_mix +
|
||
mp.src14(gate) * amt_s14_d07_noise_mix +
|
||
mp.src15(gate) * amt_s15_d07_noise_mix +
|
||
mp.src16(gate) * amt_s16_d07_noise_mix +
|
||
mp.src17(gate) * amt_s17_d07_noise_mix +
|
||
mp.src18(gate) * amt_s18_d07_noise_mix +
|
||
mp.src19(gate) * amt_s19_d07_noise_mix +
|
||
mp.src20(gate) * amt_s20_d07_noise_mix +
|
||
mp.src21(gate) * amt_s21_d07_noise_mix +
|
||
mp.src22(gate) * amt_s22_d07_noise_mix +
|
||
mp.src23(gate) * amt_s23_d07_noise_mix +
|
||
mp.src24(gate) * amt_s24_d07_noise_mix +
|
||
mp.src25(gate) * amt_s25_d07_noise_mix +
|
||
mp.src26(gate) * amt_s26_d07_noise_mix +
|
||
mp.src27(gate) * amt_s27_d07_noise_mix +
|
||
mp.src28(gate) * amt_s28_d07_noise_mix +
|
||
mp.src29(gate) * amt_s29_d07_noise_mix +
|
||
mp.src30(gate) * amt_s30_d07_noise_mix +
|
||
mp.src31(gate) * amt_s31_d07_noise_mix +
|
||
mp.src32(gate) * amt_s32_d07_noise_mix +
|
||
mp.src33(gate) * amt_s33_d07_noise_mix +
|
||
mp.src34(gate) * amt_s34_d07_noise_mix +
|
||
mp.src35(gate) * amt_s35_d07_noise_mix +
|
||
mp.src36(gate) * amt_s36_d07_noise_mix +
|
||
mp.src37(gate) * amt_s37_d07_noise_mix +
|
||
mp.src38(gate) * amt_s38_d07_noise_mix +
|
||
mp.src39(gate) * amt_s39_d07_noise_mix +
|
||
mp.src40(gate) * amt_s40_d07_noise_mix +
|
||
mp.src41(gate) * amt_s41_d07_noise_mix +
|
||
mp.src42(gate) * amt_s42_d07_noise_mix +
|
||
mp.src43(gate) * amt_s43_d07_noise_mix +
|
||
mp.src44(gate) * amt_s44_d07_noise_mix +
|
||
mp.src45(gate) * amt_s45_d07_noise_mix +
|
||
mp.src46(gate) * amt_s46_d07_noise_mix +
|
||
mp.src47(gate) * amt_s47_d07_noise_mix;
|
||
|
||
mod_amp(gate) =
|
||
mp.src00(gate) * amt_s00_d08_amp +
|
||
mp.src01(gate) * amt_s01_d08_amp +
|
||
mp.src02(gate) * amt_s02_d08_amp +
|
||
mp.src03(gate) * amt_s03_d08_amp +
|
||
mp.src04(gate) * amt_s04_d08_amp +
|
||
mp.src05(gate) * amt_s05_d08_amp +
|
||
mp.src06(gate) * amt_s06_d08_amp +
|
||
mp.src07(gate) * amt_s07_d08_amp +
|
||
mp.src08(gate) * amt_s08_d08_amp +
|
||
mp.src09(gate) * amt_s09_d08_amp +
|
||
mp.src10(gate) * amt_s10_d08_amp +
|
||
mp.src11(gate) * amt_s11_d08_amp +
|
||
mp.src12(gate) * amt_s12_d08_amp +
|
||
mp.src13(gate) * amt_s13_d08_amp +
|
||
mp.src14(gate) * amt_s14_d08_amp +
|
||
mp.src15(gate) * amt_s15_d08_amp +
|
||
mp.src16(gate) * amt_s16_d08_amp +
|
||
mp.src17(gate) * amt_s17_d08_amp +
|
||
mp.src18(gate) * amt_s18_d08_amp +
|
||
mp.src19(gate) * amt_s19_d08_amp +
|
||
mp.src20(gate) * amt_s20_d08_amp +
|
||
mp.src21(gate) * amt_s21_d08_amp +
|
||
mp.src22(gate) * amt_s22_d08_amp +
|
||
mp.src23(gate) * amt_s23_d08_amp +
|
||
mp.src24(gate) * amt_s24_d08_amp +
|
||
mp.src25(gate) * amt_s25_d08_amp +
|
||
mp.src26(gate) * amt_s26_d08_amp +
|
||
mp.src27(gate) * amt_s27_d08_amp +
|
||
mp.src28(gate) * amt_s28_d08_amp +
|
||
mp.src29(gate) * amt_s29_d08_amp +
|
||
mp.src30(gate) * amt_s30_d08_amp +
|
||
mp.src31(gate) * amt_s31_d08_amp +
|
||
mp.src32(gate) * amt_s32_d08_amp +
|
||
mp.src33(gate) * amt_s33_d08_amp +
|
||
mp.src34(gate) * amt_s34_d08_amp +
|
||
mp.src35(gate) * amt_s35_d08_amp +
|
||
mp.src36(gate) * amt_s36_d08_amp +
|
||
mp.src37(gate) * amt_s37_d08_amp +
|
||
mp.src38(gate) * amt_s38_d08_amp +
|
||
mp.src39(gate) * amt_s39_d08_amp +
|
||
mp.src40(gate) * amt_s40_d08_amp +
|
||
mp.src41(gate) * amt_s41_d08_amp +
|
||
mp.src42(gate) * amt_s42_d08_amp +
|
||
mp.src43(gate) * amt_s43_d08_amp +
|
||
mp.src44(gate) * amt_s44_d08_amp +
|
||
mp.src45(gate) * amt_s45_d08_amp +
|
||
mp.src46(gate) * amt_s46_d08_amp +
|
||
mp.src47(gate) * amt_s47_d08_amp;
|
||
|
||
mod_pan(gate) =
|
||
mp.src00(gate) * amt_s00_d09_pan +
|
||
mp.src01(gate) * amt_s01_d09_pan +
|
||
mp.src02(gate) * amt_s02_d09_pan +
|
||
mp.src03(gate) * amt_s03_d09_pan +
|
||
mp.src04(gate) * amt_s04_d09_pan +
|
||
mp.src05(gate) * amt_s05_d09_pan +
|
||
mp.src06(gate) * amt_s06_d09_pan +
|
||
mp.src07(gate) * amt_s07_d09_pan +
|
||
mp.src08(gate) * amt_s08_d09_pan +
|
||
mp.src09(gate) * amt_s09_d09_pan +
|
||
mp.src10(gate) * amt_s10_d09_pan +
|
||
mp.src11(gate) * amt_s11_d09_pan +
|
||
mp.src12(gate) * amt_s12_d09_pan +
|
||
mp.src13(gate) * amt_s13_d09_pan +
|
||
mp.src14(gate) * amt_s14_d09_pan +
|
||
mp.src15(gate) * amt_s15_d09_pan +
|
||
mp.src16(gate) * amt_s16_d09_pan +
|
||
mp.src17(gate) * amt_s17_d09_pan +
|
||
mp.src18(gate) * amt_s18_d09_pan +
|
||
mp.src19(gate) * amt_s19_d09_pan +
|
||
mp.src20(gate) * amt_s20_d09_pan +
|
||
mp.src21(gate) * amt_s21_d09_pan +
|
||
mp.src22(gate) * amt_s22_d09_pan +
|
||
mp.src23(gate) * amt_s23_d09_pan +
|
||
mp.src24(gate) * amt_s24_d09_pan +
|
||
mp.src25(gate) * amt_s25_d09_pan +
|
||
mp.src26(gate) * amt_s26_d09_pan +
|
||
mp.src27(gate) * amt_s27_d09_pan +
|
||
mp.src28(gate) * amt_s28_d09_pan +
|
||
mp.src29(gate) * amt_s29_d09_pan +
|
||
mp.src30(gate) * amt_s30_d09_pan +
|
||
mp.src31(gate) * amt_s31_d09_pan +
|
||
mp.src32(gate) * amt_s32_d09_pan +
|
||
mp.src33(gate) * amt_s33_d09_pan +
|
||
mp.src34(gate) * amt_s34_d09_pan +
|
||
mp.src35(gate) * amt_s35_d09_pan +
|
||
mp.src36(gate) * amt_s36_d09_pan +
|
||
mp.src37(gate) * amt_s37_d09_pan +
|
||
mp.src38(gate) * amt_s38_d09_pan +
|
||
mp.src39(gate) * amt_s39_d09_pan +
|
||
mp.src40(gate) * amt_s40_d09_pan +
|
||
mp.src41(gate) * amt_s41_d09_pan +
|
||
mp.src42(gate) * amt_s42_d09_pan +
|
||
mp.src43(gate) * amt_s43_d09_pan +
|
||
mp.src44(gate) * amt_s44_d09_pan +
|
||
mp.src45(gate) * amt_s45_d09_pan +
|
||
mp.src46(gate) * amt_s46_d09_pan +
|
||
mp.src47(gate) * amt_s47_d09_pan;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Derived signals
|
||
// ---------------------------------------------------------------------------
|
||
|
||
N = 64;
|
||
PI = ma.PI;
|
||
|
||
cent2ratio(c) = pow(2.0, c / 1200.0);
|
||
semi2ratio(s) = pow(2.0, s / 12.0);
|
||
|
||
// Pitch: modulation (semitones), no glide
|
||
fine_ratio = cent2ratio(fine_tune);
|
||
pitch_ratio = semi2ratio(mod_pitch(gate) * 12.0);
|
||
base_freq = freq * fine_ratio * pitch_ratio;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Per-harmonic base amplitude from group sliders
|
||
// ---------------------------------------------------------------------------
|
||
group_amp(k) =
|
||
ba.if(k == 1, h1_amp,
|
||
ba.if(k == 2, h2_amp,
|
||
ba.if(k == 3, h3_amp,
|
||
ba.if(k == 4, h4_amp,
|
||
ba.if(k == 5, h5_amp,
|
||
ba.if(k == 6, h6_amp,
|
||
ba.if(k == 7, h7_amp,
|
||
ba.if(k == 8, h8_amp,
|
||
ba.if(k <= 16, h9_16_amp,
|
||
ba.if(k <= 32, h17_32_amp,
|
||
h33_64_amp))))))))));
|
||
|
||
// Spectral tilt (modulated) — amp *= k^tilt
|
||
eff_tilt = spectral_tilt + mod_tilt(gate);
|
||
tilt_factor(k) = pow(float(k), eff_tilt);
|
||
|
||
// Odd/even balance (modulated, clamped)
|
||
eff_odd_even = max(0.0, min(1.0, odd_even + mod_odd_even(gate)));
|
||
odd_weight = (1.0 - eff_odd_even) * 2.0;
|
||
even_weight = eff_odd_even * 2.0;
|
||
odd_even_factor(k) = ba.if(k % 2 == 0, even_weight, odd_weight);
|
||
|
||
// Brightness destination: progressive boost/cut on upper partials.
|
||
// bright_blend(k): 0 at k=1, 1 at k=N. mod_bright is [-1,+1].
|
||
// factor(k) = 1 + bright_blend(k) * mod_bright. At mod=0 -> unity (neutral).
|
||
bright_blend(k) = float(k - 1) / float(N - 1);
|
||
mb = mod_bright(gate);
|
||
bright_factor(k) = 1.0 + bright_blend(k) * mb;
|
||
|
||
// Inharmonicity (modulated, clamped to keep partials monotonic)
|
||
eff_inharm = max(0.0, min(0.2, inharmonicity + mod_inharmonicity(gate) * 0.15));
|
||
|
||
// Formant centres (modulated together — mod_formant_ctr shifts both by same amt)
|
||
eff_formant_shift = mod_formant_ctr(gate) * 8.0; // ±8 harmonics
|
||
eff_f1 = max(1.0, min(32.0, formant1_freq + eff_formant_shift));
|
||
eff_f2 = max(1.0, min(32.0, formant2_freq + eff_formant_shift));
|
||
eff_formant_depth = max(0.0, min(1.0, formant_depth + mod_formant_depth(gate)));
|
||
|
||
// Formant shaping — two Gaussian bumps in harmonic-index space
|
||
sigma_sq = 1.5 * 1.5;
|
||
formant_bump(k, ctr) = exp(-0.5 * (float(k) - ctr) * (float(k) - ctr) / sigma_sq);
|
||
formant_factor(k) =
|
||
1.0 + eff_formant_depth * (formant_bump(k, eff_f1) + formant_bump(k, eff_f2));
|
||
|
||
// Combined per-harmonic amplitude
|
||
harm_amp(k) =
|
||
group_amp(k) * tilt_factor(k) * odd_even_factor(k) *
|
||
bright_factor(k) * formant_factor(k);
|
||
|
||
// Inharmonic partial frequency: freq_k = k*f0*(1 + B*(k^2 - 1))
|
||
harm_freq(k) = base_freq * float(k)
|
||
* (1.0 + eff_inharm * (float(k) * float(k) - 1.0));
|
||
|
||
// Stereo spread — R channel gets a small per-harmonic pitch offset
|
||
stereo_spread_freq(k) = stereo_phase_spread * float(k) * 0.01;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Additive oscillator sums — L and R
|
||
// ---------------------------------------------------------------------------
|
||
additive_L = sum(k, N, harm_amp(k+1) * os.osc(harm_freq(k+1)));
|
||
additive_R = sum(k, N,
|
||
harm_amp(k+1) * os.osc(harm_freq(k+1) * (1.0 + stereo_spread_freq(k+1))));
|
||
|
||
// Sub-harmonic (0.5× fundamental)
|
||
sub_osc = sub_harmonic * os.osc(base_freq * 0.5);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Noise floor — coloured via one-pole LP
|
||
// ---------------------------------------------------------------------------
|
||
eff_noise = max(0.0, min(1.0, noise_floor + mod_noise_mix(gate)));
|
||
noise_lp_cutoff = 200.0 + (1.0 - noise_color) * 19800.0;
|
||
noise_signal = no.noise : fi.lowpass(1, noise_lp_cutoff);
|
||
noise_out = eff_noise * noise_signal;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Soft-clip saturation — tanh waveshaper
|
||
// ---------------------------------------------------------------------------
|
||
drive = 1.0 + saturation * 9.0;
|
||
softclip(x) = ma.tanh(x * drive) / drive;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Velocity gain — keeps _vel alive in the JSON descriptor
|
||
// ---------------------------------------------------------------------------
|
||
vel_gain = (1.0 - 0.3) + 0.3 * vel;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Amplitude and pan (both mod-driven)
|
||
// ---------------------------------------------------------------------------
|
||
amp_val = max(0.0, min(1.0, base_amp + mod_amp(gate))) * level * vel_gain;
|
||
pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate)));
|
||
|
||
pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI);
|
||
pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI);
|
||
|
||
raw_L = (additive_L + sub_osc + noise_out) * amp_val;
|
||
raw_R = (additive_R + sub_osc + noise_out) * amp_val;
|
||
|
||
signal_L = softclip(raw_L) * pan_l;
|
||
signal_R = softclip(raw_R) * pan_r;
|
||
|
||
process = signal_L, signal_R;
|