// modular-fm.dsp — 4-operator FM 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: 4 ops with 12-cell cross-mod matrix and per-op feedback. // 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 added to the base frequency // 1 op1_level added to op1 level knob // 2 op2_level added to op2 level knob // 3 op3_level added to op3 level knob // 4 op4_level added to op4 level knob // 5 cross_mod_global global FM depth multiplier on all 12 cross-mod cells // 6 feedback_global global feedback multiplier on all 4 self-feedback cells // 7 global_ratio additive scale factor on all 4 operator ratios // 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 — Operators (ratio & level per op) // --------------------------------------------------------------------------- op1_ratio = hslider("1_Operators/00_op1_ratio", 1.0, 0.125, 16.0, 0.001); op1_level = hslider("1_Operators/01_op1_level", 0.8, 0.0, 1.0, 0.001); op2_ratio = hslider("1_Operators/02_op2_ratio", 2.0, 0.125, 16.0, 0.001); op2_level = hslider("1_Operators/03_op2_level", 0.6, 0.0, 1.0, 0.001); op3_ratio = hslider("1_Operators/04_op3_ratio", 3.0, 0.125, 16.0, 0.001); op3_level = hslider("1_Operators/05_op3_level", 0.4, 0.0, 1.0, 0.001); op4_ratio = hslider("1_Operators/06_op4_ratio", 0.5, 0.125, 16.0, 0.001); op4_level = hslider("1_Operators/07_op4_level", 0.3, 0.0, 1.0, 0.001); // --------------------------------------------------------------------------- // Group 2 — Cross-mod Matrix (mXY = op X modulates op Y) // --------------------------------------------------------------------------- m12 = hslider("2_CrossMod/00_m12", 0.0, 0.0, 10.0, 0.001); m13 = hslider("2_CrossMod/01_m13", 0.0, 0.0, 10.0, 0.001); m14 = hslider("2_CrossMod/02_m14", 0.0, 0.0, 10.0, 0.001); m21 = hslider("2_CrossMod/03_m21", 1.0, 0.0, 10.0, 0.001); m23 = hslider("2_CrossMod/04_m23", 0.0, 0.0, 10.0, 0.001); m24 = hslider("2_CrossMod/05_m24", 0.0, 0.0, 10.0, 0.001); m31 = hslider("2_CrossMod/06_m31", 0.0, 0.0, 10.0, 0.001); m32 = hslider("2_CrossMod/07_m32", 0.0, 0.0, 10.0, 0.001); m34 = hslider("2_CrossMod/08_m34", 0.0, 0.0, 10.0, 0.001); m41 = hslider("2_CrossMod/09_m41", 0.0, 0.0, 10.0, 0.001); m42 = hslider("2_CrossMod/10_m42", 0.0, 0.0, 10.0, 0.001); m43 = hslider("2_CrossMod/11_m43", 0.0, 0.0, 10.0, 0.001); // --------------------------------------------------------------------------- // Group 3 — Self-feedback // --------------------------------------------------------------------------- fb1 = hslider("3_Feedback/00_fb1", 0.0, 0.0, 1.0, 0.001); fb2 = hslider("3_Feedback/01_fb2", 0.0, 0.0, 1.0, 0.001); fb3 = hslider("3_Feedback/02_fb3", 0.0, 0.0, 1.0, 0.001); fb4 = hslider("3_Feedback/03_fb4", 0.0, 0.0, 1.0, 0.001); // --------------------------------------------------------------------------- // Group 4 — Master // --------------------------------------------------------------------------- master_level = hslider("4_Master/00_master_level", 0.7, 0.0, 1.0, 0.001); fine_tune = hslider("4_Master/01_fine_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1); stereo_spread = hslider("4_Master/02_stereo_spread", 0.1, 0.0, 1.0, 0.001); output_saturation = hslider("4_Master/03_output_saturation", 0.0, 0.0, 1.0, 0.001); output_hp = hslider("4_Master/04_output_hp[unit:Hz]",20.0, 20.0, 200.0,0.1); master_pan = hslider("4_Master/05_master_pan", 0.0, -1.0, 1.0, 0.001); // Static amp floor — see subtractive engine for full explanation. base_amp = hslider("4_Master/06_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 = op1_level amt_s00_d01_op1_level = hslider("MM_Matrix/s00_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s01_d01_op1_level = hslider("MM_Matrix/s01_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s02_d01_op1_level = hslider("MM_Matrix/s02_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s03_d01_op1_level = hslider("MM_Matrix/s03_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s04_d01_op1_level = hslider("MM_Matrix/s04_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s05_d01_op1_level = hslider("MM_Matrix/s05_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s06_d01_op1_level = hslider("MM_Matrix/s06_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s07_d01_op1_level = hslider("MM_Matrix/s07_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s08_d01_op1_level = hslider("MM_Matrix/s08_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s09_d01_op1_level = hslider("MM_Matrix/s09_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s10_d01_op1_level = hslider("MM_Matrix/s10_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s11_d01_op1_level = hslider("MM_Matrix/s11_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s12_d01_op1_level = hslider("MM_Matrix/s12_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s13_d01_op1_level = hslider("MM_Matrix/s13_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s14_d01_op1_level = hslider("MM_Matrix/s14_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s15_d01_op1_level = hslider("MM_Matrix/s15_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s16_d01_op1_level = hslider("MM_Matrix/s16_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s17_d01_op1_level = hslider("MM_Matrix/s17_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s18_d01_op1_level = hslider("MM_Matrix/s18_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s19_d01_op1_level = hslider("MM_Matrix/s19_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s20_d01_op1_level = hslider("MM_Matrix/s20_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s21_d01_op1_level = hslider("MM_Matrix/s21_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s22_d01_op1_level = hslider("MM_Matrix/s22_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s23_d01_op1_level = hslider("MM_Matrix/s23_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s24_d01_op1_level = hslider("MM_Matrix/s24_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s25_d01_op1_level = hslider("MM_Matrix/s25_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s26_d01_op1_level = hslider("MM_Matrix/s26_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s27_d01_op1_level = hslider("MM_Matrix/s27_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s28_d01_op1_level = hslider("MM_Matrix/s28_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s29_d01_op1_level = hslider("MM_Matrix/s29_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s30_d01_op1_level = hslider("MM_Matrix/s30_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s31_d01_op1_level = hslider("MM_Matrix/s31_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s32_d01_op1_level = hslider("MM_Matrix/s32_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s33_d01_op1_level = hslider("MM_Matrix/s33_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s34_d01_op1_level = hslider("MM_Matrix/s34_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s35_d01_op1_level = hslider("MM_Matrix/s35_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s36_d01_op1_level = hslider("MM_Matrix/s36_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s37_d01_op1_level = hslider("MM_Matrix/s37_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s38_d01_op1_level = hslider("MM_Matrix/s38_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s39_d01_op1_level = hslider("MM_Matrix/s39_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s40_d01_op1_level = hslider("MM_Matrix/s40_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s41_d01_op1_level = hslider("MM_Matrix/s41_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s42_d01_op1_level = hslider("MM_Matrix/s42_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s43_d01_op1_level = hslider("MM_Matrix/s43_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s44_d01_op1_level = hslider("MM_Matrix/s44_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s45_d01_op1_level = hslider("MM_Matrix/s45_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s46_d01_op1_level = hslider("MM_Matrix/s46_d01_op1_level", 0.0, -1.0, 1.0, 0.001); amt_s47_d01_op1_level = hslider("MM_Matrix/s47_d01_op1_level", 0.0, -1.0, 1.0, 0.001); // Matrix column: destination 2 = op2_level amt_s00_d02_op2_level = hslider("MM_Matrix/s00_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s01_d02_op2_level = hslider("MM_Matrix/s01_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s02_d02_op2_level = hslider("MM_Matrix/s02_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s03_d02_op2_level = hslider("MM_Matrix/s03_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s04_d02_op2_level = hslider("MM_Matrix/s04_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s05_d02_op2_level = hslider("MM_Matrix/s05_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s06_d02_op2_level = hslider("MM_Matrix/s06_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s07_d02_op2_level = hslider("MM_Matrix/s07_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s08_d02_op2_level = hslider("MM_Matrix/s08_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s09_d02_op2_level = hslider("MM_Matrix/s09_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s10_d02_op2_level = hslider("MM_Matrix/s10_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s11_d02_op2_level = hslider("MM_Matrix/s11_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s12_d02_op2_level = hslider("MM_Matrix/s12_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s13_d02_op2_level = hslider("MM_Matrix/s13_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s14_d02_op2_level = hslider("MM_Matrix/s14_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s15_d02_op2_level = hslider("MM_Matrix/s15_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s16_d02_op2_level = hslider("MM_Matrix/s16_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s17_d02_op2_level = hslider("MM_Matrix/s17_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s18_d02_op2_level = hslider("MM_Matrix/s18_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s19_d02_op2_level = hslider("MM_Matrix/s19_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s20_d02_op2_level = hslider("MM_Matrix/s20_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s21_d02_op2_level = hslider("MM_Matrix/s21_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s22_d02_op2_level = hslider("MM_Matrix/s22_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s23_d02_op2_level = hslider("MM_Matrix/s23_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s24_d02_op2_level = hslider("MM_Matrix/s24_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s25_d02_op2_level = hslider("MM_Matrix/s25_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s26_d02_op2_level = hslider("MM_Matrix/s26_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s27_d02_op2_level = hslider("MM_Matrix/s27_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s28_d02_op2_level = hslider("MM_Matrix/s28_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s29_d02_op2_level = hslider("MM_Matrix/s29_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s30_d02_op2_level = hslider("MM_Matrix/s30_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s31_d02_op2_level = hslider("MM_Matrix/s31_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s32_d02_op2_level = hslider("MM_Matrix/s32_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s33_d02_op2_level = hslider("MM_Matrix/s33_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s34_d02_op2_level = hslider("MM_Matrix/s34_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s35_d02_op2_level = hslider("MM_Matrix/s35_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s36_d02_op2_level = hslider("MM_Matrix/s36_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s37_d02_op2_level = hslider("MM_Matrix/s37_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s38_d02_op2_level = hslider("MM_Matrix/s38_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s39_d02_op2_level = hslider("MM_Matrix/s39_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s40_d02_op2_level = hslider("MM_Matrix/s40_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s41_d02_op2_level = hslider("MM_Matrix/s41_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s42_d02_op2_level = hslider("MM_Matrix/s42_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s43_d02_op2_level = hslider("MM_Matrix/s43_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s44_d02_op2_level = hslider("MM_Matrix/s44_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s45_d02_op2_level = hslider("MM_Matrix/s45_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s46_d02_op2_level = hslider("MM_Matrix/s46_d02_op2_level", 0.0, -1.0, 1.0, 0.001); amt_s47_d02_op2_level = hslider("MM_Matrix/s47_d02_op2_level", 0.0, -1.0, 1.0, 0.001); // Matrix column: destination 3 = op3_level amt_s00_d03_op3_level = hslider("MM_Matrix/s00_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s01_d03_op3_level = hslider("MM_Matrix/s01_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s02_d03_op3_level = hslider("MM_Matrix/s02_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s03_d03_op3_level = hslider("MM_Matrix/s03_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s04_d03_op3_level = hslider("MM_Matrix/s04_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s05_d03_op3_level = hslider("MM_Matrix/s05_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s06_d03_op3_level = hslider("MM_Matrix/s06_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s07_d03_op3_level = hslider("MM_Matrix/s07_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s08_d03_op3_level = hslider("MM_Matrix/s08_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s09_d03_op3_level = hslider("MM_Matrix/s09_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s10_d03_op3_level = hslider("MM_Matrix/s10_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s11_d03_op3_level = hslider("MM_Matrix/s11_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s12_d03_op3_level = hslider("MM_Matrix/s12_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s13_d03_op3_level = hslider("MM_Matrix/s13_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s14_d03_op3_level = hslider("MM_Matrix/s14_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s15_d03_op3_level = hslider("MM_Matrix/s15_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s16_d03_op3_level = hslider("MM_Matrix/s16_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s17_d03_op3_level = hslider("MM_Matrix/s17_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s18_d03_op3_level = hslider("MM_Matrix/s18_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s19_d03_op3_level = hslider("MM_Matrix/s19_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s20_d03_op3_level = hslider("MM_Matrix/s20_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s21_d03_op3_level = hslider("MM_Matrix/s21_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s22_d03_op3_level = hslider("MM_Matrix/s22_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s23_d03_op3_level = hslider("MM_Matrix/s23_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s24_d03_op3_level = hslider("MM_Matrix/s24_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s25_d03_op3_level = hslider("MM_Matrix/s25_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s26_d03_op3_level = hslider("MM_Matrix/s26_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s27_d03_op3_level = hslider("MM_Matrix/s27_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s28_d03_op3_level = hslider("MM_Matrix/s28_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s29_d03_op3_level = hslider("MM_Matrix/s29_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s30_d03_op3_level = hslider("MM_Matrix/s30_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s31_d03_op3_level = hslider("MM_Matrix/s31_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s32_d03_op3_level = hslider("MM_Matrix/s32_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s33_d03_op3_level = hslider("MM_Matrix/s33_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s34_d03_op3_level = hslider("MM_Matrix/s34_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s35_d03_op3_level = hslider("MM_Matrix/s35_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s36_d03_op3_level = hslider("MM_Matrix/s36_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s37_d03_op3_level = hslider("MM_Matrix/s37_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s38_d03_op3_level = hslider("MM_Matrix/s38_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s39_d03_op3_level = hslider("MM_Matrix/s39_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s40_d03_op3_level = hslider("MM_Matrix/s40_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s41_d03_op3_level = hslider("MM_Matrix/s41_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s42_d03_op3_level = hslider("MM_Matrix/s42_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s43_d03_op3_level = hslider("MM_Matrix/s43_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s44_d03_op3_level = hslider("MM_Matrix/s44_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s45_d03_op3_level = hslider("MM_Matrix/s45_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s46_d03_op3_level = hslider("MM_Matrix/s46_d03_op3_level", 0.0, -1.0, 1.0, 0.001); amt_s47_d03_op3_level = hslider("MM_Matrix/s47_d03_op3_level", 0.0, -1.0, 1.0, 0.001); // Matrix column: destination 4 = op4_level amt_s00_d04_op4_level = hslider("MM_Matrix/s00_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s01_d04_op4_level = hslider("MM_Matrix/s01_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s02_d04_op4_level = hslider("MM_Matrix/s02_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s03_d04_op4_level = hslider("MM_Matrix/s03_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s04_d04_op4_level = hslider("MM_Matrix/s04_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s05_d04_op4_level = hslider("MM_Matrix/s05_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s06_d04_op4_level = hslider("MM_Matrix/s06_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s07_d04_op4_level = hslider("MM_Matrix/s07_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s08_d04_op4_level = hslider("MM_Matrix/s08_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s09_d04_op4_level = hslider("MM_Matrix/s09_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s10_d04_op4_level = hslider("MM_Matrix/s10_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s11_d04_op4_level = hslider("MM_Matrix/s11_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s12_d04_op4_level = hslider("MM_Matrix/s12_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s13_d04_op4_level = hslider("MM_Matrix/s13_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s14_d04_op4_level = hslider("MM_Matrix/s14_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s15_d04_op4_level = hslider("MM_Matrix/s15_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s16_d04_op4_level = hslider("MM_Matrix/s16_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s17_d04_op4_level = hslider("MM_Matrix/s17_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s18_d04_op4_level = hslider("MM_Matrix/s18_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s19_d04_op4_level = hslider("MM_Matrix/s19_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s20_d04_op4_level = hslider("MM_Matrix/s20_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s21_d04_op4_level = hslider("MM_Matrix/s21_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s22_d04_op4_level = hslider("MM_Matrix/s22_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s23_d04_op4_level = hslider("MM_Matrix/s23_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s24_d04_op4_level = hslider("MM_Matrix/s24_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s25_d04_op4_level = hslider("MM_Matrix/s25_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s26_d04_op4_level = hslider("MM_Matrix/s26_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s27_d04_op4_level = hslider("MM_Matrix/s27_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s28_d04_op4_level = hslider("MM_Matrix/s28_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s29_d04_op4_level = hslider("MM_Matrix/s29_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s30_d04_op4_level = hslider("MM_Matrix/s30_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s31_d04_op4_level = hslider("MM_Matrix/s31_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s32_d04_op4_level = hslider("MM_Matrix/s32_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s33_d04_op4_level = hslider("MM_Matrix/s33_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s34_d04_op4_level = hslider("MM_Matrix/s34_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s35_d04_op4_level = hslider("MM_Matrix/s35_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s36_d04_op4_level = hslider("MM_Matrix/s36_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s37_d04_op4_level = hslider("MM_Matrix/s37_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s38_d04_op4_level = hslider("MM_Matrix/s38_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s39_d04_op4_level = hslider("MM_Matrix/s39_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s40_d04_op4_level = hslider("MM_Matrix/s40_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s41_d04_op4_level = hslider("MM_Matrix/s41_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s42_d04_op4_level = hslider("MM_Matrix/s42_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s43_d04_op4_level = hslider("MM_Matrix/s43_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s44_d04_op4_level = hslider("MM_Matrix/s44_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s45_d04_op4_level = hslider("MM_Matrix/s45_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s46_d04_op4_level = hslider("MM_Matrix/s46_d04_op4_level", 0.0, -1.0, 1.0, 0.001); amt_s47_d04_op4_level = hslider("MM_Matrix/s47_d04_op4_level", 0.0, -1.0, 1.0, 0.001); // Matrix column: destination 5 = cross_mod_global amt_s00_d05_cross_mod_global = hslider("MM_Matrix/s00_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s01_d05_cross_mod_global = hslider("MM_Matrix/s01_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s02_d05_cross_mod_global = hslider("MM_Matrix/s02_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s03_d05_cross_mod_global = hslider("MM_Matrix/s03_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s04_d05_cross_mod_global = hslider("MM_Matrix/s04_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s05_d05_cross_mod_global = hslider("MM_Matrix/s05_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s06_d05_cross_mod_global = hslider("MM_Matrix/s06_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s07_d05_cross_mod_global = hslider("MM_Matrix/s07_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s08_d05_cross_mod_global = hslider("MM_Matrix/s08_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s09_d05_cross_mod_global = hslider("MM_Matrix/s09_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s10_d05_cross_mod_global = hslider("MM_Matrix/s10_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s11_d05_cross_mod_global = hslider("MM_Matrix/s11_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s12_d05_cross_mod_global = hslider("MM_Matrix/s12_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s13_d05_cross_mod_global = hslider("MM_Matrix/s13_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s14_d05_cross_mod_global = hslider("MM_Matrix/s14_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s15_d05_cross_mod_global = hslider("MM_Matrix/s15_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s16_d05_cross_mod_global = hslider("MM_Matrix/s16_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s17_d05_cross_mod_global = hslider("MM_Matrix/s17_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s18_d05_cross_mod_global = hslider("MM_Matrix/s18_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s19_d05_cross_mod_global = hslider("MM_Matrix/s19_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s20_d05_cross_mod_global = hslider("MM_Matrix/s20_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s21_d05_cross_mod_global = hslider("MM_Matrix/s21_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s22_d05_cross_mod_global = hslider("MM_Matrix/s22_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s23_d05_cross_mod_global = hslider("MM_Matrix/s23_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s24_d05_cross_mod_global = hslider("MM_Matrix/s24_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s25_d05_cross_mod_global = hslider("MM_Matrix/s25_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s26_d05_cross_mod_global = hslider("MM_Matrix/s26_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s27_d05_cross_mod_global = hslider("MM_Matrix/s27_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s28_d05_cross_mod_global = hslider("MM_Matrix/s28_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s29_d05_cross_mod_global = hslider("MM_Matrix/s29_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s30_d05_cross_mod_global = hslider("MM_Matrix/s30_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s31_d05_cross_mod_global = hslider("MM_Matrix/s31_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s32_d05_cross_mod_global = hslider("MM_Matrix/s32_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s33_d05_cross_mod_global = hslider("MM_Matrix/s33_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s34_d05_cross_mod_global = hslider("MM_Matrix/s34_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s35_d05_cross_mod_global = hslider("MM_Matrix/s35_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s36_d05_cross_mod_global = hslider("MM_Matrix/s36_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s37_d05_cross_mod_global = hslider("MM_Matrix/s37_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s38_d05_cross_mod_global = hslider("MM_Matrix/s38_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s39_d05_cross_mod_global = hslider("MM_Matrix/s39_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s40_d05_cross_mod_global = hslider("MM_Matrix/s40_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s41_d05_cross_mod_global = hslider("MM_Matrix/s41_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s42_d05_cross_mod_global = hslider("MM_Matrix/s42_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s43_d05_cross_mod_global = hslider("MM_Matrix/s43_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s44_d05_cross_mod_global = hslider("MM_Matrix/s44_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s45_d05_cross_mod_global = hslider("MM_Matrix/s45_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s46_d05_cross_mod_global = hslider("MM_Matrix/s46_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); amt_s47_d05_cross_mod_global = hslider("MM_Matrix/s47_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); // Matrix column: destination 6 = feedback_global amt_s00_d06_feedback_global = hslider("MM_Matrix/s00_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s01_d06_feedback_global = hslider("MM_Matrix/s01_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s02_d06_feedback_global = hslider("MM_Matrix/s02_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s03_d06_feedback_global = hslider("MM_Matrix/s03_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s04_d06_feedback_global = hslider("MM_Matrix/s04_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s05_d06_feedback_global = hslider("MM_Matrix/s05_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s06_d06_feedback_global = hslider("MM_Matrix/s06_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s07_d06_feedback_global = hslider("MM_Matrix/s07_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s08_d06_feedback_global = hslider("MM_Matrix/s08_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s09_d06_feedback_global = hslider("MM_Matrix/s09_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s10_d06_feedback_global = hslider("MM_Matrix/s10_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s11_d06_feedback_global = hslider("MM_Matrix/s11_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s12_d06_feedback_global = hslider("MM_Matrix/s12_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s13_d06_feedback_global = hslider("MM_Matrix/s13_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s14_d06_feedback_global = hslider("MM_Matrix/s14_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s15_d06_feedback_global = hslider("MM_Matrix/s15_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s16_d06_feedback_global = hslider("MM_Matrix/s16_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s17_d06_feedback_global = hslider("MM_Matrix/s17_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s18_d06_feedback_global = hslider("MM_Matrix/s18_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s19_d06_feedback_global = hslider("MM_Matrix/s19_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s20_d06_feedback_global = hslider("MM_Matrix/s20_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s21_d06_feedback_global = hslider("MM_Matrix/s21_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s22_d06_feedback_global = hslider("MM_Matrix/s22_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s23_d06_feedback_global = hslider("MM_Matrix/s23_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s24_d06_feedback_global = hslider("MM_Matrix/s24_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s25_d06_feedback_global = hslider("MM_Matrix/s25_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s26_d06_feedback_global = hslider("MM_Matrix/s26_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s27_d06_feedback_global = hslider("MM_Matrix/s27_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s28_d06_feedback_global = hslider("MM_Matrix/s28_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s29_d06_feedback_global = hslider("MM_Matrix/s29_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s30_d06_feedback_global = hslider("MM_Matrix/s30_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s31_d06_feedback_global = hslider("MM_Matrix/s31_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s32_d06_feedback_global = hslider("MM_Matrix/s32_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s33_d06_feedback_global = hslider("MM_Matrix/s33_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s34_d06_feedback_global = hslider("MM_Matrix/s34_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s35_d06_feedback_global = hslider("MM_Matrix/s35_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s36_d06_feedback_global = hslider("MM_Matrix/s36_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s37_d06_feedback_global = hslider("MM_Matrix/s37_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s38_d06_feedback_global = hslider("MM_Matrix/s38_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s39_d06_feedback_global = hslider("MM_Matrix/s39_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s40_d06_feedback_global = hslider("MM_Matrix/s40_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s41_d06_feedback_global = hslider("MM_Matrix/s41_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s42_d06_feedback_global = hslider("MM_Matrix/s42_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s43_d06_feedback_global = hslider("MM_Matrix/s43_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s44_d06_feedback_global = hslider("MM_Matrix/s44_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s45_d06_feedback_global = hslider("MM_Matrix/s45_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s46_d06_feedback_global = hslider("MM_Matrix/s46_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); amt_s47_d06_feedback_global = hslider("MM_Matrix/s47_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); // Matrix column: destination 7 = global_ratio amt_s00_d07_global_ratio = hslider("MM_Matrix/s00_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s01_d07_global_ratio = hslider("MM_Matrix/s01_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s02_d07_global_ratio = hslider("MM_Matrix/s02_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s03_d07_global_ratio = hslider("MM_Matrix/s03_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s04_d07_global_ratio = hslider("MM_Matrix/s04_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s05_d07_global_ratio = hslider("MM_Matrix/s05_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s06_d07_global_ratio = hslider("MM_Matrix/s06_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s07_d07_global_ratio = hslider("MM_Matrix/s07_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s08_d07_global_ratio = hslider("MM_Matrix/s08_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s09_d07_global_ratio = hslider("MM_Matrix/s09_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s10_d07_global_ratio = hslider("MM_Matrix/s10_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s11_d07_global_ratio = hslider("MM_Matrix/s11_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s12_d07_global_ratio = hslider("MM_Matrix/s12_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s13_d07_global_ratio = hslider("MM_Matrix/s13_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s14_d07_global_ratio = hslider("MM_Matrix/s14_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s15_d07_global_ratio = hslider("MM_Matrix/s15_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s16_d07_global_ratio = hslider("MM_Matrix/s16_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s17_d07_global_ratio = hslider("MM_Matrix/s17_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s18_d07_global_ratio = hslider("MM_Matrix/s18_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s19_d07_global_ratio = hslider("MM_Matrix/s19_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s20_d07_global_ratio = hslider("MM_Matrix/s20_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s21_d07_global_ratio = hslider("MM_Matrix/s21_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s22_d07_global_ratio = hslider("MM_Matrix/s22_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s23_d07_global_ratio = hslider("MM_Matrix/s23_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s24_d07_global_ratio = hslider("MM_Matrix/s24_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s25_d07_global_ratio = hslider("MM_Matrix/s25_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s26_d07_global_ratio = hslider("MM_Matrix/s26_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s27_d07_global_ratio = hslider("MM_Matrix/s27_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s28_d07_global_ratio = hslider("MM_Matrix/s28_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s29_d07_global_ratio = hslider("MM_Matrix/s29_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s30_d07_global_ratio = hslider("MM_Matrix/s30_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s31_d07_global_ratio = hslider("MM_Matrix/s31_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s32_d07_global_ratio = hslider("MM_Matrix/s32_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s33_d07_global_ratio = hslider("MM_Matrix/s33_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s34_d07_global_ratio = hslider("MM_Matrix/s34_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s35_d07_global_ratio = hslider("MM_Matrix/s35_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s36_d07_global_ratio = hslider("MM_Matrix/s36_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s37_d07_global_ratio = hslider("MM_Matrix/s37_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s38_d07_global_ratio = hslider("MM_Matrix/s38_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s39_d07_global_ratio = hslider("MM_Matrix/s39_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s40_d07_global_ratio = hslider("MM_Matrix/s40_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s41_d07_global_ratio = hslider("MM_Matrix/s41_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s42_d07_global_ratio = hslider("MM_Matrix/s42_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s43_d07_global_ratio = hslider("MM_Matrix/s43_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s44_d07_global_ratio = hslider("MM_Matrix/s44_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s45_d07_global_ratio = hslider("MM_Matrix/s45_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s46_d07_global_ratio = hslider("MM_Matrix/s46_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); amt_s47_d07_global_ratio = hslider("MM_Matrix/s47_d07_global_ratio", 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_op1_level(gate) = mp.src00(gate) * amt_s00_d01_op1_level + mp.src01(gate) * amt_s01_d01_op1_level + mp.src02(gate) * amt_s02_d01_op1_level + mp.src03(gate) * amt_s03_d01_op1_level + mp.src04(gate) * amt_s04_d01_op1_level + mp.src05(gate) * amt_s05_d01_op1_level + mp.src06(gate) * amt_s06_d01_op1_level + mp.src07(gate) * amt_s07_d01_op1_level + mp.src08(gate) * amt_s08_d01_op1_level + mp.src09(gate) * amt_s09_d01_op1_level + mp.src10(gate) * amt_s10_d01_op1_level + mp.src11(gate) * amt_s11_d01_op1_level + mp.src12(gate) * amt_s12_d01_op1_level + mp.src13(gate) * amt_s13_d01_op1_level + mp.src14(gate) * amt_s14_d01_op1_level + mp.src15(gate) * amt_s15_d01_op1_level + mp.src16(gate) * amt_s16_d01_op1_level + mp.src17(gate) * amt_s17_d01_op1_level + mp.src18(gate) * amt_s18_d01_op1_level + mp.src19(gate) * amt_s19_d01_op1_level + mp.src20(gate) * amt_s20_d01_op1_level + mp.src21(gate) * amt_s21_d01_op1_level + mp.src22(gate) * amt_s22_d01_op1_level + mp.src23(gate) * amt_s23_d01_op1_level + mp.src24(gate) * amt_s24_d01_op1_level + mp.src25(gate) * amt_s25_d01_op1_level + mp.src26(gate) * amt_s26_d01_op1_level + mp.src27(gate) * amt_s27_d01_op1_level + mp.src28(gate) * amt_s28_d01_op1_level + mp.src29(gate) * amt_s29_d01_op1_level + mp.src30(gate) * amt_s30_d01_op1_level + mp.src31(gate) * amt_s31_d01_op1_level + mp.src32(gate) * amt_s32_d01_op1_level + mp.src33(gate) * amt_s33_d01_op1_level + mp.src34(gate) * amt_s34_d01_op1_level + mp.src35(gate) * amt_s35_d01_op1_level + mp.src36(gate) * amt_s36_d01_op1_level + mp.src37(gate) * amt_s37_d01_op1_level + mp.src38(gate) * amt_s38_d01_op1_level + mp.src39(gate) * amt_s39_d01_op1_level + mp.src40(gate) * amt_s40_d01_op1_level + mp.src41(gate) * amt_s41_d01_op1_level + mp.src42(gate) * amt_s42_d01_op1_level + mp.src43(gate) * amt_s43_d01_op1_level + mp.src44(gate) * amt_s44_d01_op1_level + mp.src45(gate) * amt_s45_d01_op1_level + mp.src46(gate) * amt_s46_d01_op1_level + mp.src47(gate) * amt_s47_d01_op1_level; mod_op2_level(gate) = mp.src00(gate) * amt_s00_d02_op2_level + mp.src01(gate) * amt_s01_d02_op2_level + mp.src02(gate) * amt_s02_d02_op2_level + mp.src03(gate) * amt_s03_d02_op2_level + mp.src04(gate) * amt_s04_d02_op2_level + mp.src05(gate) * amt_s05_d02_op2_level + mp.src06(gate) * amt_s06_d02_op2_level + mp.src07(gate) * amt_s07_d02_op2_level + mp.src08(gate) * amt_s08_d02_op2_level + mp.src09(gate) * amt_s09_d02_op2_level + mp.src10(gate) * amt_s10_d02_op2_level + mp.src11(gate) * amt_s11_d02_op2_level + mp.src12(gate) * amt_s12_d02_op2_level + mp.src13(gate) * amt_s13_d02_op2_level + mp.src14(gate) * amt_s14_d02_op2_level + mp.src15(gate) * amt_s15_d02_op2_level + mp.src16(gate) * amt_s16_d02_op2_level + mp.src17(gate) * amt_s17_d02_op2_level + mp.src18(gate) * amt_s18_d02_op2_level + mp.src19(gate) * amt_s19_d02_op2_level + mp.src20(gate) * amt_s20_d02_op2_level + mp.src21(gate) * amt_s21_d02_op2_level + mp.src22(gate) * amt_s22_d02_op2_level + mp.src23(gate) * amt_s23_d02_op2_level + mp.src24(gate) * amt_s24_d02_op2_level + mp.src25(gate) * amt_s25_d02_op2_level + mp.src26(gate) * amt_s26_d02_op2_level + mp.src27(gate) * amt_s27_d02_op2_level + mp.src28(gate) * amt_s28_d02_op2_level + mp.src29(gate) * amt_s29_d02_op2_level + mp.src30(gate) * amt_s30_d02_op2_level + mp.src31(gate) * amt_s31_d02_op2_level + mp.src32(gate) * amt_s32_d02_op2_level + mp.src33(gate) * amt_s33_d02_op2_level + mp.src34(gate) * amt_s34_d02_op2_level + mp.src35(gate) * amt_s35_d02_op2_level + mp.src36(gate) * amt_s36_d02_op2_level + mp.src37(gate) * amt_s37_d02_op2_level + mp.src38(gate) * amt_s38_d02_op2_level + mp.src39(gate) * amt_s39_d02_op2_level + mp.src40(gate) * amt_s40_d02_op2_level + mp.src41(gate) * amt_s41_d02_op2_level + mp.src42(gate) * amt_s42_d02_op2_level + mp.src43(gate) * amt_s43_d02_op2_level + mp.src44(gate) * amt_s44_d02_op2_level + mp.src45(gate) * amt_s45_d02_op2_level + mp.src46(gate) * amt_s46_d02_op2_level + mp.src47(gate) * amt_s47_d02_op2_level; mod_op3_level(gate) = mp.src00(gate) * amt_s00_d03_op3_level + mp.src01(gate) * amt_s01_d03_op3_level + mp.src02(gate) * amt_s02_d03_op3_level + mp.src03(gate) * amt_s03_d03_op3_level + mp.src04(gate) * amt_s04_d03_op3_level + mp.src05(gate) * amt_s05_d03_op3_level + mp.src06(gate) * amt_s06_d03_op3_level + mp.src07(gate) * amt_s07_d03_op3_level + mp.src08(gate) * amt_s08_d03_op3_level + mp.src09(gate) * amt_s09_d03_op3_level + mp.src10(gate) * amt_s10_d03_op3_level + mp.src11(gate) * amt_s11_d03_op3_level + mp.src12(gate) * amt_s12_d03_op3_level + mp.src13(gate) * amt_s13_d03_op3_level + mp.src14(gate) * amt_s14_d03_op3_level + mp.src15(gate) * amt_s15_d03_op3_level + mp.src16(gate) * amt_s16_d03_op3_level + mp.src17(gate) * amt_s17_d03_op3_level + mp.src18(gate) * amt_s18_d03_op3_level + mp.src19(gate) * amt_s19_d03_op3_level + mp.src20(gate) * amt_s20_d03_op3_level + mp.src21(gate) * amt_s21_d03_op3_level + mp.src22(gate) * amt_s22_d03_op3_level + mp.src23(gate) * amt_s23_d03_op3_level + mp.src24(gate) * amt_s24_d03_op3_level + mp.src25(gate) * amt_s25_d03_op3_level + mp.src26(gate) * amt_s26_d03_op3_level + mp.src27(gate) * amt_s27_d03_op3_level + mp.src28(gate) * amt_s28_d03_op3_level + mp.src29(gate) * amt_s29_d03_op3_level + mp.src30(gate) * amt_s30_d03_op3_level + mp.src31(gate) * amt_s31_d03_op3_level + mp.src32(gate) * amt_s32_d03_op3_level + mp.src33(gate) * amt_s33_d03_op3_level + mp.src34(gate) * amt_s34_d03_op3_level + mp.src35(gate) * amt_s35_d03_op3_level + mp.src36(gate) * amt_s36_d03_op3_level + mp.src37(gate) * amt_s37_d03_op3_level + mp.src38(gate) * amt_s38_d03_op3_level + mp.src39(gate) * amt_s39_d03_op3_level + mp.src40(gate) * amt_s40_d03_op3_level + mp.src41(gate) * amt_s41_d03_op3_level + mp.src42(gate) * amt_s42_d03_op3_level + mp.src43(gate) * amt_s43_d03_op3_level + mp.src44(gate) * amt_s44_d03_op3_level + mp.src45(gate) * amt_s45_d03_op3_level + mp.src46(gate) * amt_s46_d03_op3_level + mp.src47(gate) * amt_s47_d03_op3_level; mod_op4_level(gate) = mp.src00(gate) * amt_s00_d04_op4_level + mp.src01(gate) * amt_s01_d04_op4_level + mp.src02(gate) * amt_s02_d04_op4_level + mp.src03(gate) * amt_s03_d04_op4_level + mp.src04(gate) * amt_s04_d04_op4_level + mp.src05(gate) * amt_s05_d04_op4_level + mp.src06(gate) * amt_s06_d04_op4_level + mp.src07(gate) * amt_s07_d04_op4_level + mp.src08(gate) * amt_s08_d04_op4_level + mp.src09(gate) * amt_s09_d04_op4_level + mp.src10(gate) * amt_s10_d04_op4_level + mp.src11(gate) * amt_s11_d04_op4_level + mp.src12(gate) * amt_s12_d04_op4_level + mp.src13(gate) * amt_s13_d04_op4_level + mp.src14(gate) * amt_s14_d04_op4_level + mp.src15(gate) * amt_s15_d04_op4_level + mp.src16(gate) * amt_s16_d04_op4_level + mp.src17(gate) * amt_s17_d04_op4_level + mp.src18(gate) * amt_s18_d04_op4_level + mp.src19(gate) * amt_s19_d04_op4_level + mp.src20(gate) * amt_s20_d04_op4_level + mp.src21(gate) * amt_s21_d04_op4_level + mp.src22(gate) * amt_s22_d04_op4_level + mp.src23(gate) * amt_s23_d04_op4_level + mp.src24(gate) * amt_s24_d04_op4_level + mp.src25(gate) * amt_s25_d04_op4_level + mp.src26(gate) * amt_s26_d04_op4_level + mp.src27(gate) * amt_s27_d04_op4_level + mp.src28(gate) * amt_s28_d04_op4_level + mp.src29(gate) * amt_s29_d04_op4_level + mp.src30(gate) * amt_s30_d04_op4_level + mp.src31(gate) * amt_s31_d04_op4_level + mp.src32(gate) * amt_s32_d04_op4_level + mp.src33(gate) * amt_s33_d04_op4_level + mp.src34(gate) * amt_s34_d04_op4_level + mp.src35(gate) * amt_s35_d04_op4_level + mp.src36(gate) * amt_s36_d04_op4_level + mp.src37(gate) * amt_s37_d04_op4_level + mp.src38(gate) * amt_s38_d04_op4_level + mp.src39(gate) * amt_s39_d04_op4_level + mp.src40(gate) * amt_s40_d04_op4_level + mp.src41(gate) * amt_s41_d04_op4_level + mp.src42(gate) * amt_s42_d04_op4_level + mp.src43(gate) * amt_s43_d04_op4_level + mp.src44(gate) * amt_s44_d04_op4_level + mp.src45(gate) * amt_s45_d04_op4_level + mp.src46(gate) * amt_s46_d04_op4_level + mp.src47(gate) * amt_s47_d04_op4_level; mod_cross_mod_global(gate) = mp.src00(gate) * amt_s00_d05_cross_mod_global + mp.src01(gate) * amt_s01_d05_cross_mod_global + mp.src02(gate) * amt_s02_d05_cross_mod_global + mp.src03(gate) * amt_s03_d05_cross_mod_global + mp.src04(gate) * amt_s04_d05_cross_mod_global + mp.src05(gate) * amt_s05_d05_cross_mod_global + mp.src06(gate) * amt_s06_d05_cross_mod_global + mp.src07(gate) * amt_s07_d05_cross_mod_global + mp.src08(gate) * amt_s08_d05_cross_mod_global + mp.src09(gate) * amt_s09_d05_cross_mod_global + mp.src10(gate) * amt_s10_d05_cross_mod_global + mp.src11(gate) * amt_s11_d05_cross_mod_global + mp.src12(gate) * amt_s12_d05_cross_mod_global + mp.src13(gate) * amt_s13_d05_cross_mod_global + mp.src14(gate) * amt_s14_d05_cross_mod_global + mp.src15(gate) * amt_s15_d05_cross_mod_global + mp.src16(gate) * amt_s16_d05_cross_mod_global + mp.src17(gate) * amt_s17_d05_cross_mod_global + mp.src18(gate) * amt_s18_d05_cross_mod_global + mp.src19(gate) * amt_s19_d05_cross_mod_global + mp.src20(gate) * amt_s20_d05_cross_mod_global + mp.src21(gate) * amt_s21_d05_cross_mod_global + mp.src22(gate) * amt_s22_d05_cross_mod_global + mp.src23(gate) * amt_s23_d05_cross_mod_global + mp.src24(gate) * amt_s24_d05_cross_mod_global + mp.src25(gate) * amt_s25_d05_cross_mod_global + mp.src26(gate) * amt_s26_d05_cross_mod_global + mp.src27(gate) * amt_s27_d05_cross_mod_global + mp.src28(gate) * amt_s28_d05_cross_mod_global + mp.src29(gate) * amt_s29_d05_cross_mod_global + mp.src30(gate) * amt_s30_d05_cross_mod_global + mp.src31(gate) * amt_s31_d05_cross_mod_global + mp.src32(gate) * amt_s32_d05_cross_mod_global + mp.src33(gate) * amt_s33_d05_cross_mod_global + mp.src34(gate) * amt_s34_d05_cross_mod_global + mp.src35(gate) * amt_s35_d05_cross_mod_global + mp.src36(gate) * amt_s36_d05_cross_mod_global + mp.src37(gate) * amt_s37_d05_cross_mod_global + mp.src38(gate) * amt_s38_d05_cross_mod_global + mp.src39(gate) * amt_s39_d05_cross_mod_global + mp.src40(gate) * amt_s40_d05_cross_mod_global + mp.src41(gate) * amt_s41_d05_cross_mod_global + mp.src42(gate) * amt_s42_d05_cross_mod_global + mp.src43(gate) * amt_s43_d05_cross_mod_global + mp.src44(gate) * amt_s44_d05_cross_mod_global + mp.src45(gate) * amt_s45_d05_cross_mod_global + mp.src46(gate) * amt_s46_d05_cross_mod_global + mp.src47(gate) * amt_s47_d05_cross_mod_global; mod_feedback_global(gate) = mp.src00(gate) * amt_s00_d06_feedback_global + mp.src01(gate) * amt_s01_d06_feedback_global + mp.src02(gate) * amt_s02_d06_feedback_global + mp.src03(gate) * amt_s03_d06_feedback_global + mp.src04(gate) * amt_s04_d06_feedback_global + mp.src05(gate) * amt_s05_d06_feedback_global + mp.src06(gate) * amt_s06_d06_feedback_global + mp.src07(gate) * amt_s07_d06_feedback_global + mp.src08(gate) * amt_s08_d06_feedback_global + mp.src09(gate) * amt_s09_d06_feedback_global + mp.src10(gate) * amt_s10_d06_feedback_global + mp.src11(gate) * amt_s11_d06_feedback_global + mp.src12(gate) * amt_s12_d06_feedback_global + mp.src13(gate) * amt_s13_d06_feedback_global + mp.src14(gate) * amt_s14_d06_feedback_global + mp.src15(gate) * amt_s15_d06_feedback_global + mp.src16(gate) * amt_s16_d06_feedback_global + mp.src17(gate) * amt_s17_d06_feedback_global + mp.src18(gate) * amt_s18_d06_feedback_global + mp.src19(gate) * amt_s19_d06_feedback_global + mp.src20(gate) * amt_s20_d06_feedback_global + mp.src21(gate) * amt_s21_d06_feedback_global + mp.src22(gate) * amt_s22_d06_feedback_global + mp.src23(gate) * amt_s23_d06_feedback_global + mp.src24(gate) * amt_s24_d06_feedback_global + mp.src25(gate) * amt_s25_d06_feedback_global + mp.src26(gate) * amt_s26_d06_feedback_global + mp.src27(gate) * amt_s27_d06_feedback_global + mp.src28(gate) * amt_s28_d06_feedback_global + mp.src29(gate) * amt_s29_d06_feedback_global + mp.src30(gate) * amt_s30_d06_feedback_global + mp.src31(gate) * amt_s31_d06_feedback_global + mp.src32(gate) * amt_s32_d06_feedback_global + mp.src33(gate) * amt_s33_d06_feedback_global + mp.src34(gate) * amt_s34_d06_feedback_global + mp.src35(gate) * amt_s35_d06_feedback_global + mp.src36(gate) * amt_s36_d06_feedback_global + mp.src37(gate) * amt_s37_d06_feedback_global + mp.src38(gate) * amt_s38_d06_feedback_global + mp.src39(gate) * amt_s39_d06_feedback_global + mp.src40(gate) * amt_s40_d06_feedback_global + mp.src41(gate) * amt_s41_d06_feedback_global + mp.src42(gate) * amt_s42_d06_feedback_global + mp.src43(gate) * amt_s43_d06_feedback_global + mp.src44(gate) * amt_s44_d06_feedback_global + mp.src45(gate) * amt_s45_d06_feedback_global + mp.src46(gate) * amt_s46_d06_feedback_global + mp.src47(gate) * amt_s47_d06_feedback_global; mod_global_ratio(gate) = mp.src00(gate) * amt_s00_d07_global_ratio + mp.src01(gate) * amt_s01_d07_global_ratio + mp.src02(gate) * amt_s02_d07_global_ratio + mp.src03(gate) * amt_s03_d07_global_ratio + mp.src04(gate) * amt_s04_d07_global_ratio + mp.src05(gate) * amt_s05_d07_global_ratio + mp.src06(gate) * amt_s06_d07_global_ratio + mp.src07(gate) * amt_s07_d07_global_ratio + mp.src08(gate) * amt_s08_d07_global_ratio + mp.src09(gate) * amt_s09_d07_global_ratio + mp.src10(gate) * amt_s10_d07_global_ratio + mp.src11(gate) * amt_s11_d07_global_ratio + mp.src12(gate) * amt_s12_d07_global_ratio + mp.src13(gate) * amt_s13_d07_global_ratio + mp.src14(gate) * amt_s14_d07_global_ratio + mp.src15(gate) * amt_s15_d07_global_ratio + mp.src16(gate) * amt_s16_d07_global_ratio + mp.src17(gate) * amt_s17_d07_global_ratio + mp.src18(gate) * amt_s18_d07_global_ratio + mp.src19(gate) * amt_s19_d07_global_ratio + mp.src20(gate) * amt_s20_d07_global_ratio + mp.src21(gate) * amt_s21_d07_global_ratio + mp.src22(gate) * amt_s22_d07_global_ratio + mp.src23(gate) * amt_s23_d07_global_ratio + mp.src24(gate) * amt_s24_d07_global_ratio + mp.src25(gate) * amt_s25_d07_global_ratio + mp.src26(gate) * amt_s26_d07_global_ratio + mp.src27(gate) * amt_s27_d07_global_ratio + mp.src28(gate) * amt_s28_d07_global_ratio + mp.src29(gate) * amt_s29_d07_global_ratio + mp.src30(gate) * amt_s30_d07_global_ratio + mp.src31(gate) * amt_s31_d07_global_ratio + mp.src32(gate) * amt_s32_d07_global_ratio + mp.src33(gate) * amt_s33_d07_global_ratio + mp.src34(gate) * amt_s34_d07_global_ratio + mp.src35(gate) * amt_s35_d07_global_ratio + mp.src36(gate) * amt_s36_d07_global_ratio + mp.src37(gate) * amt_s37_d07_global_ratio + mp.src38(gate) * amt_s38_d07_global_ratio + mp.src39(gate) * amt_s39_d07_global_ratio + mp.src40(gate) * amt_s40_d07_global_ratio + mp.src41(gate) * amt_s41_d07_global_ratio + mp.src42(gate) * amt_s42_d07_global_ratio + mp.src43(gate) * amt_s43_d07_global_ratio + mp.src44(gate) * amt_s44_d07_global_ratio + mp.src45(gate) * amt_s45_d07_global_ratio + mp.src46(gate) * amt_s46_d07_global_ratio + mp.src47(gate) * amt_s47_d07_global_ratio; 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 // --------------------------------------------------------------------------- cent2ratio(c) = pow(2.0, c / 1200.0); semi2ratio(s) = pow(2.0, s / 12.0); // Base frequency: fine tune + pitch mod (semitones, ±12) base_freq = freq * cent2ratio(fine_tune) * semi2ratio(mod_pitch(gate) * 12.0); // Velocity gain — keeps _vel alive vel_gain = (1.0 - 0.3) + 0.3 * vel; // --------------------------------------------------------------------------- // Effective per-operator ratios and levels (mod applied) // global_ratio mod is an additive ratio offset (±8) // --------------------------------------------------------------------------- ratio_offset = mod_global_ratio(gate) * 8.0; r1 = max(0.01, op1_ratio + ratio_offset); r2 = max(0.01, op2_ratio + ratio_offset); r3 = max(0.01, op3_ratio + ratio_offset); r4 = max(0.01, op4_ratio + ratio_offset); lev1 = max(0.0, min(1.0, op1_level + mod_op1_level(gate))); lev2 = max(0.0, min(1.0, op2_level + mod_op2_level(gate))); lev3 = max(0.0, min(1.0, op3_level + mod_op3_level(gate))); lev4 = max(0.0, min(1.0, op4_level + mod_op4_level(gate))); // --------------------------------------------------------------------------- // Global multipliers for cross-mod and feedback. // (1 + mod) in [0, 2] roughly; clamp to stay sane. // --------------------------------------------------------------------------- cross_mul = max(0.0, 1.0 + mod_cross_mod_global(gate)); fb_mul = max(0.0, 1.0 + mod_feedback_global(gate)); m12e = m12 * cross_mul; m13e = m13 * cross_mul; m14e = m14 * cross_mul; m21e = m21 * cross_mul; m23e = m23 * cross_mul; m24e = m24 * cross_mul; m31e = m31 * cross_mul; m32e = m32 * cross_mul; m34e = m34 * cross_mul; m41e = m41 * cross_mul; m42e = m42 * cross_mul; m43e = m43 * cross_mul; fb1e = fb1 * fb_mul; fb2e = fb2 * fb_mul; fb3e = fb3 * fb_mul; fb4e = fb4 * fb_mul; // --------------------------------------------------------------------------- // 4-operator FM bus — feedback loop via ~ on a 4-channel bus // --------------------------------------------------------------------------- fmbus(d1,d2,d3,d4) = op1_out, op2_out, op3_out, op4_out with { f1 = base_freq * r1; f2 = base_freq * r2; f3 = base_freq * r3; f4 = base_freq * r4; op1_out = lev1 * os.osc(f1 + (m21e*d2 + m31e*d3 + m41e*d4 + fb1e*d1) * f1); op2_out = lev2 * os.osc(f2 + (m12e*d1 + m32e*d3 + m42e*d4 + fb2e*d2) * f2); op3_out = lev3 * os.osc(f3 + (m13e*d1 + m23e*d2 + m43e*d4 + fb3e*d3) * f3); op4_out = lev4 * os.osc(f4 + (m14e*d1 + m24e*d2 + m34e*d3 + fb4e*d4) * f4); }; // Route 4-channel bus through feedback loop, sum all ops fm_out = (fmbus ~ (si.bus(4))) : (_, _, _, _) :> _; // --------------------------------------------------------------------------- // Post-processing // --------------------------------------------------------------------------- soft_clip(x) = x / max(0.001, 1.0 + output_saturation * abs(x)); hp_out(x) = fi.highpass(1, output_hp, x); // Master amplitude destination (route an ADSR here for VCA) amp_val = max(0.0, min(1.0, base_amp + mod_amp(gate))) * master_level * vel_gain * 0.25; // Pan 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); // Stereo spread via slight detuning (apply after main FM sum) spread_cents = stereo_spread * 5.0; spread_l = cent2ratio(spread_cents); spread_r = cent2ratio(0.0 - spread_cents); mono_post = fm_out * amp_val : soft_clip : hp_out; signal_L = mono_post * spread_l * pan_l; signal_R = mono_post * spread_r * pan_r; process = signal_L, signal_R;