// 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;