Modular sub-engines computed amp_val as a pure function of mod_amp (the matrix d08_amp destination sum), so once the MLP drove the matrix cells every joystick movement had a chance to silence the voice: matrix cells have signed range [-1, 1], sigmoid outputs near 0.5 denormalise to 0, and the amp gate collapsed. Additive survived in scattered regions because it only has one kill-switch (d08_amp); subtractive and fm were almost always dead because they also have d05_cutoff and d01_op1_level. Two changes: 1. DSP: each sub-engine gets a base_amp hslider (default 1.0) so amp_val = clamp(base_amp + mod_amp) * level * vel_gain. At the default the voice is always fully open and d08_amp modulation is purely additive decoration; drop base_amp to 0 for classic ADSR-gated VCA behaviour. 2. ModularEngine._rebuildParamMeta: restore the _exposedMatrixCells gate (default empty). paramCount drops from 512 to 32 (4 ADSR * 4 + 8 LFO * 2); matrix cells are opt-in via setExposeMatrixCell. _applyDefaultPatch no longer writes s00_d08_amp since base_amp keeps the voice audible without routing. Tests updated for the new 32-param baseline; matrix-cell persistence test now calls setExposeMatrixCell(1, 5, true) before asserting the cell lands in paramMeta. Drive-by: engine-switching test bumped from 3 to 4 engine cards (stale since the modular engine was added).
1197 lines
72 KiB
Text
1197 lines
72 KiB
Text
// 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;
|