b290144made matrix cells opt-in to prevent joystick-silences-voice, but that broke modular-ui.updateLive(): the matrix DOM stopped reflecting live MLP outputs because matrixIndexCache was empty when buildMatrixIndex() walked paramMeta. This was the same regression6072fe8had previously fixed. Fix it structurally at the DSP layer instead: amp_val now computes as `clamp(base_amp + max(0, mod_amp)) * level * vel_gain`, so matrix d08_amp cells can only boost the amp floor — never cut it. base_amp defaults to 1.0 (always audible), and presets that want classic envelope-gated voices (slow pad, plucky bass, crystal, morphing drone) drop base_amp to 0 and layer a positive ADSR→amp route on top. With the DSP guard in place, all 480 matrix cells can safely live in paramMeta again, and updateLive() gets its live visual feedback back. Revert the opt-in gate in _rebuildParamMeta and the 32-param test counts, and add a regression test asserting that every matrix destination has 48 cells in paramMeta — that's what updateLive needs.
1201 lines
72 KiB
Text
1201 lines
72 KiB
Text
// modular-subtractive.dsp — Minimoog-style subtractive 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: 3 oscillators + noise → mixer → moog ladder filter → amp/pan.
|
||
// All envelopes and LFOs come from mod-pool.lib via a 48-source × 10-dest
|
||
// modulation matrix. No internal envs/LFOs.
|
||
//
|
||
// Modulation destinations (10):
|
||
// 0 pitch semitones, applied to all osc frequencies
|
||
// 1 osc2_detune cents offset added to osc2 detune knob
|
||
// 2 osc3_detune cents offset added to osc3 detune knob
|
||
// 3 osc_mix_bal -1..+1 crossfades osc1<->osc3
|
||
// 4 noise_level added to noise level knob
|
||
// 5 cutoff +/-5 octaves of filter cutoff modulation
|
||
// 6 resonance added to res knob
|
||
// 7 filter_env_amt second independent +/-5 octave cutoff mod channel
|
||
// 8 amp added to amp knob (route an ADSR here for a VCA env)
|
||
// 9 pan added to pan knob
|
||
//
|
||
// 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 — Oscillators
|
||
// ---------------------------------------------------------------------------
|
||
osc1_wave = hslider("1_Oscillators/00_osc1_wave[tooltip:0=saw,0.5=tri,1=square]", 0.0, 0.0, 1.0, 0.001);
|
||
osc1_range = hslider("1_Oscillators/01_osc1_range[unit:oct]", 0.0, -2.0, 2.0, 0.01);
|
||
osc1_level = hslider("1_Oscillators/02_osc1_level", 0.8, 0.0, 1.0, 0.001);
|
||
|
||
osc2_wave = hslider("1_Oscillators/03_osc2_wave[tooltip:0=saw,0.5=tri,1=square]", 0.0, 0.0, 1.0, 0.001);
|
||
osc2_range = hslider("1_Oscillators/04_osc2_range[unit:oct]", 0.0, -2.0, 2.0, 0.01);
|
||
osc2_detune = hslider("1_Oscillators/05_osc2_detune[unit:ct]", 0.0, -50.0, 50.0, 0.1);
|
||
osc2_level = hslider("1_Oscillators/06_osc2_level", 0.6, 0.0, 1.0, 0.001);
|
||
|
||
osc3_wave = hslider("1_Oscillators/07_osc3_wave[tooltip:0=saw,0.5=tri,1=square]", 0.5, 0.0, 1.0, 0.001);
|
||
osc3_range = hslider("1_Oscillators/08_osc3_range[unit:oct]", -1.0, -2.0, 2.0, 0.01);
|
||
osc3_detune = hslider("1_Oscillators/09_osc3_detune[unit:ct]", 0.0, -50.0, 50.0, 0.1);
|
||
osc3_level = hslider("1_Oscillators/10_osc3_level", 0.4, 0.0, 1.0, 0.001);
|
||
osc3_kb_track = hslider("1_Oscillators/11_osc3_kb_track[tooltip:1=tracks keyboard,0=LFO]", 1.0, 0.0, 1.0, 1.0);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Group 2 — Mixer
|
||
// ---------------------------------------------------------------------------
|
||
noise_type = hslider("2_Mixer/00_noise_type[tooltip:0=white,1=pink]", 0.0, 0.0, 1.0, 1.0);
|
||
noise_level = hslider("2_Mixer/01_noise_level", 0.0, 0.0, 1.0, 0.001);
|
||
mixer_drive = hslider("2_Mixer/02_mixer_drive[tooltip:Pre-filter overdrive]", 1.0, 0.5, 4.0, 0.001);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Group 3 — Filter
|
||
// ---------------------------------------------------------------------------
|
||
cutoff = hslider("3_Filter/00_cutoff[scale:log][unit:Hz]", 1200.0, 20.0, 20000.0, 0.1);
|
||
resonance = hslider("3_Filter/01_resonance", 0.3, 0.0, 1.0, 0.001);
|
||
filter_kb = hslider("3_Filter/02_filter_kb_track", 0.5, 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);
|
||
master_glide = hslider("4_Master/01_master_glide[unit:s][scale:log]", 0.0, 0.0, 2.0, 0.001);
|
||
master_tune = hslider("4_Master/02_master_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1);
|
||
master_pan = hslider("4_Master/03_master_pan", 0.0, -1.0, 1.0, 0.001);
|
||
// Static amp floor. At 1.0 the voice is always fully open and d08_amp
|
||
// modulation is purely additive decoration. Drop to 0 for classic
|
||
// ADSR-gated VCA behaviour (route s00_d08_amp to an ADSR).
|
||
base_amp = hslider("4_Master/04_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 = osc2_detune
|
||
amt_s00_d01_osc2_detune = hslider("MM_Matrix/s00_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d01_osc2_detune = hslider("MM_Matrix/s01_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d01_osc2_detune = hslider("MM_Matrix/s02_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d01_osc2_detune = hslider("MM_Matrix/s03_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d01_osc2_detune = hslider("MM_Matrix/s04_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d01_osc2_detune = hslider("MM_Matrix/s05_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d01_osc2_detune = hslider("MM_Matrix/s06_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d01_osc2_detune = hslider("MM_Matrix/s07_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d01_osc2_detune = hslider("MM_Matrix/s08_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d01_osc2_detune = hslider("MM_Matrix/s09_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d01_osc2_detune = hslider("MM_Matrix/s10_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d01_osc2_detune = hslider("MM_Matrix/s11_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d01_osc2_detune = hslider("MM_Matrix/s12_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d01_osc2_detune = hslider("MM_Matrix/s13_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d01_osc2_detune = hslider("MM_Matrix/s14_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d01_osc2_detune = hslider("MM_Matrix/s15_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d01_osc2_detune = hslider("MM_Matrix/s16_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d01_osc2_detune = hslider("MM_Matrix/s17_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d01_osc2_detune = hslider("MM_Matrix/s18_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d01_osc2_detune = hslider("MM_Matrix/s19_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d01_osc2_detune = hslider("MM_Matrix/s20_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d01_osc2_detune = hslider("MM_Matrix/s21_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d01_osc2_detune = hslider("MM_Matrix/s22_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d01_osc2_detune = hslider("MM_Matrix/s23_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d01_osc2_detune = hslider("MM_Matrix/s24_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d01_osc2_detune = hslider("MM_Matrix/s25_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d01_osc2_detune = hslider("MM_Matrix/s26_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d01_osc2_detune = hslider("MM_Matrix/s27_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d01_osc2_detune = hslider("MM_Matrix/s28_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d01_osc2_detune = hslider("MM_Matrix/s29_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d01_osc2_detune = hslider("MM_Matrix/s30_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d01_osc2_detune = hslider("MM_Matrix/s31_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d01_osc2_detune = hslider("MM_Matrix/s32_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d01_osc2_detune = hslider("MM_Matrix/s33_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d01_osc2_detune = hslider("MM_Matrix/s34_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d01_osc2_detune = hslider("MM_Matrix/s35_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d01_osc2_detune = hslider("MM_Matrix/s36_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d01_osc2_detune = hslider("MM_Matrix/s37_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d01_osc2_detune = hslider("MM_Matrix/s38_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d01_osc2_detune = hslider("MM_Matrix/s39_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d01_osc2_detune = hslider("MM_Matrix/s40_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d01_osc2_detune = hslider("MM_Matrix/s41_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d01_osc2_detune = hslider("MM_Matrix/s42_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d01_osc2_detune = hslider("MM_Matrix/s43_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d01_osc2_detune = hslider("MM_Matrix/s44_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d01_osc2_detune = hslider("MM_Matrix/s45_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d01_osc2_detune = hslider("MM_Matrix/s46_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d01_osc2_detune = hslider("MM_Matrix/s47_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 2 = osc3_detune
|
||
amt_s00_d02_osc3_detune = hslider("MM_Matrix/s00_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d02_osc3_detune = hslider("MM_Matrix/s01_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d02_osc3_detune = hslider("MM_Matrix/s02_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d02_osc3_detune = hslider("MM_Matrix/s03_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d02_osc3_detune = hslider("MM_Matrix/s04_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d02_osc3_detune = hslider("MM_Matrix/s05_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d02_osc3_detune = hslider("MM_Matrix/s06_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d02_osc3_detune = hslider("MM_Matrix/s07_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d02_osc3_detune = hslider("MM_Matrix/s08_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d02_osc3_detune = hslider("MM_Matrix/s09_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d02_osc3_detune = hslider("MM_Matrix/s10_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d02_osc3_detune = hslider("MM_Matrix/s11_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d02_osc3_detune = hslider("MM_Matrix/s12_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d02_osc3_detune = hslider("MM_Matrix/s13_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d02_osc3_detune = hslider("MM_Matrix/s14_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d02_osc3_detune = hslider("MM_Matrix/s15_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d02_osc3_detune = hslider("MM_Matrix/s16_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d02_osc3_detune = hslider("MM_Matrix/s17_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d02_osc3_detune = hslider("MM_Matrix/s18_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d02_osc3_detune = hslider("MM_Matrix/s19_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d02_osc3_detune = hslider("MM_Matrix/s20_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d02_osc3_detune = hslider("MM_Matrix/s21_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d02_osc3_detune = hslider("MM_Matrix/s22_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d02_osc3_detune = hslider("MM_Matrix/s23_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d02_osc3_detune = hslider("MM_Matrix/s24_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d02_osc3_detune = hslider("MM_Matrix/s25_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d02_osc3_detune = hslider("MM_Matrix/s26_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d02_osc3_detune = hslider("MM_Matrix/s27_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d02_osc3_detune = hslider("MM_Matrix/s28_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d02_osc3_detune = hslider("MM_Matrix/s29_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d02_osc3_detune = hslider("MM_Matrix/s30_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d02_osc3_detune = hslider("MM_Matrix/s31_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d02_osc3_detune = hslider("MM_Matrix/s32_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d02_osc3_detune = hslider("MM_Matrix/s33_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d02_osc3_detune = hslider("MM_Matrix/s34_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d02_osc3_detune = hslider("MM_Matrix/s35_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d02_osc3_detune = hslider("MM_Matrix/s36_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d02_osc3_detune = hslider("MM_Matrix/s37_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d02_osc3_detune = hslider("MM_Matrix/s38_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d02_osc3_detune = hslider("MM_Matrix/s39_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d02_osc3_detune = hslider("MM_Matrix/s40_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d02_osc3_detune = hslider("MM_Matrix/s41_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d02_osc3_detune = hslider("MM_Matrix/s42_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d02_osc3_detune = hslider("MM_Matrix/s43_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d02_osc3_detune = hslider("MM_Matrix/s44_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d02_osc3_detune = hslider("MM_Matrix/s45_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d02_osc3_detune = hslider("MM_Matrix/s46_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d02_osc3_detune = hslider("MM_Matrix/s47_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 3 = osc_mix_bal
|
||
amt_s00_d03_osc_mix_bal = hslider("MM_Matrix/s00_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d03_osc_mix_bal = hslider("MM_Matrix/s01_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d03_osc_mix_bal = hslider("MM_Matrix/s02_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d03_osc_mix_bal = hslider("MM_Matrix/s03_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d03_osc_mix_bal = hslider("MM_Matrix/s04_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d03_osc_mix_bal = hslider("MM_Matrix/s05_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d03_osc_mix_bal = hslider("MM_Matrix/s06_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d03_osc_mix_bal = hslider("MM_Matrix/s07_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d03_osc_mix_bal = hslider("MM_Matrix/s08_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d03_osc_mix_bal = hslider("MM_Matrix/s09_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d03_osc_mix_bal = hslider("MM_Matrix/s10_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d03_osc_mix_bal = hslider("MM_Matrix/s11_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d03_osc_mix_bal = hslider("MM_Matrix/s12_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d03_osc_mix_bal = hslider("MM_Matrix/s13_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d03_osc_mix_bal = hslider("MM_Matrix/s14_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d03_osc_mix_bal = hslider("MM_Matrix/s15_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d03_osc_mix_bal = hslider("MM_Matrix/s16_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d03_osc_mix_bal = hslider("MM_Matrix/s17_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d03_osc_mix_bal = hslider("MM_Matrix/s18_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d03_osc_mix_bal = hslider("MM_Matrix/s19_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d03_osc_mix_bal = hslider("MM_Matrix/s20_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d03_osc_mix_bal = hslider("MM_Matrix/s21_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d03_osc_mix_bal = hslider("MM_Matrix/s22_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d03_osc_mix_bal = hslider("MM_Matrix/s23_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d03_osc_mix_bal = hslider("MM_Matrix/s24_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d03_osc_mix_bal = hslider("MM_Matrix/s25_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d03_osc_mix_bal = hslider("MM_Matrix/s26_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d03_osc_mix_bal = hslider("MM_Matrix/s27_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d03_osc_mix_bal = hslider("MM_Matrix/s28_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d03_osc_mix_bal = hslider("MM_Matrix/s29_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d03_osc_mix_bal = hslider("MM_Matrix/s30_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d03_osc_mix_bal = hslider("MM_Matrix/s31_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d03_osc_mix_bal = hslider("MM_Matrix/s32_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d03_osc_mix_bal = hslider("MM_Matrix/s33_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d03_osc_mix_bal = hslider("MM_Matrix/s34_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d03_osc_mix_bal = hslider("MM_Matrix/s35_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d03_osc_mix_bal = hslider("MM_Matrix/s36_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d03_osc_mix_bal = hslider("MM_Matrix/s37_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d03_osc_mix_bal = hslider("MM_Matrix/s38_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d03_osc_mix_bal = hslider("MM_Matrix/s39_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d03_osc_mix_bal = hslider("MM_Matrix/s40_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d03_osc_mix_bal = hslider("MM_Matrix/s41_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d03_osc_mix_bal = hslider("MM_Matrix/s42_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d03_osc_mix_bal = hslider("MM_Matrix/s43_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d03_osc_mix_bal = hslider("MM_Matrix/s44_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d03_osc_mix_bal = hslider("MM_Matrix/s45_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d03_osc_mix_bal = hslider("MM_Matrix/s46_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d03_osc_mix_bal = hslider("MM_Matrix/s47_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 4 = noise_level
|
||
amt_s00_d04_noise_level = hslider("MM_Matrix/s00_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d04_noise_level = hslider("MM_Matrix/s01_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d04_noise_level = hslider("MM_Matrix/s02_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d04_noise_level = hslider("MM_Matrix/s03_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d04_noise_level = hslider("MM_Matrix/s04_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d04_noise_level = hslider("MM_Matrix/s05_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d04_noise_level = hslider("MM_Matrix/s06_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d04_noise_level = hslider("MM_Matrix/s07_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d04_noise_level = hslider("MM_Matrix/s08_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d04_noise_level = hslider("MM_Matrix/s09_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d04_noise_level = hslider("MM_Matrix/s10_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d04_noise_level = hslider("MM_Matrix/s11_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d04_noise_level = hslider("MM_Matrix/s12_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d04_noise_level = hslider("MM_Matrix/s13_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d04_noise_level = hslider("MM_Matrix/s14_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d04_noise_level = hslider("MM_Matrix/s15_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d04_noise_level = hslider("MM_Matrix/s16_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d04_noise_level = hslider("MM_Matrix/s17_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d04_noise_level = hslider("MM_Matrix/s18_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d04_noise_level = hslider("MM_Matrix/s19_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d04_noise_level = hslider("MM_Matrix/s20_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d04_noise_level = hslider("MM_Matrix/s21_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d04_noise_level = hslider("MM_Matrix/s22_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d04_noise_level = hslider("MM_Matrix/s23_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d04_noise_level = hslider("MM_Matrix/s24_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d04_noise_level = hslider("MM_Matrix/s25_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d04_noise_level = hslider("MM_Matrix/s26_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d04_noise_level = hslider("MM_Matrix/s27_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d04_noise_level = hslider("MM_Matrix/s28_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d04_noise_level = hslider("MM_Matrix/s29_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d04_noise_level = hslider("MM_Matrix/s30_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d04_noise_level = hslider("MM_Matrix/s31_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d04_noise_level = hslider("MM_Matrix/s32_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d04_noise_level = hslider("MM_Matrix/s33_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d04_noise_level = hslider("MM_Matrix/s34_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d04_noise_level = hslider("MM_Matrix/s35_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d04_noise_level = hslider("MM_Matrix/s36_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d04_noise_level = hslider("MM_Matrix/s37_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d04_noise_level = hslider("MM_Matrix/s38_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d04_noise_level = hslider("MM_Matrix/s39_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d04_noise_level = hslider("MM_Matrix/s40_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d04_noise_level = hslider("MM_Matrix/s41_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d04_noise_level = hslider("MM_Matrix/s42_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d04_noise_level = hslider("MM_Matrix/s43_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d04_noise_level = hslider("MM_Matrix/s44_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d04_noise_level = hslider("MM_Matrix/s45_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d04_noise_level = hslider("MM_Matrix/s46_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d04_noise_level = hslider("MM_Matrix/s47_d04_noise_level", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 5 = cutoff
|
||
amt_s00_d05_cutoff = hslider("MM_Matrix/s00_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d05_cutoff = hslider("MM_Matrix/s01_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d05_cutoff = hslider("MM_Matrix/s02_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d05_cutoff = hslider("MM_Matrix/s03_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d05_cutoff = hslider("MM_Matrix/s04_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d05_cutoff = hslider("MM_Matrix/s05_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d05_cutoff = hslider("MM_Matrix/s06_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d05_cutoff = hslider("MM_Matrix/s07_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d05_cutoff = hslider("MM_Matrix/s08_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d05_cutoff = hslider("MM_Matrix/s09_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d05_cutoff = hslider("MM_Matrix/s10_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d05_cutoff = hslider("MM_Matrix/s11_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d05_cutoff = hslider("MM_Matrix/s12_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d05_cutoff = hslider("MM_Matrix/s13_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d05_cutoff = hslider("MM_Matrix/s14_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d05_cutoff = hslider("MM_Matrix/s15_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d05_cutoff = hslider("MM_Matrix/s16_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d05_cutoff = hslider("MM_Matrix/s17_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d05_cutoff = hslider("MM_Matrix/s18_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d05_cutoff = hslider("MM_Matrix/s19_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d05_cutoff = hslider("MM_Matrix/s20_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d05_cutoff = hslider("MM_Matrix/s21_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d05_cutoff = hslider("MM_Matrix/s22_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d05_cutoff = hslider("MM_Matrix/s23_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d05_cutoff = hslider("MM_Matrix/s24_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d05_cutoff = hslider("MM_Matrix/s25_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d05_cutoff = hslider("MM_Matrix/s26_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d05_cutoff = hslider("MM_Matrix/s27_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d05_cutoff = hslider("MM_Matrix/s28_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d05_cutoff = hslider("MM_Matrix/s29_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d05_cutoff = hslider("MM_Matrix/s30_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d05_cutoff = hslider("MM_Matrix/s31_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d05_cutoff = hslider("MM_Matrix/s32_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d05_cutoff = hslider("MM_Matrix/s33_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d05_cutoff = hslider("MM_Matrix/s34_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d05_cutoff = hslider("MM_Matrix/s35_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d05_cutoff = hslider("MM_Matrix/s36_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d05_cutoff = hslider("MM_Matrix/s37_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d05_cutoff = hslider("MM_Matrix/s38_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d05_cutoff = hslider("MM_Matrix/s39_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d05_cutoff = hslider("MM_Matrix/s40_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d05_cutoff = hslider("MM_Matrix/s41_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d05_cutoff = hslider("MM_Matrix/s42_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d05_cutoff = hslider("MM_Matrix/s43_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d05_cutoff = hslider("MM_Matrix/s44_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d05_cutoff = hslider("MM_Matrix/s45_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d05_cutoff = hslider("MM_Matrix/s46_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d05_cutoff = hslider("MM_Matrix/s47_d05_cutoff", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 6 = resonance
|
||
amt_s00_d06_resonance = hslider("MM_Matrix/s00_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d06_resonance = hslider("MM_Matrix/s01_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d06_resonance = hslider("MM_Matrix/s02_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d06_resonance = hslider("MM_Matrix/s03_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d06_resonance = hslider("MM_Matrix/s04_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d06_resonance = hslider("MM_Matrix/s05_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d06_resonance = hslider("MM_Matrix/s06_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d06_resonance = hslider("MM_Matrix/s07_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d06_resonance = hslider("MM_Matrix/s08_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d06_resonance = hslider("MM_Matrix/s09_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d06_resonance = hslider("MM_Matrix/s10_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d06_resonance = hslider("MM_Matrix/s11_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d06_resonance = hslider("MM_Matrix/s12_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d06_resonance = hslider("MM_Matrix/s13_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d06_resonance = hslider("MM_Matrix/s14_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d06_resonance = hslider("MM_Matrix/s15_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d06_resonance = hslider("MM_Matrix/s16_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d06_resonance = hslider("MM_Matrix/s17_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d06_resonance = hslider("MM_Matrix/s18_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d06_resonance = hslider("MM_Matrix/s19_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d06_resonance = hslider("MM_Matrix/s20_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d06_resonance = hslider("MM_Matrix/s21_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d06_resonance = hslider("MM_Matrix/s22_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d06_resonance = hslider("MM_Matrix/s23_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d06_resonance = hslider("MM_Matrix/s24_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d06_resonance = hslider("MM_Matrix/s25_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d06_resonance = hslider("MM_Matrix/s26_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d06_resonance = hslider("MM_Matrix/s27_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d06_resonance = hslider("MM_Matrix/s28_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d06_resonance = hslider("MM_Matrix/s29_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d06_resonance = hslider("MM_Matrix/s30_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d06_resonance = hslider("MM_Matrix/s31_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d06_resonance = hslider("MM_Matrix/s32_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d06_resonance = hslider("MM_Matrix/s33_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d06_resonance = hslider("MM_Matrix/s34_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d06_resonance = hslider("MM_Matrix/s35_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d06_resonance = hslider("MM_Matrix/s36_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d06_resonance = hslider("MM_Matrix/s37_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d06_resonance = hslider("MM_Matrix/s38_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d06_resonance = hslider("MM_Matrix/s39_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d06_resonance = hslider("MM_Matrix/s40_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d06_resonance = hslider("MM_Matrix/s41_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d06_resonance = hslider("MM_Matrix/s42_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d06_resonance = hslider("MM_Matrix/s43_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d06_resonance = hslider("MM_Matrix/s44_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d06_resonance = hslider("MM_Matrix/s45_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d06_resonance = hslider("MM_Matrix/s46_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d06_resonance = hslider("MM_Matrix/s47_d06_resonance", 0.0, -1.0, 1.0, 0.001);
|
||
|
||
// Matrix column: destination 7 = filter_env_amt
|
||
amt_s00_d07_filter_env_amt = hslider("MM_Matrix/s00_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s01_d07_filter_env_amt = hslider("MM_Matrix/s01_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s02_d07_filter_env_amt = hslider("MM_Matrix/s02_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s03_d07_filter_env_amt = hslider("MM_Matrix/s03_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s04_d07_filter_env_amt = hslider("MM_Matrix/s04_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s05_d07_filter_env_amt = hslider("MM_Matrix/s05_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s06_d07_filter_env_amt = hslider("MM_Matrix/s06_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s07_d07_filter_env_amt = hslider("MM_Matrix/s07_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s08_d07_filter_env_amt = hslider("MM_Matrix/s08_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s09_d07_filter_env_amt = hslider("MM_Matrix/s09_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s10_d07_filter_env_amt = hslider("MM_Matrix/s10_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s11_d07_filter_env_amt = hslider("MM_Matrix/s11_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s12_d07_filter_env_amt = hslider("MM_Matrix/s12_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s13_d07_filter_env_amt = hslider("MM_Matrix/s13_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s14_d07_filter_env_amt = hslider("MM_Matrix/s14_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s15_d07_filter_env_amt = hslider("MM_Matrix/s15_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s16_d07_filter_env_amt = hslider("MM_Matrix/s16_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s17_d07_filter_env_amt = hslider("MM_Matrix/s17_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s18_d07_filter_env_amt = hslider("MM_Matrix/s18_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s19_d07_filter_env_amt = hslider("MM_Matrix/s19_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s20_d07_filter_env_amt = hslider("MM_Matrix/s20_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s21_d07_filter_env_amt = hslider("MM_Matrix/s21_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s22_d07_filter_env_amt = hslider("MM_Matrix/s22_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s23_d07_filter_env_amt = hslider("MM_Matrix/s23_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s24_d07_filter_env_amt = hslider("MM_Matrix/s24_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s25_d07_filter_env_amt = hslider("MM_Matrix/s25_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s26_d07_filter_env_amt = hslider("MM_Matrix/s26_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s27_d07_filter_env_amt = hslider("MM_Matrix/s27_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s28_d07_filter_env_amt = hslider("MM_Matrix/s28_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s29_d07_filter_env_amt = hslider("MM_Matrix/s29_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s30_d07_filter_env_amt = hslider("MM_Matrix/s30_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s31_d07_filter_env_amt = hslider("MM_Matrix/s31_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s32_d07_filter_env_amt = hslider("MM_Matrix/s32_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s33_d07_filter_env_amt = hslider("MM_Matrix/s33_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s34_d07_filter_env_amt = hslider("MM_Matrix/s34_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s35_d07_filter_env_amt = hslider("MM_Matrix/s35_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s36_d07_filter_env_amt = hslider("MM_Matrix/s36_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s37_d07_filter_env_amt = hslider("MM_Matrix/s37_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s38_d07_filter_env_amt = hslider("MM_Matrix/s38_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s39_d07_filter_env_amt = hslider("MM_Matrix/s39_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s40_d07_filter_env_amt = hslider("MM_Matrix/s40_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s41_d07_filter_env_amt = hslider("MM_Matrix/s41_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s42_d07_filter_env_amt = hslider("MM_Matrix/s42_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s43_d07_filter_env_amt = hslider("MM_Matrix/s43_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s44_d07_filter_env_amt = hslider("MM_Matrix/s44_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s45_d07_filter_env_amt = hslider("MM_Matrix/s45_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s46_d07_filter_env_amt = hslider("MM_Matrix/s46_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001);
|
||
amt_s47_d07_filter_env_amt = hslider("MM_Matrix/s47_d07_filter_env_amt", 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_osc2_detune(gate) =
|
||
mp.src00(gate) * amt_s00_d01_osc2_detune +
|
||
mp.src01(gate) * amt_s01_d01_osc2_detune +
|
||
mp.src02(gate) * amt_s02_d01_osc2_detune +
|
||
mp.src03(gate) * amt_s03_d01_osc2_detune +
|
||
mp.src04(gate) * amt_s04_d01_osc2_detune +
|
||
mp.src05(gate) * amt_s05_d01_osc2_detune +
|
||
mp.src06(gate) * amt_s06_d01_osc2_detune +
|
||
mp.src07(gate) * amt_s07_d01_osc2_detune +
|
||
mp.src08(gate) * amt_s08_d01_osc2_detune +
|
||
mp.src09(gate) * amt_s09_d01_osc2_detune +
|
||
mp.src10(gate) * amt_s10_d01_osc2_detune +
|
||
mp.src11(gate) * amt_s11_d01_osc2_detune +
|
||
mp.src12(gate) * amt_s12_d01_osc2_detune +
|
||
mp.src13(gate) * amt_s13_d01_osc2_detune +
|
||
mp.src14(gate) * amt_s14_d01_osc2_detune +
|
||
mp.src15(gate) * amt_s15_d01_osc2_detune +
|
||
mp.src16(gate) * amt_s16_d01_osc2_detune +
|
||
mp.src17(gate) * amt_s17_d01_osc2_detune +
|
||
mp.src18(gate) * amt_s18_d01_osc2_detune +
|
||
mp.src19(gate) * amt_s19_d01_osc2_detune +
|
||
mp.src20(gate) * amt_s20_d01_osc2_detune +
|
||
mp.src21(gate) * amt_s21_d01_osc2_detune +
|
||
mp.src22(gate) * amt_s22_d01_osc2_detune +
|
||
mp.src23(gate) * amt_s23_d01_osc2_detune +
|
||
mp.src24(gate) * amt_s24_d01_osc2_detune +
|
||
mp.src25(gate) * amt_s25_d01_osc2_detune +
|
||
mp.src26(gate) * amt_s26_d01_osc2_detune +
|
||
mp.src27(gate) * amt_s27_d01_osc2_detune +
|
||
mp.src28(gate) * amt_s28_d01_osc2_detune +
|
||
mp.src29(gate) * amt_s29_d01_osc2_detune +
|
||
mp.src30(gate) * amt_s30_d01_osc2_detune +
|
||
mp.src31(gate) * amt_s31_d01_osc2_detune +
|
||
mp.src32(gate) * amt_s32_d01_osc2_detune +
|
||
mp.src33(gate) * amt_s33_d01_osc2_detune +
|
||
mp.src34(gate) * amt_s34_d01_osc2_detune +
|
||
mp.src35(gate) * amt_s35_d01_osc2_detune +
|
||
mp.src36(gate) * amt_s36_d01_osc2_detune +
|
||
mp.src37(gate) * amt_s37_d01_osc2_detune +
|
||
mp.src38(gate) * amt_s38_d01_osc2_detune +
|
||
mp.src39(gate) * amt_s39_d01_osc2_detune +
|
||
mp.src40(gate) * amt_s40_d01_osc2_detune +
|
||
mp.src41(gate) * amt_s41_d01_osc2_detune +
|
||
mp.src42(gate) * amt_s42_d01_osc2_detune +
|
||
mp.src43(gate) * amt_s43_d01_osc2_detune +
|
||
mp.src44(gate) * amt_s44_d01_osc2_detune +
|
||
mp.src45(gate) * amt_s45_d01_osc2_detune +
|
||
mp.src46(gate) * amt_s46_d01_osc2_detune +
|
||
mp.src47(gate) * amt_s47_d01_osc2_detune;
|
||
|
||
mod_osc3_detune(gate) =
|
||
mp.src00(gate) * amt_s00_d02_osc3_detune +
|
||
mp.src01(gate) * amt_s01_d02_osc3_detune +
|
||
mp.src02(gate) * amt_s02_d02_osc3_detune +
|
||
mp.src03(gate) * amt_s03_d02_osc3_detune +
|
||
mp.src04(gate) * amt_s04_d02_osc3_detune +
|
||
mp.src05(gate) * amt_s05_d02_osc3_detune +
|
||
mp.src06(gate) * amt_s06_d02_osc3_detune +
|
||
mp.src07(gate) * amt_s07_d02_osc3_detune +
|
||
mp.src08(gate) * amt_s08_d02_osc3_detune +
|
||
mp.src09(gate) * amt_s09_d02_osc3_detune +
|
||
mp.src10(gate) * amt_s10_d02_osc3_detune +
|
||
mp.src11(gate) * amt_s11_d02_osc3_detune +
|
||
mp.src12(gate) * amt_s12_d02_osc3_detune +
|
||
mp.src13(gate) * amt_s13_d02_osc3_detune +
|
||
mp.src14(gate) * amt_s14_d02_osc3_detune +
|
||
mp.src15(gate) * amt_s15_d02_osc3_detune +
|
||
mp.src16(gate) * amt_s16_d02_osc3_detune +
|
||
mp.src17(gate) * amt_s17_d02_osc3_detune +
|
||
mp.src18(gate) * amt_s18_d02_osc3_detune +
|
||
mp.src19(gate) * amt_s19_d02_osc3_detune +
|
||
mp.src20(gate) * amt_s20_d02_osc3_detune +
|
||
mp.src21(gate) * amt_s21_d02_osc3_detune +
|
||
mp.src22(gate) * amt_s22_d02_osc3_detune +
|
||
mp.src23(gate) * amt_s23_d02_osc3_detune +
|
||
mp.src24(gate) * amt_s24_d02_osc3_detune +
|
||
mp.src25(gate) * amt_s25_d02_osc3_detune +
|
||
mp.src26(gate) * amt_s26_d02_osc3_detune +
|
||
mp.src27(gate) * amt_s27_d02_osc3_detune +
|
||
mp.src28(gate) * amt_s28_d02_osc3_detune +
|
||
mp.src29(gate) * amt_s29_d02_osc3_detune +
|
||
mp.src30(gate) * amt_s30_d02_osc3_detune +
|
||
mp.src31(gate) * amt_s31_d02_osc3_detune +
|
||
mp.src32(gate) * amt_s32_d02_osc3_detune +
|
||
mp.src33(gate) * amt_s33_d02_osc3_detune +
|
||
mp.src34(gate) * amt_s34_d02_osc3_detune +
|
||
mp.src35(gate) * amt_s35_d02_osc3_detune +
|
||
mp.src36(gate) * amt_s36_d02_osc3_detune +
|
||
mp.src37(gate) * amt_s37_d02_osc3_detune +
|
||
mp.src38(gate) * amt_s38_d02_osc3_detune +
|
||
mp.src39(gate) * amt_s39_d02_osc3_detune +
|
||
mp.src40(gate) * amt_s40_d02_osc3_detune +
|
||
mp.src41(gate) * amt_s41_d02_osc3_detune +
|
||
mp.src42(gate) * amt_s42_d02_osc3_detune +
|
||
mp.src43(gate) * amt_s43_d02_osc3_detune +
|
||
mp.src44(gate) * amt_s44_d02_osc3_detune +
|
||
mp.src45(gate) * amt_s45_d02_osc3_detune +
|
||
mp.src46(gate) * amt_s46_d02_osc3_detune +
|
||
mp.src47(gate) * amt_s47_d02_osc3_detune;
|
||
|
||
mod_osc_mix_bal(gate) =
|
||
mp.src00(gate) * amt_s00_d03_osc_mix_bal +
|
||
mp.src01(gate) * amt_s01_d03_osc_mix_bal +
|
||
mp.src02(gate) * amt_s02_d03_osc_mix_bal +
|
||
mp.src03(gate) * amt_s03_d03_osc_mix_bal +
|
||
mp.src04(gate) * amt_s04_d03_osc_mix_bal +
|
||
mp.src05(gate) * amt_s05_d03_osc_mix_bal +
|
||
mp.src06(gate) * amt_s06_d03_osc_mix_bal +
|
||
mp.src07(gate) * amt_s07_d03_osc_mix_bal +
|
||
mp.src08(gate) * amt_s08_d03_osc_mix_bal +
|
||
mp.src09(gate) * amt_s09_d03_osc_mix_bal +
|
||
mp.src10(gate) * amt_s10_d03_osc_mix_bal +
|
||
mp.src11(gate) * amt_s11_d03_osc_mix_bal +
|
||
mp.src12(gate) * amt_s12_d03_osc_mix_bal +
|
||
mp.src13(gate) * amt_s13_d03_osc_mix_bal +
|
||
mp.src14(gate) * amt_s14_d03_osc_mix_bal +
|
||
mp.src15(gate) * amt_s15_d03_osc_mix_bal +
|
||
mp.src16(gate) * amt_s16_d03_osc_mix_bal +
|
||
mp.src17(gate) * amt_s17_d03_osc_mix_bal +
|
||
mp.src18(gate) * amt_s18_d03_osc_mix_bal +
|
||
mp.src19(gate) * amt_s19_d03_osc_mix_bal +
|
||
mp.src20(gate) * amt_s20_d03_osc_mix_bal +
|
||
mp.src21(gate) * amt_s21_d03_osc_mix_bal +
|
||
mp.src22(gate) * amt_s22_d03_osc_mix_bal +
|
||
mp.src23(gate) * amt_s23_d03_osc_mix_bal +
|
||
mp.src24(gate) * amt_s24_d03_osc_mix_bal +
|
||
mp.src25(gate) * amt_s25_d03_osc_mix_bal +
|
||
mp.src26(gate) * amt_s26_d03_osc_mix_bal +
|
||
mp.src27(gate) * amt_s27_d03_osc_mix_bal +
|
||
mp.src28(gate) * amt_s28_d03_osc_mix_bal +
|
||
mp.src29(gate) * amt_s29_d03_osc_mix_bal +
|
||
mp.src30(gate) * amt_s30_d03_osc_mix_bal +
|
||
mp.src31(gate) * amt_s31_d03_osc_mix_bal +
|
||
mp.src32(gate) * amt_s32_d03_osc_mix_bal +
|
||
mp.src33(gate) * amt_s33_d03_osc_mix_bal +
|
||
mp.src34(gate) * amt_s34_d03_osc_mix_bal +
|
||
mp.src35(gate) * amt_s35_d03_osc_mix_bal +
|
||
mp.src36(gate) * amt_s36_d03_osc_mix_bal +
|
||
mp.src37(gate) * amt_s37_d03_osc_mix_bal +
|
||
mp.src38(gate) * amt_s38_d03_osc_mix_bal +
|
||
mp.src39(gate) * amt_s39_d03_osc_mix_bal +
|
||
mp.src40(gate) * amt_s40_d03_osc_mix_bal +
|
||
mp.src41(gate) * amt_s41_d03_osc_mix_bal +
|
||
mp.src42(gate) * amt_s42_d03_osc_mix_bal +
|
||
mp.src43(gate) * amt_s43_d03_osc_mix_bal +
|
||
mp.src44(gate) * amt_s44_d03_osc_mix_bal +
|
||
mp.src45(gate) * amt_s45_d03_osc_mix_bal +
|
||
mp.src46(gate) * amt_s46_d03_osc_mix_bal +
|
||
mp.src47(gate) * amt_s47_d03_osc_mix_bal;
|
||
|
||
mod_noise_level(gate) =
|
||
mp.src00(gate) * amt_s00_d04_noise_level +
|
||
mp.src01(gate) * amt_s01_d04_noise_level +
|
||
mp.src02(gate) * amt_s02_d04_noise_level +
|
||
mp.src03(gate) * amt_s03_d04_noise_level +
|
||
mp.src04(gate) * amt_s04_d04_noise_level +
|
||
mp.src05(gate) * amt_s05_d04_noise_level +
|
||
mp.src06(gate) * amt_s06_d04_noise_level +
|
||
mp.src07(gate) * amt_s07_d04_noise_level +
|
||
mp.src08(gate) * amt_s08_d04_noise_level +
|
||
mp.src09(gate) * amt_s09_d04_noise_level +
|
||
mp.src10(gate) * amt_s10_d04_noise_level +
|
||
mp.src11(gate) * amt_s11_d04_noise_level +
|
||
mp.src12(gate) * amt_s12_d04_noise_level +
|
||
mp.src13(gate) * amt_s13_d04_noise_level +
|
||
mp.src14(gate) * amt_s14_d04_noise_level +
|
||
mp.src15(gate) * amt_s15_d04_noise_level +
|
||
mp.src16(gate) * amt_s16_d04_noise_level +
|
||
mp.src17(gate) * amt_s17_d04_noise_level +
|
||
mp.src18(gate) * amt_s18_d04_noise_level +
|
||
mp.src19(gate) * amt_s19_d04_noise_level +
|
||
mp.src20(gate) * amt_s20_d04_noise_level +
|
||
mp.src21(gate) * amt_s21_d04_noise_level +
|
||
mp.src22(gate) * amt_s22_d04_noise_level +
|
||
mp.src23(gate) * amt_s23_d04_noise_level +
|
||
mp.src24(gate) * amt_s24_d04_noise_level +
|
||
mp.src25(gate) * amt_s25_d04_noise_level +
|
||
mp.src26(gate) * amt_s26_d04_noise_level +
|
||
mp.src27(gate) * amt_s27_d04_noise_level +
|
||
mp.src28(gate) * amt_s28_d04_noise_level +
|
||
mp.src29(gate) * amt_s29_d04_noise_level +
|
||
mp.src30(gate) * amt_s30_d04_noise_level +
|
||
mp.src31(gate) * amt_s31_d04_noise_level +
|
||
mp.src32(gate) * amt_s32_d04_noise_level +
|
||
mp.src33(gate) * amt_s33_d04_noise_level +
|
||
mp.src34(gate) * amt_s34_d04_noise_level +
|
||
mp.src35(gate) * amt_s35_d04_noise_level +
|
||
mp.src36(gate) * amt_s36_d04_noise_level +
|
||
mp.src37(gate) * amt_s37_d04_noise_level +
|
||
mp.src38(gate) * amt_s38_d04_noise_level +
|
||
mp.src39(gate) * amt_s39_d04_noise_level +
|
||
mp.src40(gate) * amt_s40_d04_noise_level +
|
||
mp.src41(gate) * amt_s41_d04_noise_level +
|
||
mp.src42(gate) * amt_s42_d04_noise_level +
|
||
mp.src43(gate) * amt_s43_d04_noise_level +
|
||
mp.src44(gate) * amt_s44_d04_noise_level +
|
||
mp.src45(gate) * amt_s45_d04_noise_level +
|
||
mp.src46(gate) * amt_s46_d04_noise_level +
|
||
mp.src47(gate) * amt_s47_d04_noise_level;
|
||
|
||
mod_cutoff(gate) =
|
||
mp.src00(gate) * amt_s00_d05_cutoff +
|
||
mp.src01(gate) * amt_s01_d05_cutoff +
|
||
mp.src02(gate) * amt_s02_d05_cutoff +
|
||
mp.src03(gate) * amt_s03_d05_cutoff +
|
||
mp.src04(gate) * amt_s04_d05_cutoff +
|
||
mp.src05(gate) * amt_s05_d05_cutoff +
|
||
mp.src06(gate) * amt_s06_d05_cutoff +
|
||
mp.src07(gate) * amt_s07_d05_cutoff +
|
||
mp.src08(gate) * amt_s08_d05_cutoff +
|
||
mp.src09(gate) * amt_s09_d05_cutoff +
|
||
mp.src10(gate) * amt_s10_d05_cutoff +
|
||
mp.src11(gate) * amt_s11_d05_cutoff +
|
||
mp.src12(gate) * amt_s12_d05_cutoff +
|
||
mp.src13(gate) * amt_s13_d05_cutoff +
|
||
mp.src14(gate) * amt_s14_d05_cutoff +
|
||
mp.src15(gate) * amt_s15_d05_cutoff +
|
||
mp.src16(gate) * amt_s16_d05_cutoff +
|
||
mp.src17(gate) * amt_s17_d05_cutoff +
|
||
mp.src18(gate) * amt_s18_d05_cutoff +
|
||
mp.src19(gate) * amt_s19_d05_cutoff +
|
||
mp.src20(gate) * amt_s20_d05_cutoff +
|
||
mp.src21(gate) * amt_s21_d05_cutoff +
|
||
mp.src22(gate) * amt_s22_d05_cutoff +
|
||
mp.src23(gate) * amt_s23_d05_cutoff +
|
||
mp.src24(gate) * amt_s24_d05_cutoff +
|
||
mp.src25(gate) * amt_s25_d05_cutoff +
|
||
mp.src26(gate) * amt_s26_d05_cutoff +
|
||
mp.src27(gate) * amt_s27_d05_cutoff +
|
||
mp.src28(gate) * amt_s28_d05_cutoff +
|
||
mp.src29(gate) * amt_s29_d05_cutoff +
|
||
mp.src30(gate) * amt_s30_d05_cutoff +
|
||
mp.src31(gate) * amt_s31_d05_cutoff +
|
||
mp.src32(gate) * amt_s32_d05_cutoff +
|
||
mp.src33(gate) * amt_s33_d05_cutoff +
|
||
mp.src34(gate) * amt_s34_d05_cutoff +
|
||
mp.src35(gate) * amt_s35_d05_cutoff +
|
||
mp.src36(gate) * amt_s36_d05_cutoff +
|
||
mp.src37(gate) * amt_s37_d05_cutoff +
|
||
mp.src38(gate) * amt_s38_d05_cutoff +
|
||
mp.src39(gate) * amt_s39_d05_cutoff +
|
||
mp.src40(gate) * amt_s40_d05_cutoff +
|
||
mp.src41(gate) * amt_s41_d05_cutoff +
|
||
mp.src42(gate) * amt_s42_d05_cutoff +
|
||
mp.src43(gate) * amt_s43_d05_cutoff +
|
||
mp.src44(gate) * amt_s44_d05_cutoff +
|
||
mp.src45(gate) * amt_s45_d05_cutoff +
|
||
mp.src46(gate) * amt_s46_d05_cutoff +
|
||
mp.src47(gate) * amt_s47_d05_cutoff;
|
||
|
||
mod_resonance(gate) =
|
||
mp.src00(gate) * amt_s00_d06_resonance +
|
||
mp.src01(gate) * amt_s01_d06_resonance +
|
||
mp.src02(gate) * amt_s02_d06_resonance +
|
||
mp.src03(gate) * amt_s03_d06_resonance +
|
||
mp.src04(gate) * amt_s04_d06_resonance +
|
||
mp.src05(gate) * amt_s05_d06_resonance +
|
||
mp.src06(gate) * amt_s06_d06_resonance +
|
||
mp.src07(gate) * amt_s07_d06_resonance +
|
||
mp.src08(gate) * amt_s08_d06_resonance +
|
||
mp.src09(gate) * amt_s09_d06_resonance +
|
||
mp.src10(gate) * amt_s10_d06_resonance +
|
||
mp.src11(gate) * amt_s11_d06_resonance +
|
||
mp.src12(gate) * amt_s12_d06_resonance +
|
||
mp.src13(gate) * amt_s13_d06_resonance +
|
||
mp.src14(gate) * amt_s14_d06_resonance +
|
||
mp.src15(gate) * amt_s15_d06_resonance +
|
||
mp.src16(gate) * amt_s16_d06_resonance +
|
||
mp.src17(gate) * amt_s17_d06_resonance +
|
||
mp.src18(gate) * amt_s18_d06_resonance +
|
||
mp.src19(gate) * amt_s19_d06_resonance +
|
||
mp.src20(gate) * amt_s20_d06_resonance +
|
||
mp.src21(gate) * amt_s21_d06_resonance +
|
||
mp.src22(gate) * amt_s22_d06_resonance +
|
||
mp.src23(gate) * amt_s23_d06_resonance +
|
||
mp.src24(gate) * amt_s24_d06_resonance +
|
||
mp.src25(gate) * amt_s25_d06_resonance +
|
||
mp.src26(gate) * amt_s26_d06_resonance +
|
||
mp.src27(gate) * amt_s27_d06_resonance +
|
||
mp.src28(gate) * amt_s28_d06_resonance +
|
||
mp.src29(gate) * amt_s29_d06_resonance +
|
||
mp.src30(gate) * amt_s30_d06_resonance +
|
||
mp.src31(gate) * amt_s31_d06_resonance +
|
||
mp.src32(gate) * amt_s32_d06_resonance +
|
||
mp.src33(gate) * amt_s33_d06_resonance +
|
||
mp.src34(gate) * amt_s34_d06_resonance +
|
||
mp.src35(gate) * amt_s35_d06_resonance +
|
||
mp.src36(gate) * amt_s36_d06_resonance +
|
||
mp.src37(gate) * amt_s37_d06_resonance +
|
||
mp.src38(gate) * amt_s38_d06_resonance +
|
||
mp.src39(gate) * amt_s39_d06_resonance +
|
||
mp.src40(gate) * amt_s40_d06_resonance +
|
||
mp.src41(gate) * amt_s41_d06_resonance +
|
||
mp.src42(gate) * amt_s42_d06_resonance +
|
||
mp.src43(gate) * amt_s43_d06_resonance +
|
||
mp.src44(gate) * amt_s44_d06_resonance +
|
||
mp.src45(gate) * amt_s45_d06_resonance +
|
||
mp.src46(gate) * amt_s46_d06_resonance +
|
||
mp.src47(gate) * amt_s47_d06_resonance;
|
||
|
||
mod_filter_env_amt(gate) =
|
||
mp.src00(gate) * amt_s00_d07_filter_env_amt +
|
||
mp.src01(gate) * amt_s01_d07_filter_env_amt +
|
||
mp.src02(gate) * amt_s02_d07_filter_env_amt +
|
||
mp.src03(gate) * amt_s03_d07_filter_env_amt +
|
||
mp.src04(gate) * amt_s04_d07_filter_env_amt +
|
||
mp.src05(gate) * amt_s05_d07_filter_env_amt +
|
||
mp.src06(gate) * amt_s06_d07_filter_env_amt +
|
||
mp.src07(gate) * amt_s07_d07_filter_env_amt +
|
||
mp.src08(gate) * amt_s08_d07_filter_env_amt +
|
||
mp.src09(gate) * amt_s09_d07_filter_env_amt +
|
||
mp.src10(gate) * amt_s10_d07_filter_env_amt +
|
||
mp.src11(gate) * amt_s11_d07_filter_env_amt +
|
||
mp.src12(gate) * amt_s12_d07_filter_env_amt +
|
||
mp.src13(gate) * amt_s13_d07_filter_env_amt +
|
||
mp.src14(gate) * amt_s14_d07_filter_env_amt +
|
||
mp.src15(gate) * amt_s15_d07_filter_env_amt +
|
||
mp.src16(gate) * amt_s16_d07_filter_env_amt +
|
||
mp.src17(gate) * amt_s17_d07_filter_env_amt +
|
||
mp.src18(gate) * amt_s18_d07_filter_env_amt +
|
||
mp.src19(gate) * amt_s19_d07_filter_env_amt +
|
||
mp.src20(gate) * amt_s20_d07_filter_env_amt +
|
||
mp.src21(gate) * amt_s21_d07_filter_env_amt +
|
||
mp.src22(gate) * amt_s22_d07_filter_env_amt +
|
||
mp.src23(gate) * amt_s23_d07_filter_env_amt +
|
||
mp.src24(gate) * amt_s24_d07_filter_env_amt +
|
||
mp.src25(gate) * amt_s25_d07_filter_env_amt +
|
||
mp.src26(gate) * amt_s26_d07_filter_env_amt +
|
||
mp.src27(gate) * amt_s27_d07_filter_env_amt +
|
||
mp.src28(gate) * amt_s28_d07_filter_env_amt +
|
||
mp.src29(gate) * amt_s29_d07_filter_env_amt +
|
||
mp.src30(gate) * amt_s30_d07_filter_env_amt +
|
||
mp.src31(gate) * amt_s31_d07_filter_env_amt +
|
||
mp.src32(gate) * amt_s32_d07_filter_env_amt +
|
||
mp.src33(gate) * amt_s33_d07_filter_env_amt +
|
||
mp.src34(gate) * amt_s34_d07_filter_env_amt +
|
||
mp.src35(gate) * amt_s35_d07_filter_env_amt +
|
||
mp.src36(gate) * amt_s36_d07_filter_env_amt +
|
||
mp.src37(gate) * amt_s37_d07_filter_env_amt +
|
||
mp.src38(gate) * amt_s38_d07_filter_env_amt +
|
||
mp.src39(gate) * amt_s39_d07_filter_env_amt +
|
||
mp.src40(gate) * amt_s40_d07_filter_env_amt +
|
||
mp.src41(gate) * amt_s41_d07_filter_env_amt +
|
||
mp.src42(gate) * amt_s42_d07_filter_env_amt +
|
||
mp.src43(gate) * amt_s43_d07_filter_env_amt +
|
||
mp.src44(gate) * amt_s44_d07_filter_env_amt +
|
||
mp.src45(gate) * amt_s45_d07_filter_env_amt +
|
||
mp.src46(gate) * amt_s46_d07_filter_env_amt +
|
||
mp.src47(gate) * amt_s47_d07_filter_env_amt;
|
||
|
||
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);
|
||
oct2ratio(o) = pow(2.0, o);
|
||
semi2ratio(s) = pow(2.0, s / 12.0);
|
||
|
||
// Portamento
|
||
glide_tau = 0.0001 + master_glide * 1.0;
|
||
freq_glided = freq : si.smooth(ba.tau2pole(glide_tau));
|
||
|
||
// Base (glide + master fine tune)
|
||
base_freq = freq_glided * cent2ratio(master_tune);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Per-oscillator wavetable (saw → tri → square crossfade)
|
||
// 0.0 → saw, 0.5 → triangle, 1.0 → square. Output in [-1,+1].
|
||
// ---------------------------------------------------------------------------
|
||
osc_wave(shape, f) =
|
||
ba.if(shape < 0.5,
|
||
(1.0 - shape*2.0) * os.lf_saw(f) + (shape*2.0) * os.lf_triangle(f),
|
||
(1.0 - (shape-0.5)*2.0) * os.lf_triangle(f) + ((shape-0.5)*2.0) * os.lf_squarewave(f));
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Oscillator frequencies (pitch modulation: 1 unit = 12 semitones)
|
||
// ---------------------------------------------------------------------------
|
||
pitch_ratio = semi2ratio(mod_pitch(gate) * 12.0);
|
||
|
||
osc1_freq = base_freq * oct2ratio(osc1_range) * pitch_ratio;
|
||
osc2_freq = base_freq * oct2ratio(osc2_range) * pitch_ratio
|
||
* cent2ratio(osc2_detune + mod_osc2_detune(gate) * 50.0);
|
||
osc3_freq_tracked = base_freq * oct2ratio(osc3_range) * pitch_ratio
|
||
* cent2ratio(osc3_detune + mod_osc3_detune(gate) * 50.0);
|
||
// When kb_track=0, osc3 becomes a free-running sub/LFO source at ~55 Hz * oct
|
||
osc3_freq_untracked = 55.0 * oct2ratio(osc3_range)
|
||
* cent2ratio(osc3_detune + mod_osc3_detune(gate) * 50.0);
|
||
osc3_freq = osc3_kb_track * osc3_freq_tracked + (1.0 - osc3_kb_track) * osc3_freq_untracked;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Oscillators
|
||
// ---------------------------------------------------------------------------
|
||
o1 = osc_wave(osc1_wave, osc1_freq);
|
||
o2 = osc_wave(osc2_wave, osc2_freq);
|
||
o3 = osc_wave(osc3_wave, osc3_freq);
|
||
|
||
// Osc mix balance: -1 = all osc1, +1 = all osc3, 0 = both equal. osc2 unaffected.
|
||
mix_bal = max(-1.0, min(1.0, mod_osc_mix_bal(gate)));
|
||
mix_t = (mix_bal + 1.0) * 0.5; // 0..1
|
||
w_o1 = 1.0 - mix_t;
|
||
w_o3 = mix_t;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Noise: white (noise_type<0.5) / pink (else)
|
||
// ---------------------------------------------------------------------------
|
||
white_noise = no.noise;
|
||
pink_noise = no.pink_noise;
|
||
noise_raw = ba.if(noise_type < 0.5, white_noise, pink_noise);
|
||
noise_lvl = max(0.0, min(1.0, noise_level + mod_noise_level(gate)));
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Mixer sum
|
||
// ---------------------------------------------------------------------------
|
||
mix_sum =
|
||
o1 * osc1_level * w_o1
|
||
+ o2 * osc2_level
|
||
+ o3 * osc3_level * w_o3
|
||
+ noise_raw * noise_lvl;
|
||
|
||
mix_driven = ma.tanh(mix_sum * mixer_drive);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Filter — Moog ladder. Cutoff is modulated in octaves (±5 oct per mod unit).
|
||
// ---------------------------------------------------------------------------
|
||
cutoff_mod_oct = (mod_cutoff(gate) + mod_filter_env_amt(gate)) * 5.0;
|
||
kb_scale = pow(freq_glided / 440.0, filter_kb); // 1.0 at A4 when kb=1
|
||
eff_cutoff_raw = cutoff * kb_scale * oct2ratio(cutoff_mod_oct);
|
||
eff_cutoff = max(20.0, min(18000.0, eff_cutoff_raw));
|
||
eff_res = max(0.0, min(0.99, resonance + mod_resonance(gate)));
|
||
|
||
filtered = mix_driven : ve.moog_vcf(eff_res, eff_cutoff);
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// Amp and pan
|
||
// ---------------------------------------------------------------------------
|
||
// Velocity gain: blend 1.0 (no velocity) -> vel. Referenced here so Faust
|
||
// keeps the _vel hidden param alive in the JSON descriptor.
|
||
vel_gain = (1.0 - 0.3) + 0.3 * vel; // 30% velocity sensitivity, fixed
|
||
// d08_amp modulation is additive on top of base_amp (positive only). A
|
||
// fully untrained or adversarial matrix therefore cannot silence the
|
||
// voice while base_amp is high — which is the safety the "main amp gate
|
||
// on at all times" default relies on. Users who want envelope-gated
|
||
// voices set base_amp=0 and route a positive ADSR/LFO amount.
|
||
amp_val = max(0.0, min(1.0, base_amp + max(0.0, mod_amp(gate)))) * master_level * vel_gain;
|
||
pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate)));
|
||
|
||
// equal-power pan
|
||
pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI);
|
||
pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI);
|
||
|
||
signal = filtered * amp_val;
|
||
signal_L = signal * pan_l;
|
||
signal_R = signal * pan_r;
|
||
|
||
process = signal_L, signal_R;
|