desc: Overstratum Epic Halls

// ==========================================
// DSP Core Powered by Airwindows Galactic
// License: MIT
// Copyright (c) Chris Johnson
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// ==========================================

// ==========================================
// 1. GLOBAL & MIXING
// ==========================================
slider1:2.27<0.2,45,0.01>-Reverb Time (s)
slider2:10<0,500,1>-Pre-Delay (ms)
slider3:100<0,150,1>-Global Width (%)
slider4:50<0,100,1>-Refl / Reverb Mix (%)
slider5:30<0,100,1>-Dry / Wet (%)
slider6:0<-24,24,0.1>-Master Gain (dB)

// ==========================================
// 2. EARLY REFLECTIONS (ER)
// ==========================================
slider7:2<0,4,1{Close,Small,Medium,Large,Distant}>-ER: Proximity
slider8:5<10,100,1>-ER: Size (%)
slider9:5<0,100,1>-ER: Reflectivity (%)
slider10:0<0,6,1{Natural,Uniform,Nonlin U,Dissipate,Gather,Cluster 1,Cluster 2}>-ER: Pattern
slider12:100<0,150,1>-ER: Width (%)
slider15:8000<20,20000,10>-ER: Rolloff Freq (Hz)
slider16:0<0,3,1{6 dB/Oct,12 dB/Oct,18 dB/Oct,24 dB/Oct}>-ER: Rolloff Slope

// ==========================================
// 3. REVERB TAIL & CONTOUR (RV)
// ==========================================
slider17:1.0<0.1,4.0,0.01>-RV: Bass Multiplier (xRT)
slider18:800<20,20000,10>-RV: Bass Freq (Hz)
slider19:1.0<0.1,4.0,0.01>-RV: Treble Multiplier (xRT)
slider69:6000<20,20000,10>-RV: Treble Freq (Hz)
slider20:-15.0<-24,24,0.1>-RV: Low Boost (dB)
slider21:2.5<0,100,0.1>-RV: Bloom (%)
slider22:2.5<0,100,0.1>-RV: Undulation (%)
slider23:7.5<0,100,0.1>-RV: Mod Depth (%)
slider24:1<0,2,1{Light,Moderate,Ease-in}>-RV: Chorus Mode

// ==========================================
// 4. REVERB ECHO & X-FEED
// ==========================================
slider25:0<0,100,1>-Echo: Level (%)
slider26:0<0,1500,1>-Echo: Time (ms)
slider27:15000<20,20000,10>-Echo: Rolloff Freq (Hz)
slider28:0<0,100,1>-X-Feed ER: Level (%)
slider29:0<0,100,1>-X-Feed ER: Delay (ms)
slider30:15000<20,20000,10>-X-Feed ER: Rolloff (Hz)
slider31:0<0,100,1>-X-Feed RV: Level (%)
slider32:0<0,100,1>-X-Feed RV: Delay (ms)
slider33:15000<20,20000,10>-X-Feed RV: Rolloff (Hz)

// ==========================================
// 5. 5-BAND POST EQ 
// ==========================================
slider34:1<0,1,1{Off,On}>-EQ: Enable
slider35:20<20,1000,1>-EQ: B1 Low Cut Freq (Hz)
slider36:500<20,2000,1>-EQ: B2 Low Shelf Freq (Hz)
slider37:0<-18,18,0.1>-EQ: B2 Low Shelf Gain (dB)
slider38:0.7<0.1,4.0,0.01>-EQ: B2 Q
slider39:3000<20,20000,1>-EQ: B3 Mid Freq (Hz)
slider40:0<-18,18,0.1>-EQ: B3 Mid Gain (dB)
slider41:0.7<0.1,10.0,0.01>-EQ: B3 Q
slider42:8000<200,20000,1>-EQ: B4 High Shelf Freq (Hz)
slider43:0<-18,18,0.1>-EQ: B4 High Shelf Gain (dB)
slider44:0.7<0.1,4.0,0.01>-EQ: B4 Q
slider45:18000<1000,20000,1>-EQ: B5 High Cut Freq (Hz)

// ==========================================
// 6. DYNAMICS (COMPRESSOR / DUCKER / GATE)
// ==========================================
slider46:0<0,1,1{Off,On}>-DYN: Enable
slider47:2<0,5,1{Reflection,Reverb,Wet Mix,Input,Ducker (Reverb),Ducker (Wet)}>-DYN: Target
slider48:-24<-60,0,0.1>-DYN: Threshold (dB)
slider49:4<1,20,0.1>-DYN: Ratio
slider50:10<0,24,1>-DYN: Knee (dB)
slider51:10<0.1,100,0.1>-DYN: Attack (ms)
slider52:100<10,1000,1>-DYN: Release (ms)
slider53:0<-24,24,0.1>-DYN: Trim (dB)
slider54:0<0,1,1{Off,On}>-GATE: Enable
slider55:0<0,2,1{Target,Input,Ext Sidechain}>-GATE: Source
slider56:-40<-80,0,0.1>-GATE: Threshold (dB)
slider57:6<0,24,0.1>-GATE: Hysteresis (dB)
slider58:10<0,500,1>-GATE: Hold (ms)
slider59:50<1,1000,1>-GATE: Close (ms)
slider60:10<1,500,1>-GATE: Open (ms)
slider61:-80<-80,0,1>-GATE: Range (dB)
slider62:0<0,100,0.1>-Ducker Intensity (%)

// ==========================================
// 7. SURROUND, MISC & GFX STATE
// ==========================================
slider63:1<1,999,1>-Decorrelate Seed
slider65:8000<20,20000,10>-RV: Rolloff Freq (Hz)
slider66:2<0,3,1{6 dB/Oct,12 dB/Oct,18 dB/Oct,24 dB/Oct}>-RV: Rolloff Slope
slider67:0<0,1,1{Room Def,EQ}>-UI: Active Tab (Internal)
slider68:1<1,150,1>-UI: Current Preset (Internal) // 1 = Concert Hall (Default)

in_pin:left input
in_pin:right input
in_pin:sidechain left
in_pin:sidechain right
out_pin:left output
out_pin:right output

@init
freembuf(16000000); 
memset(0, 0, 16000000);

cr_legacy_rt = 0;
cr_late_size = 0.985;
cr_seed = slider63;
function cr_rand() ( cr_seed = (cr_seed * 196314165 + 907633515) % 4294967296; (cr_seed / 4294967296); );

mem_eq_coefs = 1700000; 
mem_eq_states = 1700100; 

function proc_biquad(x, coef_offset, state_offset)
local(b0, b1, b2, a1, a2, x1, x2, y1, y2, y, c_ptr, s_ptr) (
  c_ptr = mem_eq_coefs + coef_offset; s_ptr = mem_eq_states + state_offset;
  b0=c_ptr[0]; b1=c_ptr[1]; b2=c_ptr[2]; a1=c_ptr[3]; a2=c_ptr[4];
  x1=s_ptr[0]; x2=s_ptr[1]; y1=s_ptr[2]; y2=s_ptr[3];
  y = b0*x + b1*x1 + b2*x2 - a1*y1 - a2*y2;
  s_ptr[1] = x1; s_ptr[0] = x; s_ptr[3] = y1; s_ptr[2] = y;
  y;
);

function calc_biquad(type, f, q, gain_db, offset)
local(w0, cos_w0, alpha, A, a0, a1, a2, b0, b1, b2, out_ptr) (
  f = min(f, srate * 0.49); q = max(q, 0.01);
  w0 = 2.0 * 3.141592653589793238 * f / srate; cos_w0 = cos(w0); alpha = sin(w0) / (2 * q);
  A = 10 ^ (gain_db / 40); out_ptr = mem_eq_coefs + offset; 
  type == 0 ? ( 
    b0 = (1 + cos_w0) / 2; b1 = -(1 + cos_w0); b2 = (1 + cos_w0) / 2;
    a0 = 1 + alpha; a1 = -2 * cos_w0; a2 = 1 - alpha;
  ) : type == 1 ? ( 
    b0 = A * ((A + 1) - (A - 1) * cos_w0 + 2 * sqrt(A) * alpha);
    b1 = 2 * A * ((A - 1) - (A + 1) * cos_w0);
    b2 = A * ((A + 1) - (A - 1) * cos_w0 - 2 * sqrt(A) * alpha);
    a0 = (A + 1) + (A - 1) * cos_w0 + 2 * sqrt(A) * alpha;
    a1 = -2 * ((A - 1) + (A + 1) * cos_w0);
    a2 = (A + 1) + (A - 1) * cos_w0 - 2 * sqrt(A) * alpha;
  ) : type == 2 ? ( 
    b0 = 1 + alpha * A; b1 = -2 * cos_w0; b2 = 1 - alpha * A;
    a0 = 1 + alpha / A; a1 = -2 * cos_w0; a2 = 1 - alpha / A;
  ) : type == 3 ? ( 
    b0 = A * ((A + 1) + (A - 1) * cos_w0 + 2 * sqrt(A) * alpha);
    b1 = -2 * A * ((A - 1) + (A + 1) * cos_w0);
    b2 = A * ((A + 1) + (A - 1) * cos_w0 - 2 * sqrt(A) * alpha);
    a0 = (A + 1) - (A - 1) * cos_w0 + 2 * sqrt(A) * alpha;
    a1 = 2 * ((A - 1) - (A + 1) * cos_w0);
    a2 = (A + 1) - (A - 1) * cos_w0 - 2 * sqrt(A) * alpha;
  ) : type == 4 ? ( 
    b0 = (1 - cos_w0) / 2; b1 = 1 - cos_w0; b2 = (1 - cos_w0) / 2;
    a0 = 1 + alpha; a1 = -2 * cos_w0; a2 = 1 - alpha;
  );
  a0 = max(a0, 0.0000000001);
  out_ptr[0] = b0/a0; out_ptr[1] = b1/a0; out_ptr[2] = b2/a0;
  out_ptr[3] = a1/a0; out_ptr[4] = a2/a0;
);

freemem = 0;
aIL = freemem; freemem += 6480; aJL = freemem; freemem += 3660;
aKL = freemem; freemem += 1720; aLL = freemem; freemem += 680;
aAL = freemem; freemem += 9700; aBL = freemem; freemem += 6000;
aCL = freemem; freemem += 2320; aDL = freemem; freemem += 940;
aEL = freemem; freemem += 15220; aFL = freemem; freemem += 8460;
aGL = freemem; freemem += 4540; aHL = freemem; freemem += 3200;
aML = freemem; freemem += 3111; aMR = freemem; freemem += 3111;
lastRefL = freemem; freemem += 7;

aIR = freemem; freemem += 6480; aJR = freemem; freemem += 3660;
aKR = freemem; freemem += 1720; aLR = freemem; freemem += 680;
aAR = freemem; freemem += 9700; aBR = freemem; freemem += 6000;
aCR = freemem; freemem += 2320; aDR = freemem; freemem += 940;
aER = freemem; freemem += 15220; aFR = freemem; freemem += 8460;
aGR = freemem; freemem += 4540; aHR = freemem; freemem += 3200;
lastRefR = freemem; freemem += 7;

countI = 1; countJ = 1; countK = 1; countL = 1;
countA = 1; countB = 1; countC = 1; countD = 1;  
countE = 1; countF = 1; countG = 1; countH = 1; countM = 1;
g_idx = 0; cr_vibM = 0;

cr_er_gain = 0.5;
cr_env_fast = 0.0;
cr_env_slow_lp = 0.0;

function delay_read_lin(buf_start, max_len, write_idx, delay_samps)
local(r_idx, i1, frac, y1, y2) (
  r_idx = write_idx - delay_samps;
  while(r_idx < 0) ( r_idx += max_len; ); 
  while(r_idx >= max_len) ( r_idx -= max_len; ); 
  i1 = floor(r_idx); frac = r_idx - i1;
  y1 = buf_start[i1]; y2 = buf_start[i1+1 >= max_len ? 0 : i1+1];
  y1 + frac * (y2 - y1);
);

function db2lin(db) ( 10 ^ (db / 20) );
function lin2db(lin) ( 20 * log10(max(lin, 0.00001)) );
init_smoothing = 1;

function load_preset(idx) (
  // Smartes Mapping: Index 1 ist jetzt Concert Hall. 
  // Alles andere rutscht intern automatisch eins weiter, ohne dass du den Code ändern musst!
  idx = idx == 1 ? 150 : idx - 1;

  // --- 1. DEFAULT FALLBACK ---
  slider1=2.27; slider2=10; slider3=100; slider4=50; slider7=2; slider8=5; slider9=5; slider10=0;
  // --- 1. DEFAULT FALLBACK ---
  slider1=2.25; slider2=10; slider3=100; slider4=50; slider7=2; slider8=50; slider9=50; slider10=0;
  slider12=100; slider15=8000; slider17=1.0;
  slider18=6000; slider19=1.0; slider20=-15.0; slider21=2.5; slider22=2.5; slider23=7.5; slider24=1;
  slider25=0; slider26=0; slider27=15000; slider28=0; slider29=0; slider30=15000; slider31=0;
  slider32=0; slider33=15000; slider34=1; slider35=20; slider36=500; slider37=0; slider38=0.7;
  slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000;
  slider46=0; slider47=2; slider48=-24; slider49=4; slider50=10; slider51=10; slider52=100;
  slider53=0; slider54=0; slider55=0; slider56=-40; slider57=6; slider58=10; slider59=50; slider60=10;
  slider61=-80; slider63=1; slider65=8000; 

  // --- ENVIRONMENTS ---
  idx == 1 ? ( slider1=0.56; slider2=7; slider4=40; slider7=0; slider8=5; slider9=6; slider15=9700; slider16=0; slider17=1.1; slider18=365; slider19=0.85; slider20=2; slider21=2.26; slider22=9.7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7200; slider66=3; slider69=3625; ) :
  idx == 2 ? ( slider1=0.81; slider2=14.9; slider4=50; slider7=1; slider8=8.8; slider9=9.4; slider15=5988; slider16=0; slider17=0.7; slider18=800; slider19=1; slider20=-20; slider21=9.4; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7000; slider66=0; slider69=6000; ) :
  idx == 3 ? ( slider1=2.01; slider2=22; slider4=56.1; slider7=1; slider8=10; slider9=9; slider15=4000; slider16=1; slider17=0.76; slider18=800; slider19=0.76; slider20=-11; slider21=6; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3500; slider66=1; slider69=6000; ) :
  idx == 4 ? ( slider1=0.91; slider2=3; slider4=32.5; slider7=0; slider8=5; slider9=6; slider15=3600; slider16=0; slider17=1.05; slider18=585; slider19=0.8; slider20=-3; slider21=2.58; slider22=4.8; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3000; slider66=3; slider69=2725; ) :
  idx == 5 ? ( slider1=1.01; slider2=21; slider4=37.5; slider7=2; slider8=5; slider9=10; slider15=10450; slider16=0; slider17=0.95; slider18=975; slider19=0.8; slider20=-5; slider21=7.74; slider22=3.7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5650; slider66=3; slider69=3925; ) :
  idx == 6 ? ( slider1=0.81; slider2=11; slider4=25; slider7=2; slider8=5; slider9=2; slider15=10550; slider16=0; slider17=0.9; slider18=675; slider19=0.85; slider20=0; slider21=4.84; slider22=7.3; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5950; slider66=3; slider69=3625; ) :
  idx == 7 ? ( slider1=0.39; slider2=2.7; slider4=45.1; slider7=0; slider8=2.5; slider9=3.1; slider15=4000; slider16=0; slider17=1; slider18=800; slider19=0.85; slider20=-15.1; slider21=2.8; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=0; slider69=6000; ) :
  idx == 8 ? ( slider1=1.01; slider2=11; slider4=32.5; slider7=0; slider8=5; slider9=10; slider15=5650; slider16=0; slider17=1.05; slider18=485; slider19=0.8; slider20=-3; slider21=4.84; slider22=6.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3400; slider66=3; slider69=2875; ) :
  idx == 9 ? ( slider1=0.61; slider2=75.7; slider4=30.8; slider7=5; slider8=8.4; slider9=3.4; slider15=2823; slider16=1; slider17=1.2; slider18=800; slider19=0.62; slider20=-12; slider21=8.7; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=2415; slider66=2; slider69=6000; ) :
  idx == 10 ? ( slider1=0.51; slider2=23.4; slider4=41.8; slider7=2; slider8=0; slider9=10; slider15=13443; slider16=0; slider17=0.75; slider18=800; slider19=0.6; slider20=-20; slider21=0.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=15938; slider66=3; slider69=6000; ) :
  // --- ECHO CHAMBERS ---
  idx == 11 ? ( slider1=2.01; slider2=1; slider4=50; slider7=2; slider8=5; slider9=10; slider15=18000; slider16=0; slider17=0.75; slider18=975; slider19=0.75; slider20=-10; slider21=0; slider22=6.1; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=0; slider69=5575; ) :
  idx == 12 ? ( slider1=1.71; slider2=11; slider4=47.5; slider7=2; slider8=5; slider9=6; slider15=10850; slider16=0; slider17=0.85; slider18=1025; slider19=0.9; slider20=-12; slider21=1.94; slider22=3; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7000; slider66=3; slider69=3175; ) :
  idx == 13 ? ( slider1=1.81; slider2=1; slider4=50; slider7=1; slider8=1; slider9=0.9; slider15=18000; slider16=0; slider17=1.2; slider18=800; slider19=0.5; slider20=-10; slider21=0; slider22=6.1; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=2800; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=0; slider69=4000; ) :
  idx == 14 ? ( slider1=1.26; slider2=21; slider4=43.9; slider7=1; slider8=6.3; slider9=4.8; slider15=2096; slider16=0; slider17=0.9; slider18=800; slider19=0.7; slider20=-9; slider21=1.5; slider22=5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3600; slider66=2; slider69=6000; ) :
  idx == 15 ? ( slider1=1.61; slider2=1; slider4=50; slider7=0; slider8=5; slider9=10; slider15=10600; slider16=0; slider17=0.75; slider18=975; slider19=0.75; slider20=-10; slider21=0.97; slider22=6.1; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7850; slider66=3; slider69=5575; ) :
  idx == 16 ? ( slider1=1.01; slider2=1; slider4=50; slider7=1; slider8=2.9; slider9=10; slider15=16000; slider16=0; slider17=1.66; slider18=2000; slider19=1; slider20=-10; slider21=0; slider22=6.1; slider23=5.1; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=15000; slider66=0; slider69=6000; ) :
  idx == 17 ? ( slider1=1.51; slider2=7; slider4=55; slider7=0; slider8=5; slider9=5; slider15=8650; slider16=0; slider17=0.9; slider18=395; slider19=0.9; slider20=-15; slider21=0.97; slider22=1.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5350; slider66=1; slider69=3125; ) :
  idx == 18 ? ( slider1=1.91; slider2=1; slider4=60; slider7=0; slider8=5; slider9=10; slider15=10250; slider16=0; slider17=1; slider18=1025; slider19=0.7; slider20=-10; slider21=2.58; slider22=4.7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6550; slider66=3; slider69=4075; ) :
  idx == 19 ? ( slider1=0.71; slider2=1; slider4=50; slider7=0; slider8=5; slider9=4; slider15=14000; slider16=0; slider17=1; slider18=715; slider19=0.9; slider20=-6; slider21=3.23; slider22=7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5650; slider66=3; slider69=4775; ) :
  idx == 20 ? ( slider1=1.01; slider2=1; slider4=50; slider7=0; slider8=5; slider9=6; slider15=10100; slider16=0; slider17=0.95; slider18=845; slider19=0.8; slider20=-12; slider21=0.65; slider22=5.2; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6200; slider66=3; slider69=4775; ) :
  // --- VAULTS & CELLARS ---
  idx == 21 ? ( slider1=1.21; slider2=1; slider4=45; slider7=0; slider8=5; slider9=10; slider15=8800; slider16=0; slider17=0.9; slider18=875; slider19=0.75; slider20=-6; slider21=1; slider22=0.2; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3000; slider66=2; slider69=4825; ) :
  idx == 22 ? ( slider1=2.01; slider2=11; slider4=55; slider7=2; slider8=5; slider9=2; slider15=3450; slider16=0; slider17=1.05; slider18=385; slider19=0.8; slider20=-12; slider21=2.9; slider22=0.6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3450; slider66=1; slider69=1975; ) :
  idx == 23 ? ( slider1=2.41; slider2=1; slider4=75; slider7=0; slider8=5; slider9=10; slider15=8050; slider16=0; slider17=1.25; slider18=335; slider19=0.7; slider20=-9; slider21=1.61; slider22=6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6450; slider66=3; slider69=3225; ) :
  idx == 24 ? ( slider1=1.61; slider2=11; slider4=45; slider7=2; slider8=5; slider9=2; slider15=12150; slider16=0; slider17=1.35; slider18=355; slider19=0.8; slider20=2; slider21=1.94; slider22=4.8; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5650; slider66=3; slider69=1975; ) :
  idx == 25 ? ( slider1=1.41; slider2=11; slider4=50; slider7=0; slider8=5; slider9=7; slider15=10050; slider16=0; slider17=0.95; slider18=595; slider19=0.8; slider20=-15; slider21=1.61; slider22=8.6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6450; slider66=3; slider69=3975; ) :
  idx == 26 ? ( slider1=1.91; slider2=11; slider4=52.5; slider7=2; slider8=5; slider9=2; slider15=12000; slider16=0; slider17=1; slider18=505; slider19=0.8; slider20=-10; slider21=3.23; slider22=9.1; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6500; slider66=3; slider69=2425; ) :
  idx == 27 ? ( slider1=2.21; slider2=21; slider4=62.5; slider7=0; slider8=5; slider9=8; slider15=12050; slider16=0; slider17=1.05; slider18=975; slider19=0.8; slider20=-14; slider21=4.84; slider22=5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6450; slider66=3; slider69=5625; ) :
  idx == 28 ? ( slider1=1.21; slider2=11; slider4=50; slider7=0; slider8=5; slider9=6; slider15=9700; slider16=0; slider17=0.9; slider18=775; slider19=0.9; slider20=-19; slider21=0.97; slider22=4.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5550; slider66=3; slider69=4775; ) :
  idx == 29 ? ( slider1=1.66; slider2=31; slider4=65; slider7=0; slider8=5; slider9=6; slider15=12100; slider16=0; slider17=0.9; slider18=1175; slider19=0.75; slider20=-11; slider21=6.45; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7550; slider66=3; slider69=5575; ) :
  idx == 30 ? ( slider1=1.61; slider2=11; slider4=50; slider7=0; slider8=5; slider9=7; slider15=14600; slider16=0; slider17=0.9; slider18=775; slider19=0.85; slider20=-12; slider21=1.61; slider22=6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7850; slider66=3; slider69=4825; ) :
  // --- CONCERT HALLS ---
  idx == 31 ? ( slider1=2.31; slider2=11; slider4=56.2; slider7=3; slider8=6.9; slider9=10; slider15=15000; slider16=0; slider17=1.25; slider18=800; slider19=0.8; slider20=-1; slider21=2.7; slider22=2; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=1135; slider40=0; slider41=0.7; slider42=2362; slider43=0; slider44=0.7; slider45=18000; slider65=3803; slider66=0; slider69=6000; ) :
  idx == 32 ? ( slider1=2.61; slider2=1; slider4=50; slider7=4; slider8=5; slider9=6; slider15=11350; slider16=0; slider17=1.2; slider18=745; slider19=0.7; slider20=-10; slider21=6.45; slider22=1.1; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3150; slider66=1; slider69=2725; ) :
  idx == 33 ? ( slider1=2.51; slider2=19.1; slider4=39.6; slider7=6; slider8=7.7; slider9=6.8; slider15=12701; slider16=0; slider17=1.2; slider18=800; slider19=0.85; slider20=-20; slider21=6.5; slider22=10; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=13000; slider66=2; slider69=6000; ) :
  idx == 34 ? ( slider1=2.01; slider2=15.4; slider4=55.2; slider7=2; slider8=7.1; slider9=8.7; slider15=14028; slider16=1; slider17=0.7; slider18=800; slider19=0.85; slider20=-10.8; slider21=5.7; slider22=0; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=1578; slider66=0; slider69=6000; ) :
  idx == 35 ? ( slider1=2.81; slider2=57.8; slider4=63.6; slider7=2; slider8=9.2; slider9=10; slider15=5000; slider16=0; slider17=0.79; slider18=800; slider19=0.8; slider20=-7.6; slider21=8.3; slider22=3; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5000; slider66=1; slider69=6000; ) :
  idx == 36 ? ( slider1=2.11; slider2=11; slider4=50; slider7=2; slider8=5; slider9=5; slider15=18000; slider16=0; slider17=0.75; slider18=800; slider19=0.7; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=8731; slider40=0; slider41=0.44; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=9000; slider66=1; slider69=4000; ) :
  idx == 37 ? ( slider1=4.11; slider2=1; slider4=85; slider7=4; slider8=5; slider9=8; slider15=6100; slider16=0; slider17=1.55; slider18=1225; slider19=0.7; slider20=-8; slider21=6.45; slider22=5.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=2900; slider66=1; slider69=1725; ) :
  idx == 38 ? ( slider1=1.61; slider2=11; slider4=54.3; slider7=2; slider8=1.5; slider9=5; slider15=18000; slider16=0; slider17=0.8; slider18=400; slider19=0.82; slider20=-3.9; slider21=2.5; slider22=0; slider23=7.5; slider35=20; slider36=1122; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=3523; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=2; slider69=6000; ) :
  idx == 39 ? ( slider1=1.76; slider2=25; slider4=65; slider7=4; slider8=5; slider9=6; slider15=7500; slider16=0; slider17=1.25; slider18=675; slider19=0.75; slider20=-8; slider21=7.1; slider22=0.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4100; slider66=1; slider69=3675; ) :
  idx == 40 ? ( slider1=1.41; slider2=1; slider4=60; slider7=0; slider8=5; slider9=7; slider15=8200; slider16=0; slider17=1.05; slider18=775; slider19=0.75; slider20=-10; slider21=1.94; slider22=2.3; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5500; slider66=3; slider69=3625; ) :
  // --- GRAND VENUES ---
  idx == 41 ? ( slider1=1.81; slider2=25; slider4=75; slider7=2; slider8=5; slider9=8; slider15=8800; slider16=0; slider17=1.2; slider18=675; slider19=0.75; slider20=-10; slider21=7.42; slider22=3; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6050; slider66=3; slider69=3625; ) :
  idx == 42 ? ( slider1=0.96; slider2=13; slider4=62.5; slider7=6; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=0.85; slider20=-6; slider21=2.5; slider22=6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=2; slider69=6000; ) :
  idx == 43 ? ( slider1=2.31; slider2=11; slider4=55; slider7=2; slider8=5; slider9=2; slider15=13950; slider16=0; slider17=1.2; slider18=615; slider19=0.85; slider20=-10; slider21=3.23; slider22=7.2; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8900; slider66=3; slider69=1275; ) :
  idx == 44 ? ( slider1=2.01; slider2=3.5; slider4=60.8; slider7=5; slider8=7; slider9=5; slider15=3400; slider16=1; slider17=1.14; slider18=800; slider19=0.75; slider20=-15; slider21=5.1; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4000; slider66=1; slider69=6000; ) :
  idx == 45 ? ( slider1=1.67; slider2=4.7; slider4=37.6; slider7=0; slider8=6.7; slider9=9.2; slider15=12000; slider16=0; slider17=1.11; slider18=800; slider19=0.9; slider20=-1.5; slider21=3.4; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=12000; slider66=0; slider69=6000; ) :
  idx == 46 ? ( slider1=1.41; slider2=16.9; slider4=60.1; slider7=6; slider8=2.8; slider9=9.2; slider15=8000; slider16=0; slider17=0.85; slider18=800; slider19=0.85; slider20=-1.5; slider21=6.5; slider22=5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5000; slider66=0; slider69=6000; ) :
  idx == 47 ? ( slider1=2.31; slider2=1; slider4=50; slider7=4; slider8=5; slider9=2; slider15=9000; slider16=0; slider17=1.35; slider18=2575; slider19=0.65; slider20=-10; slider21=2.26; slider22=0.7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7050; slider66=3; slider69=1975; ) :
  idx == 48 ? ( slider1=2.66; slider2=21; slider4=62.5; slider7=6; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=0.7; slider18=800; slider19=1; slider20=-12; slider21=2.5; slider22=6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=2; slider69=6000; ) :
  idx == 49 ? ( slider1=2.31; slider2=1; slider4=55; slider7=2; slider8=5; slider9=6; slider15=13800; slider16=0; slider17=1.1; slider18=815; slider19=0.65; slider20=-6; slider21=3.87; slider22=0.3; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6950; slider66=3; slider69=3625; ) :
  idx == 50 ? ( // Large Hall (ORIGINAL - DO NOT CHANGE)
      slider1=3; slider2=30; slider4=62.5; slider7=6; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=0.85; slider20=-15; slider21=2.5; slider22=5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=2; slider69=6000; ) :
  // --- CREATIVE FX ---
  idx == 51 ? ( slider1=1.61; slider2=3.5; slider4=17.2; slider7=9; slider8=5; slider9=6.7; slider15=5988; slider16=1; slider17=0.7; slider18=800; slider19=1; slider20=-20; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4389; slider66=0; slider69=6000; ) :
  idx == 52 ? ( slider1=1.01; slider2=11; slider4=57.8; slider7=8; slider8=5; slider9=6.6; slider15=7000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=2; slider69=6000; ) :
  idx == 53 ? ( slider1=5.01; slider2=11; slider4=27.7; slider7=6; slider8=4.4; slider9=6.6; slider15=16462; slider16=0; slider17=0.5; slider18=4000; slider19=1; slider20=-20; slider21=0; slider22=8.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3295; slider66=0; slider69=6000; ) :
  idx == 54 ? ( slider1=0.81; slider2=11; slider4=46.7; slider7=8; slider8=5; slider9=5; slider15=14557; slider16=1; slider17=0.55; slider18=800; slider19=0.55; slider20=-20; slider21=2.5; slider22=2.5; slider23=5.4; slider35=330; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4345; slider66=2; slider69=6000; ) :
  idx == 55 ? ( slider1=0.61; slider2=11; slider4=61; slider7=10; slider8=5; slider9=0; slider15=6155; slider16=2; slider17=0.55; slider18=800; slider19=1; slider20=-20; slider21=2.5; slider22=2.5; slider23=7.5; slider35=440; slider36=487; slider37=0; slider38=0.5; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=4163; slider65=3468; slider66=2; slider69=6000; ) :
  idx == 56 ? ( slider1=1.61; slider2=11; slider4=61; slider7=10; slider8=4.6; slider9=0; slider15=6155; slider16=2; slider17=0.55; slider18=800; slider19=0.43; slider20=-20; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=487; slider37=0; slider38=0.5; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=9452; slider65=3468; slider66=2; slider69=6000; ) :
  idx == 57 ? ( slider1=2.01; slider2=11; slider4=46.7; slider7=10; slider8=10; slider9=5; slider15=14557; slider16=1; slider17=0.55; slider18=800; slider19=1; slider20=-20; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4345; slider66=2; slider69=6000; ) :
  idx == 58 ? ( slider1=0.91; slider2=61.8; slider4=46.7; slider7=7; slider8=1.8; slider9=5; slider15=14557; slider16=1; slider17=0.55; slider18=800; slider19=0.55; slider20=-20; slider21=2.5; slider22=2.5; slider23=5.4; slider35=200; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4345; slider66=2; slider69=6000; ) :
  idx == 59 ? ( slider1=0.41; slider2=8; slider4=67.4; slider7=3; slider8=4.3; slider9=0; slider15=12000; slider16=0; slider17=1.25; slider18=800; slider19=0.8; slider20=-3; slider21=0.9; slider22=2; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=9019; slider40=0; slider41=0.61; slider42=2362; slider43=0; slider44=0.7; slider45=18000; slider65=2603; slider66=1; slider69=7998; ) :
  idx == 60 ? ( slider1=0.46; slider2=11; slider4=44.2; slider7=1; slider8=0; slider9=1.4; slider15=12000; slider16=0; slider17=1.35; slider18=800; slider19=0.34; slider20=-1.8; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=12000; slider66=1; slider69=2708; ) :
  // --- FOLEY & DIALOG ---
  idx == 61 ? ( slider1=0.31; slider2=7.5; slider4=58.2; slider7=0; slider8=5; slider9=3; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=0; slider69=6000; ) :
  idx == 62 ? ( slider1=0.43; slider2=11; slider4=40.4; slider7=2; slider8=3.3; slider9=3.8; slider15=5000; slider16=0; slider17=0.66; slider18=800; slider19=1; slider20=0; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=4614; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=0; slider69=6000; ) :
  idx == 63 ? ( slider1=0.61; slider2=1.8; slider4=44.8; slider7=2; slider8=1.3; slider9=3.8; slider15=12105; slider16=0; slider17=0.86; slider18=800; slider19=1; slider20=-11.3; slider21=0; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=4614; slider43=0; slider44=0.7; slider45=18000; slider65=12612; slider66=0; slider69=6000; ) :
  idx == 64 ? ( slider1=0.38; slider2=11; slider4=47; slider7=1; slider8=0; slider9=1.4; slider15=14557; slider16=0; slider17=0.85; slider18=800; slider19=0.75; slider20=-1.8; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=17506; slider66=1; slider69=2708; ) :
  idx == 65 ? ( slider1=0.51; slider2=11; slider4=40.6; slider7=1; slider8=4.4; slider9=1.4; slider15=14557; slider16=0; slider17=0.85; slider18=800; slider19=0.75; slider20=-1.8; slider21=2.5; slider22=2.5; slider23=7.5; slider35=30; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=17506; slider66=1; slider69=2708; ) :
  idx == 66 ? ( slider1=0.59; slider2=4.7; slider4=43.8; slider7=1; slider8=5; slider9=5; slider15=17000; slider16=3; slider17=1.22; slider18=614; slider19=0.8; slider20=-15; slider21=6.6; slider22=9.8; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=13830; slider66=3; slider69=6000; ) :
  idx == 67 ? ( slider1=0.81; slider2=11; slider4=44.8; slider7=2; slider8=3.6; slider9=5; slider15=9000; slider16=0; slider17=0.7; slider18=1200; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=15801; slider66=2; slider69=6000; ) :
  idx == 68 ? ( slider1=0.81; slider2=11; slider4=53.8; slider7=1; slider8=3.6; slider9=7.4; slider15=11267; slider16=0; slider17=0.8; slider18=700; slider19=0.6; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=148; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7478; slider66=0; slider69=14014; ) :
  idx == 69 ? ( slider1=0.56; slider2=11; slider4=35; slider7=2; slider8=0.6; slider9=1.4; slider15=14557; slider16=0; slider17=0.85; slider18=800; slider19=1; slider20=-1.8; slider21=2.5; slider22=2.5; slider23=5.25; slider35=70; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=17506; slider66=1; slider69=2708; ) :
  idx == 70 ? ( slider1=0.56; slider2=11; slider4=35; slider7=2; slider8=0.6; slider9=1.4; slider15=14000; slider16=0; slider17=0.3; slider18=800; slider19=0.7; slider20=-15; slider21=2.5; slider22=2.5; slider23=5.25; slider35=110; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=13005; slider66=1; slider69=6000; ) :
  idx == 71 ? ( slider1=0.34; slider2=16.2; slider4=55.1; slider7=2; slider8=2.8; slider9=10; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=0.8; slider20=-8.5; slider21=10; slider22=2.5; slider23=5.1; slider35=145; slider36=500; slider37=0; slider38=0.7; slider39=9290; slider40=0; slider41=1.29; slider42=1424; slider43=0; slider44=1.5; slider45=6543; slider65=9086; slider66=3; slider69=8654; ) :
  idx == 72 ? ( slider1=0.56; slider2=37; slider4=35; slider7=5; slider8=5; slider9=10; slider15=2000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-20; slider21=7.6; slider22=2.5; slider23=7.5; slider35=140; slider36=500; slider37=0; slider38=0.7; slider39=1264; slider40=0; slider41=1; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7791; slider66=1; slider69=6000; ) :
  idx == 73 ? ( slider1=0.51; slider2=6; slider4=19.4; slider7=2; slider8=0; slider9=10; slider15=18000; slider16=0; slider17=0.6; slider18=800; slider19=0.5; slider20=-8.5; slider21=0.5; slider22=2.5; slider23=7.5; slider35=20; slider36=1077; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=14004; slider65=8117; slider66=3; slider69=8654; ) :
  idx == 74 ? ( slider1=0.51; slider2=1; slider4=19.4; slider7=2; slider8=0; slider9=10; slider15=18000; slider16=0; slider17=0.6; slider18=800; slider19=0.5; slider20=-8.5; slider21=0.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=14004; slider65=2684; slider66=3; slider69=8654; ) :
  idx == 75 ? ( slider1=0.21; slider2=11; slider4=12.9; slider7=1; slider8=1; slider9=0; slider15=12000; slider16=0; slider17=1; slider18=800; slider19=0.64; slider20=-15; slider21=0; slider22=2.5; slider23=7.5; slider35=20; slider36=300; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=12000; slider66=0; slider69=6000; ) :
  idx == 76 ? ( slider1=0.21; slider2=11; slider4=26.2; slider7=1; slider8=1; slider9=0; slider15=1300; slider16=2; slider17=1.5; slider18=800; slider19=0.4; slider20=-12; slider21=0; slider22=2.5; slider23=7.5; slider35=20; slider36=300; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=1000; slider66=2; slider69=2500; ) :
  idx == 77 ? ( slider1=0.41; slider2=11; slider4=47; slider7=1; slider8=1; slider9=1; slider15=18000; slider16=0; slider17=1.3; slider18=1000; slider19=1; slider20=-3.5; slider21=0; slider22=2.5; slider23=7.5; slider35=20; slider36=300; slider37=0; slider38=0.7; slider39=1829; slider40=0; slider41=0.6; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=0; slider69=6000; ) :
  idx == 78 ? ( slider1=0.21; slider2=41; slider4=15.2; slider7=2; slider8=3; slider9=8.5; slider15=6546; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=300; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=2854; slider66=0; slider69=6000; ) :
  idx == 79 ? ( slider1=0.21; slider2=41; slider4=15.2; slider7=2; slider8=3; slider9=8.5; slider15=1000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=300; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=1300; slider66=0; slider69=6000; ) :
  idx == 80 ? ( slider1=0.21; slider2=41; slider4=15.2; slider7=3; slider8=3; slider9=10; slider15=11501; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=300; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=2854; slider66=0; slider69=6000; ) :
  // --- STUDIO SPACES ---
  idx == 81 ? ( slider1=0.21; slider2=11; slider4=46.7; slider7=0; slider8=7.5; slider9=2.7; slider15=12230; slider16=0; slider17=1.2; slider18=450; slider19=0.5; slider20=-8; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3803; slider66=1; slider69=6000; ) :
  idx == 82 ? ( slider1=0.21; slider2=11; slider4=32.4; slider7=0; slider8=0; slider9=2.7; slider15=12230; slider16=0; slider17=1; slider18=800; slider19=1; slider20=0; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=900; slider66=3; slider69=6000; ) :
  idx == 83 ? ( slider1=0.27; slider2=11; slider4=36.4; slider7=0; slider8=0.9; slider9=0.7; slider15=12230; slider16=0; slider17=2; slider18=200; slider19=0.36; slider20=2; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7402; slider66=1; slider69=6000; ) :
  idx == 84 ? ( slider1=0.24; slider2=3.4; slider4=72.2; slider7=2; slider8=0.1; slider9=8.6; slider15=18000; slider16=0; slider17=2; slider18=1200; slider19=0.39; slider20=-11.3; slider21=2; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=1.15; slider39=3000; slider40=0; slider41=0.7; slider42=4614; slider43=0; slider44=0.7; slider45=18000; slider65=11619; slider66=1; slider69=1198; ) :
  idx == 85 ? ( slider1=0.43; slider2=1; slider4=19.4; slider7=2; slider8=2; slider9=10; slider15=12483; slider16=0; slider17=0.45; slider18=800; slider19=0.85; slider20=-8.5; slider21=0.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=14004; slider65=5000; slider66=2; slider69=8654; ) :
  idx == 86 ? ( slider1=0.31; slider2=11; slider4=32.4; slider7=1; slider8=2.2; slider9=2.7; slider15=12230; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-1.8; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7000; slider66=1; slider69=6000; ) :
  idx == 87 ? ( slider1=0.21; slider2=11; slider4=21.7; slider7=1; slider8=5; slider9=5; slider15=15480; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=2; slider69=6000; ) :
  idx == 88 ? ( slider1=0.21; slider2=11; slider4=14.9; slider7=0; slider8=1; slider9=5; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=0; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=460; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=2; slider69=6000; ) :
  idx == 89 ? ( slider1=0.21; slider2=11; slider4=33.4; slider7=0; slider8=3.2; slider9=0; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-1.8; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4000; slider66=1; slider69=6000; ) :
  idx == 90 ? ( slider1=0.21; slider2=4; slider4=31.4; slider7=0; slider8=2; slider9=0; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-2; slider21=2.5; slider22=2.5; slider23=7.5; slider35=60; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4000; slider66=1; slider69=6000; ) :
  idx == 91 ? ( slider1=0.21; slider2=4; slider4=31.4; slider7=0; slider8=2; slider9=0; slider15=5000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-2; slider21=2.5; slider22=2.5; slider23=7.5; slider35=60; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3500; slider66=0; slider69=6000; ) :
  idx == 92 ? ( slider1=0.21; slider2=11; slider4=16.1; slider7=1; slider8=1.3; slider9=0; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-1.8; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=2000; slider66=1; slider69=6000; ) :
  idx == 93 ? ( slider1=0.26; slider2=1; slider4=54.5; slider7=0; slider8=3.7; slider9=5; slider15=18000; slider16=0; slider17=2; slider18=800; slider19=0.2; slider20=-20; slider21=10; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=13275; slider66=2; slider69=2298; ) :
  idx == 94 ? ( slider1=0.51; slider2=11; slider4=43.3; slider7=2; slider8=5; slider9=5; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=2; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=2000; slider66=0; slider69=6000; ) :
  idx == 95 ? ( slider1=0.31; slider2=11; slider4=40.1; slider7=0; slider8=2.2; slider9=2.7; slider15=15000; slider16=0; slider17=1; slider18=800; slider19=0.7; slider20=-5; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=14000; slider66=1; slider69=6000; ) :
  idx == 96 ? ( slider1=0.36; slider2=5; slider4=46.3; slider7=0; slider8=0; slider9=8.8; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=0.8; slider20=-15; slider21=0; slider22=2.5; slider23=7.5; slider35=64; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=6020; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=2; slider69=6000; ) :
  idx == 97 ? ( slider1=0.21; slider2=11; slider4=0; slider7=0; slider8=0; slider9=5; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=3.75; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=2; slider69=6000; ) :
  idx == 98 ? ( slider1=0.76; slider2=1; slider4=35.1; slider7=0; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=0.85; slider20=-9; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=2; slider69=6000; ) :
  idx == 99 ? ( slider1=1.26; slider2=11; slider4=42.5; slider7=2; slider8=5; slider9=10; slider15=16300; slider16=0; slider17=0.65; slider18=1425; slider19=0.8; slider20=-12; slider21=2.58; slider22=3.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6250; slider66=3; slider69=3975; ) :
  idx == 100 ? ( slider1=0.66; slider2=1; slider4=47.5; slider7=2; slider8=5; slider9=2; slider15=16462; slider16=0; slider17=1.15; slider18=455; slider19=0.8; slider20=-2; slider21=1.6; slider22=8.7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=9100; slider66=3; slider69=2075; ) :
  // --- VAST ARCHITECTURES ---
  idx == 101 ? ( slider1=1.31; slider2=4; slider4=61.2; slider7=2; slider8=2.5; slider9=5; slider15=11000; slider16=0; slider17=1.2; slider18=800; slider19=0.8; slider20=-15; slider21=3.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=13000; slider66=0; slider69=6000; ) :
  idx == 102 ? ( slider1=4.39; slider2=26.6; slider4=54; slider7=3; slider8=9.9; slider9=6.5; slider15=3500; slider16=0; slider17=1.25; slider18=800; slider19=0.95; slider20=-15; slider21=8.1; slider22=10; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=0; slider69=6000; ) :
  idx == 103 ? ( slider1=3.31; slider2=1; slider4=45; slider7=2; slider8=5; slider9=10; slider15=20000; slider16=0; slider17=0.5; slider18=565; slider19=0.55; slider20=-13; slider21=4.84; slider22=7.6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8050; slider66=3; slider69=2825; ) :
  idx == 104 ? ( slider1=8.01; slider2=1; slider4=50; slider7=4; slider8=5; slider9=0; slider15=10200; slider16=0; slider17=0.5; slider18=765; slider19=1; slider20=-4; slider21=8.06; slider22=5.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7650; slider66=1; slider69=5525; ) :
  idx == 105 ? ( slider1=3.21; slider2=1; slider4=57.5; slider7=2; slider8=5; slider9=6; slider15=11950; slider16=0; slider17=1.3; slider18=465; slider19=0.5; slider20=-6; slider21=3.55; slider22=0.2; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5700; slider66=3; slider69=2375; ) :
  idx == 106 ? ( slider1=2.26; slider2=11; slider4=58.9; slider7=3; slider8=10; slider9=9.7; slider15=5908; slider16=0; slider17=2; slider18=440; slider19=0.74; slider20=-15; slider21=8.2; slider22=2.5; slider23=4.88; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6348; slider66=2; slider69=6000; ) :
  idx == 107 ? ( slider1=4.21; slider2=29; slider4=60.1; slider7=5; slider8=5.8; slider9=5; slider15=3650; slider16=1; slider17=1.3; slider18=800; slider19=0.7; slider20=-9; slider21=2.5; slider22=5.7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4000; slider66=2; slider69=6000; ) :
  idx == 108 ? ( slider1=4.21; slider2=29; slider4=60; slider7=5; slider8=5; slider9=5; slider15=3650; slider16=1; slider17=1.3; slider18=800; slider19=0.7; slider20=-9; slider21=2.5; slider22=5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4000; slider66=2; slider69=6000; ) :
  idx == 109 ? ( slider1=4.01; slider2=30.4; slider4=45.3; slider7=5; slider8=10; slider9=10; slider15=3200; slider16=0; slider17=0.8; slider18=762; slider19=0.51; slider20=0; slider21=10; slider22=9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8902; slider66=0; slider69=8000; ) :
  idx == 110 ? ( slider1=4.01; slider2=30.4; slider4=62.7; slider7=5; slider8=10; slider9=10; slider15=3200; slider16=0; slider17=1.71; slider18=762; slider19=0.7; slider20=0; slider21=10; slider22=2.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=13411; slider66=0; slider69=4000; ) :
  idx == 111 ? ( slider1=0.83; slider2=23; slider4=50; slider7=4; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=0.7; slider18=800; slider19=1; slider20=-9; slider21=2.5; slider22=4; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=2; slider69=6000; ) :
  idx == 112 ? ( slider1=4.01; slider2=1; slider4=52.5; slider7=2; slider8=5; slider9=10; slider15=5600; slider16=0; slider17=2; slider18=425; slider19=0.6; slider20=-5; slider21=5.81; slider22=1.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3700; slider66=3; slider69=1425; ) :
  idx == 113 ? ( slider1=3.91; slider2=1; slider4=52.5; slider7=2; slider8=5; slider9=10; slider15=14250; slider16=0; slider17=1.1; slider18=265; slider19=0.6; slider20=-4; slider21=3.87; slider22=3.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5100; slider66=3; slider69=1225; ) :
  idx == 114 ? ( slider1=10.01; slider2=30.4; slider4=50; slider7=1; slider8=10; slider9=10; slider15=15963; slider16=0; slider17=2.5; slider18=300; slider19=0.7; slider20=-5; slider21=6; slider22=2.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5000; slider66=0; slider69=4000; ) :
  idx == 115 ? ( slider1=5.81; slider2=237; slider4=37.5; slider7=6; slider8=9.4; slider9=10; slider15=2684; slider16=0; slider17=1; slider18=465; slider19=0.2; slider20=-15; slider21=9.68; slider22=8.8; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=1800; slider66=1; slider69=1925; ) :
  idx == 116 ? ( slider1=1.21; slider2=6; slider4=45.6; slider7=3; slider8=1.9; slider9=7.7; slider15=12523; slider16=0; slider17=1.1; slider18=800; slider19=0.8; slider20=-15; slider21=7.9; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=13635; slider66=0; slider69=6000; ) :
  idx == 117 ? ( slider1=2.11; slider2=151; slider4=37.5; slider7=4; slider8=5; slider9=8; slider15=1950; slider16=0; slider17=1; slider18=975; slider19=0.7; slider20=-9; slider21=8.71; slider22=1.1; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=1800; slider66=1; slider69=1925; ) :
  idx == 118 ? ( slider1=5.01; slider2=1; slider4=55; slider7=4; slider8=5; slider9=8; slider15=16462; slider16=0; slider17=1.15; slider18=795; slider19=0.7; slider20=-12; slider21=4.5; slider22=10; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3350; slider66=1; slider69=2325; ) :
  idx == 119 ? ( slider1=5.11; slider2=1; slider4=67.5; slider7=2; slider8=5; slider9=10; slider15=11900; slider16=0; slider17=2; slider18=175; slider19=0.65; slider20=0; slider21=4.84; slider22=6.8; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=3650; slider66=3; slider69=775; ) :
  idx == 120 ? ( slider1=8.89; slider2=1; slider4=58.7; slider7=9; slider8=5; slider9=10; slider15=2164; slider16=1; slider17=2; slider18=255; slider19=0.3; slider20=-6; slider21=9.7; slider22=7.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=7700; slider66=3; slider69=5000; ) :
  // --- RECORDING ROOMS ---
  idx == 121 ? ( slider1=0.58; slider2=11; slider4=31.3; slider7=1; slider8=5; slider9=5; slider15=10000; slider16=0; slider17=1; slider18=800; slider19=0.76; slider20=-12.5; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=9000; slider66=1; slider69=8000; ) :
  idx == 122 ? ( slider1=0.76; slider2=11; slider4=31.3; slider7=1; slider8=5; slider9=5; slider15=10000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=12000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=1; slider69=6000; ) :
  idx == 123 ? ( slider1=0.96; slider2=11; slider4=38.3; slider7=3; slider8=2.2; slider9=8.8; slider15=16000; slider16=0; slider17=1; slider18=800; slider19=0.79; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=600; slider40=0; slider41=0.7; slider42=8500; slider43=0; slider44=0.7; slider45=18000; slider65=13973; slider66=0; slider69=6000; ) :
  idx == 124 ? ( slider1=1.01; slider2=11; slider4=29.2; slider7=2; slider8=2.6; slider9=5; slider15=11000; slider16=1; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=266; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5000; slider66=1; slider69=6000; ) :
  idx == 125 ? ( slider1=1.59; slider2=1; slider4=44.3; slider7=2; slider8=5; slider9=5; slider15=12000; slider16=0; slider17=1.33; slider18=500; slider19=1; slider20=-7; slider21=8.3; slider22=2.5; slider23=7.5; slider35=40; slider36=230; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=6000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=2; slider69=6000; ) :
  idx == 126 ? ( slider1=0.76; slider2=11; slider4=24.3; slider7=1; slider8=3.3; slider9=2.9; slider15=12105; slider16=0; slider17=1.1; slider18=800; slider19=0.85; slider20=-12; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=2; slider69=6000; ) :
  idx == 127 ? ( slider1=2.01; slider2=11; slider4=38.3; slider7=3; slider8=2.2; slider9=8.8; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=18000; slider66=0; slider69=6000; ) :
  idx == 128 ? ( slider1=0.76; slider2=11; slider4=50; slider7=2; slider8=4.2; slider9=2.7; slider15=8000; slider16=0; slider17=1.1; slider18=800; slider19=0.85; slider20=-12; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=11000; slider66=1; slider69=6000; ) :
  idx == 129 ? ( slider1=0.71; slider2=11; slider4=55.1; slider7=3; slider8=7.4; slider9=5; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=1208; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=0; slider69=6000; ) :
  idx == 130 ? ( slider1=0.56; slider2=11; slider4=25.1; slider7=0; slider8=4.6; slider9=3.3; slider15=7000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-12.5; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=12000; slider66=1; slider69=8000; ) :
  idx == 131 ? ( slider1=0.81; slider2=7; slider4=55.1; slider7=1; slider8=6; slider9=6.6; slider15=18000; slider16=0; slider17=0.7; slider18=800; slider19=1; slider20=-11.2; slider21=0; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=11619; slider66=1; slider69=6000; ) :
  idx == 132 ? ( slider1=0.81; slider2=19; slider4=50; slider7=2; slider8=5; slider9=5; slider15=18000; slider16=0; slider17=0.8; slider18=800; slider19=1; slider20=-15; slider21=4; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=6002; slider43=0; slider44=0.7; slider45=18000; slider65=14000; slider66=0; slider69=6000; ) :
  idx == 133 ? ( slider1=0.91; slider2=17; slider4=50; slider7=2; slider8=5; slider9=5; slider15=18000; slider16=0; slider17=1.5; slider18=800; slider19=0.7; slider20=-15; slider21=2; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=4000; slider43=0; slider44=0.7; slider45=18000; slider65=10487; slider66=0; slider69=6000; ) :
  idx == 134 ? ( slider1=1.61; slider2=18.7; slider4=47.1; slider7=1; slider8=2.8; slider9=3.9; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=0.6; slider20=-15; slider21=5.2; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=2224; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=5908; slider66=1; slider69=6000; ) :
  idx == 135 ? ( slider1=1.91; slider2=21; slider4=45.1; slider7=2; slider8=5; slider9=5; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=0.7; slider20=-4; slider21=3; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=5000; slider43=0; slider44=0.7; slider45=18000; slider65=10487; slider66=0; slider69=6000; ) :
  idx == 136 ? ( slider1=1.66; slider2=13; slider4=56.3; slider7=2; slider8=3.8; slider9=7.8; slider15=15000; slider16=3; slider17=1.2; slider18=600; slider19=0.85; slider20=-4; slider21=2; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=4000; slider43=0; slider44=0.7; slider45=18000; slider65=10487; slider66=1; slider69=6000; ) :
  idx == 137 ? ( slider1=1.91; slider2=26.9; slider4=56.6; slider7=3; slider8=5; slider9=5; slider15=6700; slider16=0; slider17=1; slider18=800; slider19=0.7; slider20=-4; slider21=5.5; slider22=6.8; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=5000; slider43=0; slider44=0.7; slider45=18000; slider65=6000; slider66=0; slider69=6000; ) :
  idx == 138 ? ( slider1=1.11; slider2=35.7; slider4=42; slider7=2; slider8=8.8; slider9=5; slider15=18000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=3.6; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=10000; slider66=0; slider69=6000; ) :
  idx == 139 ? ( slider1=0.76; slider2=11; slider4=43; slider7=3; slider8=5; slider9=8.6; slider15=9000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-20; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=786; slider40=0; slider41=0.7; slider42=4344; slider43=0; slider44=0.7; slider45=18000; slider65=9000; slider66=0; slider69=6000; ) :
  // --- OVERSTRATUM SIGNATURES ---
  idx == 140 ? ( slider1=1.31; slider2=3; slider4=53.8; slider7=2; slider8=2.5; slider9=5; slider15=9000; slider16=1; slider17=0.9; slider18=488; slider19=0.75; slider20=-15; slider21=0; slider22=2.3; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=11000; slider66=0; slider69=6000; ) :
  idx == 141 ? ( slider1=3.91; slider2=21; slider4=55.5; slider7=2; slider8=5; slider9=10; slider15=11000; slider16=1; slider17=2.5; slider18=3207; slider19=0.28; slider20=-15; slider21=10; slider22=2.5; slider23=7.5; slider35=20; slider36=982; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4345; slider66=0; slider69=6000; ) :
  idx == 142 ? ( slider1=4.67; slider2=36; slider4=56.2; slider7=7; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=0.7; slider18=800; slider19=0.85; slider20=-18; slider21=2.5; slider22=5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=2; slider69=6000; ) :
  idx == 143 ? ( slider1=2.46; slider2=1; slider4=47.5; slider7=0; slider8=5; slider9=2; slider15=5850; slider16=0; slider17=1.2; slider18=1525; slider19=0.8; slider20=-3; slider21=0.32; slider22=5.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4950; slider66=1; slider69=2425; ) :
  idx == 144 ? ( slider1=5.01; slider2=1; slider4=55; slider7=4; slider8=5; slider9=8; slider15=11750; slider16=0; slider17=1.15; slider18=105; slider19=0.65; slider20=-12; slider21=5.48; slider22=9.7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4150; slider66=1; slider69=2725; ) :
  idx == 145 ? ( slider1=3.71; slider2=23; slider4=69.9; slider7=6; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=0.7; slider20=-5; slider21=6; slider22=9.9; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=16128; slider66=1; slider69=4000; ) :
  idx == 146 ? ( slider1=4.01; slider2=39.6; slider4=54.8; slider7=6; slider8=7.5; slider9=7.3; slider15=10267; slider16=1; slider17=1.1; slider18=800; slider19=0.95; slider20=-15; slider21=9.2; slider22=7.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=12000; slider66=1; slider69=6000; ) :
  idx == 147 ? ( slider1=3.01; slider2=11; slider4=58.1; slider7=2; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=1.4; slider18=800; slider19=0.7; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=1380; slider43=0; slider44=0.7; slider45=18000; slider65=9000; slider66=2; slider69=6000; ) :
  idx == 148 ? ( slider1=5.41; slider2=1; slider4=52.5; slider7=2; slider8=5; slider9=7; slider15=16850; slider16=0; slider17=1; slider18=925; slider19=0.7; slider20=-9; slider21=6.45; slider22=9.6; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=4850; slider66=3; slider69=1025; ) :
  idx == 149 ? ( slider1=7.76; slider2=46; slider4=62.5; slider7=7; slider8=5; slider9=5; slider15=6000; slider16=0; slider17=1.3; slider18=800; slider19=0.85; slider20=-15; slider21=2.5; slider22=7; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=2; slider69=6000; ) :
  idx == 150 ? ( // Concert Hall
      slider1=2.27; slider2=10; slider4=50; slider7=2; slider8=5; slider9=5; slider15=8000; slider16=0; slider17=1; slider18=800; slider19=1; slider20=-15; slider21=2.5; slider22=2.5; slider23=7.5; slider35=20; slider36=500; slider37=0; slider38=0.7; slider39=3000; slider40=0; slider41=0.7; slider42=8000; slider43=0; slider44=0.7; slider45=18000; slider65=8000; slider66=2; slider69=6000; ) :
  "Default";

  sliderchange(0xFFFFFFFF);
);

@slider

@block
slider10 = floor(slider10 + 0.5); slider24 = floor(slider24 + 0.5); slider34 = floor(slider34 + 0.5);
slider46 = floor(slider46 + 0.5); slider47 = floor(slider47 + 0.5); slider54 = floor(slider54 + 0.5);
slider55 = floor(slider55 + 0.5); slider67 = floor(slider67 + 0.5);

cr_eq_hash = slider34+slider35+slider36+slider37+slider38+slider39+slider40+slider41+slider42+slider43+slider44+slider45;
cr_eq_hash != cr_last_eq_hash ? (
  calc_biquad(0, slider35, 0.707, 0, 0); calc_biquad(1, slider36, slider38, slider37, 5);
  calc_biquad(2, slider39, slider41, slider40, 10); calc_biquad(3, slider42, slider44, slider43, 15);
  calc_biquad(4, slider45, 0.707, 0, 20); cr_last_eq_hash = cr_eq_hash;
);

cr_buf_ptr = 1800000; cr_buf_s = ceil(srate * 2.0);
pd_buf_l = cr_buf_ptr; cr_buf_ptr += cr_buf_s; pd_buf_r = cr_buf_ptr; cr_buf_ptr += cr_buf_s;
er_buf_l = cr_buf_ptr; cr_buf_ptr += cr_buf_s; er_buf_r = cr_buf_ptr; cr_buf_ptr += cr_buf_s;
cr_echo_buf_l = cr_buf_ptr; cr_buf_ptr += cr_buf_s; cr_echo_buf_r = cr_buf_ptr; cr_buf_ptr += cr_buf_s;
cr_xf_er_buf_l = cr_buf_ptr; cr_buf_ptr += cr_buf_s; cr_xf_er_buf_r = cr_buf_ptr; cr_buf_ptr += cr_buf_s;
cr_xf_rv_buf_l = cr_buf_ptr; cr_buf_ptr += cr_buf_s; cr_xf_rv_buf_r = cr_buf_ptr; cr_buf_ptr += cr_buf_s;

cr_tap_tL = cr_buf_ptr; cr_buf_ptr += 32;
cr_tap_tR = cr_buf_ptr; cr_buf_ptr += 32;
cr_tap_g  = cr_buf_ptr; cr_buf_ptr += 32;

t_rt60 = slider1; t_predelay = slider2; t_mix = slider4 / 100; t_wet = slider5 / 100; t_gain = db2lin(slider6);
t_er_size = slider8 / 100; t_er_refl = slider9 / 100; 
t_rv_bass = max(slider17, 0.01); t_rv_contour = slider18; t_rv_treble = max(slider19, 0.01);
t_rv_mod = slider23 / 100; cr_dyn_en = slider46; cr_gate_en = slider54; 

smooth_cf = 1 - exp(-1 / (0.05 * srate)); 
overallscale = 1.0 / 44100.0 * srate;
cycleEnd = floor(overallscale) | 0; cycleEnd = min(max(cycleEnd, 1), 4);
(cycle > cycleEnd-1) ? cycle = cycleEnd-1; 

size = cr_late_size;

cr_legacy_rt == 1 ? (
  regen_b = 0.0625 + (1.0 - exp(-(t_rt60 * t_rv_bass) / 4.0)) * 0.0625;
  regen_t = 0.0625 + (1.0 - exp(-(t_rt60 * t_rv_treble) / 4.0)) * 0.0625;
  regen_b = min(regen_b, 0.1249); regen_t = min(regen_t, 0.1249);
) : (
  cr_tloop = 7858.5 * size * cycleEnd / srate;
  regen_b = min(pow(10, (-3.0 * cr_tloop) / (t_rt60 * t_rv_bass)) / 8.0, 0.1249);
  regen_m = min(pow(10, (-3.0 * cr_tloop) / (t_rt60 * 1.0)) / 8.0, 0.1249); // Mittenband
  regen_t = min(pow(10, (-3.0 * cr_tloop) / (t_rt60 * t_rv_treble)) / 8.0, 0.1249);
);

t_attenuate = 0.5; 
t_fb_bass_c = 1.0 - exp(-2.0 * 3.14159265 * min(slider18, srate*0.45) * cycleEnd / srate);
t_fb_treb_c = 1.0 - exp(-2.0 * 3.14159265 * min(slider69, srate*0.45) * cycleEnd / srate);
delayI = 3407.0*size | 0; delayJ = 1823.0*size | 0; delayK = 859.0*size | 0; delayL = 331.0*size | 0;
delayA = 4801.0*size | 0; delayB = 2909.0*size | 0; delayC = 1153.0*size | 0; delayD = 461.0*size | 0;
delayE = 7607.0*size | 0; delayF = 4217.0*size | 0; delayG = 2269.0*size | 0; delayH = 1597.0*size | 0;
delayM = 256;

cr_seed != slider63 ? ( cr_seed = slider63; sliderchange(63); );

m_in = 20 * log10(max(m_in_lin, 0.00001)); m_out = 20 * log10(max(m_out_lin, 0.00001));
m_er = 20 * log10(max(m_er_lin, 0.00001)); m_rv = 20 * log10(max(m_rv_lin, 0.00001));

cr_lfo_rate = slider24 == 0 ? 0.5 : (slider24 == 1 ? 1.2 : 0.8);
cr_lfo_inc = (cr_lfo_rate * 2.0 * 3.14159 * cycleEnd) / srate;
cr_rv_mod_depth = t_rv_mod * 127.0;

cr_er_n = slider10 == 0 ? 5 : 12;
i = 0; while (i < cr_er_n) (
  cr_tf = i / max(cr_er_n - 1, 1);
  cr_t_base_l = slider10 == 0 ? (i==0?13:i==1?31:i==2?47:i==3?71:103) : (10.0 + cr_tf * 90.0);
  cr_t_base_r = slider10 == 0 ? (i==0?17:i==1?37:i==2?53:i==3?79:107) : (15.0 + cr_tf * 85.0);
  cr_g_base = slider10 == 0 ? (1.0 - i*0.2) : (slider10 == 1 ? 1.0 : (slider10 == 2 ? sin(cr_tf*3.14) : (slider10 == 3 ? 1.0 - cr_tf : cr_tf)));
  
  cr_prox_off = (slider7 - 2) * 5.0 * cr_tf; 
  cr_tap_tL[i] = cr_t_base_l + cr_prox_off;
  cr_tap_tR[i] = cr_t_base_r + cr_prox_off;
  cr_tap_g[i] = cr_g_base * pow(t_er_refl, i*0.5);
  i += 1;
);

@sample
init_smoothing == 1 ? (
  p_mix = t_mix; p_wet = t_wet; p_gain = t_gain; p_er_size = t_er_size; p_pd = t_predelay; 
  p_reg_b = regen_b; p_reg_t = regen_t; p_att = t_attenuate; fb_lp_c = t_fb_lp_c;
  
  cr_tc_fast_atk = 1.0 - exp(-1.0 / (0.001 * srate));
  cr_tc_fast_rel = 1.0 - exp(-1.0 / (0.015 * srate));
  cr_env_tc_slow = 1.0 - exp(-1.0 / (0.050 * srate));
  cr_gain_atk = 1.0 - exp(-1.0 / (0.002 * srate));
  cr_gain_rel = 1.0 - exp(-1.0 / (0.100 * srate));
  duck_atk_coeff = 1.0 - exp(-1.0 / (10.0 * 0.001 * srate));
  duck_rel_coeff = 1.0 - exp(-1.0 / (300.0 * 0.001 * srate));
  
  init_smoothing = 0;
);

p_mix += (t_mix - p_mix) * smooth_cf; p_wet += (t_wet - p_wet) * smooth_cf;
p_gain += (t_gain - p_gain) * smooth_cf; p_er_size += (t_er_size - p_er_size) * smooth_cf;
p_pd += (t_predelay - p_pd) * smooth_cf; p_reg_b += (regen_b - p_reg_b) * smooth_cf;
p_reg_m += (regen_m - p_reg_m) * smooth_cf;
p_reg_t += (regen_t - p_reg_t) * smooth_cf; p_att += (t_attenuate - p_att) * smooth_cf;
fb_bass_c += (t_fb_bass_c - fb_bass_c) * smooth_cf;
fb_treb_c += (t_fb_treb_c - fb_treb_c) * smooth_cf;

in_l = spl0 + 0.0000000001; in_l -= 0.0000000001; in_r = spl1 + 0.0000000001; in_r -= 0.0000000001; 
dry_l = in_l; dry_r = in_r;
cr_side_l = spl2; cr_side_r = spl3;

cr_gate_en == 1 ? (
  cr_gate_src = slider55 == 1 ? max(abs(in_l),abs(in_r)) : (slider55 == 2 ? max(abs(cr_side_l),abs(cr_side_r)) : 0);
  cr_gate_src_db = 20 * log10(max(cr_gate_src, 0.00001));
  cr_gate_env = cr_gate_src_db > slider56 ? 1.0 : (cr_gate_src_db < (slider56 - slider57) ? 0.0 : cr_gate_env);
  cr_gate_g = cr_gate_g + (cr_gate_env - cr_gate_g) * (cr_gate_env > cr_gate_g ? (1.0 - exp(-1.0/(slider60*0.001*srate))) : (1.0 - exp(-1.0/(slider59*0.001*srate))));
  cr_gate_lin = db2lin(slider61 + (0 - slider61)*cr_gate_g);
  in_l *= cr_gate_lin; in_r *= cr_gate_lin;
);

pd_len_samps = (p_pd / 1000.0) * srate;
pd_buf_l[g_idx] = in_l; pd_buf_r[g_idx] = in_r;
pd_l = delay_read_lin(pd_buf_l, cr_buf_s, g_idx, pd_len_samps);
pd_r = delay_read_lin(pd_buf_r, cr_buf_s, g_idx, pd_len_samps);

cr_sig_abs = max(abs(pd_l), abs(pd_r));

cr_sig_abs > cr_env_fast ? cr_env_fast += (cr_sig_abs - cr_env_fast) * cr_tc_fast_atk : cr_env_fast += (cr_sig_abs - cr_env_fast) * cr_tc_fast_rel;
cr_env_slow_lp += (cr_sig_abs - cr_env_slow_lp) * cr_env_tc_slow;

cr_ratio = (cr_env_fast + 0.000001) / (cr_env_slow_lp + 0.000001);
cr_tgt_gain = 0.5 + 0.5 * max(min((cr_ratio - 1.5) * 0.666, 1.0), 0.0);
cr_tgt_gain > cr_er_gain ? cr_er_gain += (cr_tgt_gain - cr_er_gain) * cr_gain_atk : cr_er_gain += (cr_tgt_gain - cr_er_gain) * cr_gain_rel;

er_buf_l[g_idx] = pd_l * cr_er_gain; 
er_buf_r[g_idx] = pd_r * cr_er_gain;

er_sum_l = 0; er_sum_r = 0; i = 0;
while (i < cr_er_n) (
  er_sum_l += delay_read_lin(er_buf_l, cr_buf_s, g_idx, (cr_tap_tL[i] * p_er_size / 1000.0) * srate) * cr_tap_g[i];
  er_sum_r += delay_read_lin(er_buf_r, cr_buf_s, g_idx, (cr_tap_tR[i] * p_er_size / 1000.0) * srate) * cr_tap_g[i];
  i += 1;
);
slider12 != 100 ? ( cr_mid = (er_sum_l+er_sum_r)/2; cr_sid = (er_sum_l-er_sum_r)/2 * (slider12/100); er_sum_l = cr_mid+cr_sid; er_sum_r = cr_mid-cr_sid; );
er_w = 2.0 * 3.14159 * slider15 / srate; er_a = exp(-er_w);
er_lp1_l = er_lp1_l * er_a + er_sum_l * (1.0 - er_a); er_lp1_r = er_lp1_r * er_a + er_sum_r * (1.0 - er_a);
er_out_l = er_lp1_l; er_out_r = er_lp1_r;
slider16 >= 1 ? ( er_lp2_l = er_lp2_l * er_a + er_out_l * (1.0 - er_a); er_lp2_r = er_lp2_r * er_a + er_out_r * (1.0 - er_a); er_out_l = er_lp2_l; er_out_r = er_lp2_r; );
slider16 >= 2 ? ( er_lp3_l = er_lp3_l * er_a + er_out_l * (1.0 - er_a); er_lp3_r = er_lp3_r * er_a + er_out_r * (1.0 - er_a); er_out_l = er_lp3_l; er_out_r = er_lp3_r; );
slider16 == 3 ? ( er_lp4_l = er_lp4_l * er_a + er_out_l * (1.0 - er_a); er_lp4_r = er_lp4_r * er_a + er_out_r * (1.0 - er_a); er_out_l = er_lp4_l; er_out_r = er_lp4_r; );
er_out_l *= 0.25; er_out_r *= 0.25;

slider25 > 0 ? (
  cr_echo_buf_l[g_idx] = pd_l; cr_echo_buf_r[g_idx] = pd_r;
  cr_echo_l = delay_read_lin(cr_echo_buf_l, cr_buf_s, g_idx, (slider26/1000.0)*srate);
  cr_echo_r = delay_read_lin(cr_echo_buf_r, cr_buf_s, g_idx, (slider26/1000.0)*srate);
  cr_echo_lp_c = 1.0 - exp(-2.0*3.14159*slider27/srate);
  cr_elp_l += cr_echo_lp_c * (cr_echo_l - cr_elp_l); cr_elp_r += cr_echo_lp_c * (cr_echo_r - cr_elp_r);
  cr_echo_in_l = cr_elp_l * (slider25/100.0); cr_echo_in_r = cr_elp_r * (slider25/100.0);
) : ( cr_echo_in_l = 0; cr_echo_in_r = 0; );

inputSampleL = pd_l + cr_echo_in_l; inputSampleR = pd_r + cr_echo_in_r;
slider21 > 0 ? ( cr_bl = 1.0 - exp(-1.0/((slider21/100.0)*1.0*srate)); cr_bl_env += cr_bl * (1.0 - cr_bl_env); inputSampleL *= cr_bl_env; inputSampleR *= cr_bl_env; ) : ( cr_bl_env = 1.0; );

cr_vibM += cr_lfo_inc; cr_vibM > (3.14159*2.0) ? cr_vibM -= (3.14159*2.0);
aML[countM] = inputSampleL * p_att; aMR[countM] = inputSampleR * p_att;
countM+=1; (countM < 0 || countM > delayM) ? countM = 0;
offsetML = (sin(cr_vibM) * cr_rv_mod_depth) + 127.0; offsetMR = (sin(cr_vibM+(3.14159265/2.0)) * cr_rv_mod_depth) + 127.0;
workingML = countM + offsetML | 0; workingMR = countM + offsetMR | 0;
interpolML = (aML[workingML-((workingML > delayM)?delayM+1:0)] * (1-(offsetML-floor(offsetML))));
interpolML += (aML[workingML+1-((workingML+1 > delayM)?delayM+1:0)] * ((offsetML-floor(offsetML))) );
interpolMR = (aMR[workingMR-((workingMR > delayM)?delayM+1:0)] * (1-(offsetMR-floor(offsetMR))));
interpolMR += (aMR[workingMR+1-((workingMR+1 > delayM)?delayM+1:0)] * ((offsetMR-floor(offsetMR))) );
inputSampleL = interpolML; inputSampleR = interpolMR;

cr_und = slider22 > 0 ? (1.0 + sin(cr_vibM*0.1)*(slider22/100.0)*0.05) : 1.0;

cycle+=1;
(cycle == cycleEnd) ? ( 
  fb_b_AL += fb_bass_c * (feedbackAR - fb_b_AL); fb_t_lp_AL += fb_treb_c * (feedbackAR - fb_t_lp_AL); fb_t_AL = feedbackAR - fb_t_lp_AL; fb_m_AL = feedbackAR - fb_b_AL - fb_t_AL;
  fb_shaped_AL = (fb_b_AL * p_reg_b * cr_und) + (fb_m_AL * p_reg_m * cr_und) + (fb_t_AL * p_reg_t);
  fb_b_BL += fb_bass_c * (feedbackBR - fb_b_BL); fb_t_lp_BL += fb_treb_c * (feedbackBR - fb_t_lp_BL); fb_t_BL = feedbackBR - fb_t_lp_BL; fb_m_BL = feedbackBR - fb_b_BL - fb_t_BL;
  fb_shaped_BL = (fb_b_BL * p_reg_b * cr_und) + (fb_m_BL * p_reg_m * cr_und) + (fb_t_BL * p_reg_t);
  fb_b_CL += fb_bass_c * (feedbackCR - fb_b_CL); fb_t_lp_CL += fb_treb_c * (feedbackCR - fb_t_lp_CL); fb_t_CL = feedbackCR - fb_t_lp_CL; fb_m_CL = feedbackCR - fb_b_CL - fb_t_CL;
  fb_shaped_CL = (fb_b_CL * p_reg_b * cr_und) + (fb_m_CL * p_reg_m * cr_und) + (fb_t_CL * p_reg_t);
  fb_b_DL += fb_bass_c * (feedbackDR - fb_b_DL); fb_t_lp_DL += fb_treb_c * (feedbackDR - fb_t_lp_DL); fb_t_DL = feedbackDR - fb_t_lp_DL; fb_m_DL = feedbackDR - fb_b_DL - fb_t_DL;
  fb_shaped_DL = (fb_b_DL * p_reg_b * cr_und) + (fb_m_DL * p_reg_m * cr_und) + (fb_t_DL * p_reg_t);

  fb_b_AR += fb_bass_c * (feedbackAL - fb_b_AR); fb_t_lp_AR += fb_treb_c * (feedbackAL - fb_t_lp_AR); fb_t_AR = feedbackAL - fb_t_lp_AR; fb_m_AR = feedbackAL - fb_b_AR - fb_t_AR;
  fb_shaped_AR = (fb_b_AR * p_reg_b * cr_und) + (fb_m_AR * p_reg_m * cr_und) + (fb_t_AR * p_reg_t);
  fb_b_BR += fb_bass_c * (feedbackBL - fb_b_BR); fb_t_lp_BR += fb_treb_c * (feedbackBL - fb_t_lp_BR); fb_t_BR = feedbackBL - fb_t_lp_BR; fb_m_BR = feedbackBL - fb_b_BR - fb_t_BR;
  fb_shaped_BR = (fb_b_BR * p_reg_b * cr_und) + (fb_m_BR * p_reg_m * cr_und) + (fb_t_BR * p_reg_t);
  fb_b_CR += fb_bass_c * (feedbackCL - fb_b_CR); fb_t_lp_CR += fb_treb_c * (feedbackCL - fb_t_lp_CR); fb_t_CR = feedbackCL - fb_t_lp_CR; fb_m_CR = feedbackCL - fb_b_CR - fb_t_CR;
  fb_shaped_CR = (fb_b_CR * p_reg_b * cr_und) + (fb_m_CR * p_reg_m * cr_und) + (fb_t_CR * p_reg_t);
  fb_b_DR += fb_bass_c * (feedbackDL - fb_b_DR); fb_t_lp_DR += fb_treb_c * (feedbackDL - fb_t_lp_DR); fb_t_DR = feedbackDL - fb_t_lp_DR; fb_m_DR = feedbackDL - fb_b_DR - fb_t_DR;
  fb_shaped_DR = (fb_b_DR * p_reg_b * cr_und) + (fb_m_DR * p_reg_m * cr_und) + (fb_t_DR * p_reg_t);  aIL[countI] = inputSampleL + fb_shaped_AL; aJL[countJ] = inputSampleL + fb_shaped_BL;
  aKL[countK] = inputSampleL + fb_shaped_CL; aLL[countL] = inputSampleL + fb_shaped_DL;
  aIR[countI] = inputSampleR + fb_shaped_AR; aJR[countJ] = inputSampleR + fb_shaped_BR;
  aKR[countK] = inputSampleR + fb_shaped_CR; aLR[countL] = inputSampleR + fb_shaped_DR;
  
  countI+=1; (countI < 0 || countI > delayI) ? countI = 0; countJ+=1; (countJ < 0 || countJ > delayJ) ? countJ = 0;
  countK+=1; (countK < 0 || countK > delayK) ? countK = 0; countL+=1; (countL < 0 || countL > delayL) ? countL = 0;
  
  outIL = aIL[countI-((countI > delayI)?delayI+1:0)]; outJL = aJL[countJ-((countJ > delayJ)?delayJ+1:0)];
  outKL = aKL[countK-((countK > delayK)?delayK+1:0)]; outLL = aLL[countL-((countL > delayL)?delayL+1:0)];
  outIR = aIR[countI-((countI > delayI)?delayI+1:0)]; outJR = aJR[countJ-((countJ > delayJ)?delayJ+1:0)];
  outKR = aKR[countK-((countK > delayK)?delayK+1:0)]; outLR = aLR[countL-((countL > delayL)?delayL+1:0)];
  
  aAL[countA] = (outIL - (outJL + outKL + outLL)); aBL[countB] = (outJL - (outIL + outKL + outLL));
  aCL[countC] = (outKL - (outIL + outJL + outLL)); aDL[countD] = (outLL - (outIL + outJL + outKL));
  aAR[countA] = (outIR - (outJR + outKR + outLR)); aBR[countB] = (outJR - (outIR + outKR + outLR));
  aCR[countC] = (outKR - (outIR + outJR + outLR)); aDR[countD] = (outLR - (outIR + outJR + outKR));
  
  countA+=1; (countA < 0 || countA > delayA) ? countA = 0; countB+=1; (countB < 0 || countB > delayB) ? countB = 0;
  countC+=1; (countC < 0 || countC > delayC) ? countC = 0; countD+=1; (countD < 0 || countD > delayD) ? countD = 0;
  
  outAL = aAL[countA-((countA > delayA)?delayA+1:0)]; outBL = aBL[countB-((countB > delayB)?delayB+1:0)];
  outCL = aCL[countC-((countC > delayC)?delayC+1:0)]; outDL = aDL[countD-((countD > delayD)?delayD+1:0)];
  outAR = aAR[countA-((countA > delayA)?delayA+1:0)]; outBR = aBR[countB-((countB > delayB)?delayB+1:0)];
  outCR = aCR[countC-((countC > delayC)?delayC+1:0)]; outDR = aDR[countD-((countD > delayD)?delayD+1:0)];
  
  aEL[countE] = (outAL - (outBL + outCL + outDL)); aFL[countF] = (outBL - (outAL + outCL + outDL));
  aGL[countG] = (outCL - (outAL + outBL + outDL)); aHL[countH] = (outDL - (outAL + outBL + outCL));
  aER[countE] = (outAR - (outBR + outCR + outDR)); aFR[countF] = (outBR - (outAR + outCR + outDR));
  aGR[countG] = (outCR - (outAR + outBR + outDR)); aHR[countH] = (outDR - (outAR + outBR + outCR));
  
  countE+=1; (countE < 0 || countE > delayE) ? countE = 0; countF+=1; (countF < 0 || countF > delayF) ? countF = 0;
  countG+=1; (countG < 0 || countG > delayG) ? countG = 0; countH+=1; (countH < 0 || countH > delayH) ? countH = 0;
  
  outEL = aEL[countE-((countE > delayE)?delayE+1:0)]; outFL = aFL[countF-((countF > delayF)?delayF+1:0)];
  outGL = aGL[countG-((countG > delayG)?delayG+1:0)]; outHL = aHL[countH-((countH > delayH)?delayH+1:0)];
  outER = aER[countE-((countE > delayE)?delayE+1:0)]; outFR = aFR[countF-((countF > delayF)?delayF+1:0)];
  outGR = aGR[countG-((countG > delayG)?delayG+1:0)]; outHR = aHR[countH-((countH > delayH)?delayH+1:0)];
  
  feedbackAL = (outEL - (outFL + outGL + outHL)); feedbackBL = (outFL - (outEL + outGL + outHL));
  feedbackCL = (outGL - (outEL + outFL + outHL)); feedbackDL = (outHL - (outEL + outFL + outGL));
  feedbackAR = (outER - (outFR + outGR + outHR)); feedbackBR = (outFR - (outER + outGR + outHR));
  feedbackCR = (outGR - (outER + outFR + outHR)); feedbackDR = (outHR - (outER + outFR + outGR));
  
  inputSampleL = (outEL + outFL + outGL + outHL)/8.0; inputSampleR = (outER + outFR + outGR + outHR)/8.0;
  
  (cycleEnd == 4) ? (
    lastRefL[0] = lastRefL[4]; lastRefL[2] = (lastRefL[0] + inputSampleL)/2; lastRefL[1] = (lastRefL[0] + lastRefL[2])/2; 
    lastRefL[3] = (lastRefL[2] + inputSampleL)/2; lastRefL[4] = inputSampleL; 
    lastRefR[0] = lastRefR[4]; lastRefR[2] = (lastRefR[0] + inputSampleR)/2; lastRefR[1] = (lastRefR[0] + lastRefR[2])/2; 
    lastRefR[3] = (lastRefR[2] + inputSampleR)/2; lastRefR[4] = inputSampleR; 
  );
  (cycleEnd == 3) ? (
    lastRefL[0] = lastRefL[3]; lastRefL[2] = (lastRefL[0]+lastRefL[0]+inputSampleL)/3; lastRefL[1] = (lastRefL[0]+inputSampleL+inputSampleL)/3; lastRefL[3] = inputSampleL; 
    lastRefR[0] = lastRefR[3]; lastRefR[2] = (lastRefR[0]+lastRefR[0]+inputSampleR)/3; lastRefR[1] = (lastRefR[0]+inputSampleR+inputSampleR)/3; lastRefR[3] = inputSampleR; 
  );
  (cycleEnd == 2) ? (
    lastRefL[0] = lastRefL[2]; lastRefL[1] = (lastRefL[0] + inputSampleL)/2; lastRefL[2] = inputSampleL; 
    lastRefR[0] = lastRefR[2]; lastRefR[1] = (lastRefR[0] + inputSampleR)/2; lastRefR[2] = inputSampleR; 
  );
  (cycleEnd == 1) ? (
    lastRefL[0] = inputSampleL; lastRefR[0] = inputSampleR;
  );
  cycle = 0; inputSampleL = lastRefL[cycle]; inputSampleR = lastRefR[cycle];
) : (
  inputSampleL = lastRefL[cycle]; inputSampleR = lastRefR[cycle];
);

late_out_l = inputSampleL; late_out_r = inputSampleR;

slider20 != 0 ? (
  cr_clp_c = 1.0 - exp(-2.0*3.14159*slider18/srate);
  cr_clp_l += cr_clp_c * (late_out_l - cr_clp_l); cr_clp_r += cr_clp_c * (late_out_r - cr_clp_r);
  cr_cen_d = 1.0 - exp(-1.0/(t_rt60*t_rv_bass*0.5*srate)); cr_cen = 1.0 - cr_cen_d;
  cr_c_env += cr_cen * (0.0 - cr_c_env); cr_c_gain = (db2lin(slider20) - 1.0) * cr_c_env;
  late_out_l += cr_clp_l * cr_c_gain; late_out_r += cr_clp_r * cr_c_gain;
);

cr_rv_w = 2.0 * 3.14159 * slider65 / srate; cr_rv_a = exp(-cr_rv_w);
cr_rv_lp1_l = cr_rv_lp1_l * cr_rv_a + late_out_l * (1.0 - cr_rv_a); cr_rv_lp1_r = cr_rv_lp1_r * cr_rv_a + late_out_r * (1.0 - cr_rv_a);
late_out_l = cr_rv_lp1_l; late_out_r = cr_rv_lp1_r;
slider66 >= 1 ? ( cr_rv_lp2_l = cr_rv_lp2_l * cr_rv_a + late_out_l * (1.0 - cr_rv_a); cr_rv_lp2_r = cr_rv_lp2_r * cr_rv_a + late_out_r * (1.0 - cr_rv_a); late_out_l = cr_rv_lp2_l; late_out_r = cr_rv_lp2_r; );
slider66 >= 2 ? ( cr_rv_lp3_l = cr_rv_lp3_l * cr_rv_a + late_out_l * (1.0 - cr_rv_a); cr_rv_lp3_r = cr_rv_lp3_r * cr_rv_a + late_out_r * (1.0 - cr_rv_a); late_out_l = cr_rv_lp3_l; late_out_r = cr_rv_lp3_r; );
slider66 == 3 ? ( cr_rv_lp4_l = cr_rv_lp4_l * cr_rv_a + late_out_l * (1.0 - cr_rv_a); cr_rv_lp4_r = cr_rv_lp4_r * cr_rv_a + late_out_r * (1.0 - cr_rv_a); late_out_l = cr_rv_lp4_l; late_out_r = cr_rv_lp4_r; );
slider28 > 0 ? (
  cr_xf_er_buf_l[g_idx] = er_out_l; cr_xf_er_buf_r[g_idx] = er_out_r;
  cr_xfe_l = delay_read_lin(cr_xf_er_buf_l, cr_buf_s, g_idx, (slider29/1000.0)*srate); cr_xfe_r = delay_read_lin(cr_xf_er_buf_r, cr_buf_s, g_idx, (slider29/1000.0)*srate);
  cr_xel_c = 1.0 - exp(-2.0*3.14159*slider30/srate); cr_xlp_l += cr_xel_c * (cr_xfe_l - cr_xlp_l); cr_xlp_r += cr_xel_c * (cr_xfe_r - cr_xlp_r);
  er_out_l += cr_xlp_r * (slider28/100.0); er_out_r += cr_xlp_l * (slider28/100.0);
);
slider31 > 0 ? (
  cr_xf_rv_buf_l[g_idx] = late_out_l; cr_xf_rv_buf_r[g_idx] = late_out_r;
  cr_xfr_l = delay_read_lin(cr_xf_rv_buf_l, cr_buf_s, g_idx, (slider32/1000.0)*srate); cr_xfr_r = delay_read_lin(cr_xf_rv_buf_r, cr_buf_s, g_idx, (slider32/1000.0)*srate);
  cr_xrl_c = 1.0 - exp(-2.0*3.14159*slider33/srate); cr_xr_lp_l += cr_xrl_c * (cr_xfr_l - cr_xr_lp_l); cr_xr_lp_r += cr_xrl_c * (cr_xfr_r - cr_xr_lp_r);
  late_out_l += cr_xr_lp_r * (slider31/100.0); late_out_r += cr_xr_lp_l * (slider31/100.0);
);

refl_mix = cos(p_mix * 0.5 * 3.14159); rev_mix = sin(p_mix * 0.5 * 3.14159);
wet_l = (er_out_l * refl_mix) + (late_out_l * rev_mix); 
wet_r = (er_out_r * refl_mix) + (late_out_r * rev_mix);

// WET-BOOST +5 dB
wet_l *= 1.78; 
wet_r *= 1.78;

slider3 != 100 ? ( cr_wm = (wet_l+wet_r)/2; cr_ws = (wet_l-wet_r)/2 * (slider3/100); wet_l = cr_wm+cr_ws; wet_r = cr_wm-cr_ws; );

slider34 == 1 ? (
  wet_l = proc_biquad(wet_l, 0, 0); wet_l = proc_biquad(wet_l, 5, 4); wet_l = proc_biquad(wet_l, 10, 8); wet_l = proc_biquad(wet_l, 15, 12); wet_l = proc_biquad(wet_l, 20, 16);
  wet_r = proc_biquad(wet_r, 0, 20); wet_r = proc_biquad(wet_r, 5, 24); wet_r = proc_biquad(wet_r, 10, 28); wet_r = proc_biquad(wet_r, 15, 32); wet_r = proc_biquad(wet_r, 20, 36);
) : (
  proc_biquad(wet_l, 0, 0); proc_biquad(wet_l, 5, 4); proc_biquad(wet_l, 10, 8); proc_biquad(wet_l, 15, 12); proc_biquad(wet_l, 20, 16);
  proc_biquad(wet_r, 0, 20); proc_biquad(wet_r, 5, 24); proc_biquad(wet_r, 10, 28); proc_biquad(wet_r, 15, 32); proc_biquad(wet_r, 20, 36);
);

cr_dyn_en == 1 ? (
  cr_dyn_tgt = slider47;
  cr_ds = cr_dyn_tgt==0 ? max(abs(er_out_l),abs(er_out_r)) : (cr_dyn_tgt==1?max(abs(late_out_l),abs(late_out_r)) : (cr_dyn_tgt==2?max(abs(wet_l),abs(wet_r)) : max(abs(in_l),abs(in_r))));
  cr_ds_db = 20 * log10(max(cr_ds, 0.00001));
  cr_dc = cr_ds_db > slider48 ? (cr_ds_db - slider48)*(1.0 - 1.0/slider49) : 0.0;
  cr_dg = cr_dg + (cr_dc - cr_dg) * (cr_dc > cr_dg ? (1.0 - exp(-1.0/(slider51*0.001*srate))) : (1.0 - exp(-1.0/(slider52*0.001*srate))));
  cr_dyn_lin = db2lin(-cr_dg + slider53);
  cr_dyn_tgt==0 ? ( er_out_l*=cr_dyn_lin; er_out_r*=cr_dyn_lin; ) : ( cr_dyn_tgt==1||cr_dyn_tgt==4 ? ( late_out_l*=cr_dyn_lin; late_out_r*=cr_dyn_lin; ) : ( wet_l*=cr_dyn_lin; wet_r*=cr_dyn_lin; ) );
);

// Dual Linear Crossfade (0 dB Center)
dry_mix = min(1.0, (1.0 - p_wet) * 2.0); 

// --- BUILT-IN 1-KNOB DUCKER ---
duck_int = slider62 / 100.0; 
duck_int > 0.001 ? (
  // Envelope Follower vom Dry-Input
  in_abs_l = abs(in_l); in_abs_r = abs(in_r);
  in_abs_l > duck_env_l ? duck_env_l += (in_abs_l - duck_env_l) * duck_atk_coeff : duck_env_l += (in_abs_l - duck_env_l) * duck_rel_coeff;
  in_abs_r > duck_env_r ? duck_env_r += (in_abs_r - duck_env_r) * duck_atk_coeff : duck_env_r += (in_abs_r - duck_env_r) * duck_rel_coeff;
  
  // Threshold skaliert mit der Intensity (0 bis -40 dB)
  duck_thresh = db2lin(-40.0 * duck_int);
  
  // Gain Reduction berechnen
  duck_gr_l = duck_env_l > duck_thresh ? duck_thresh / duck_env_l : 1.0;
  duck_gr_r = duck_env_r > duck_thresh ? duck_thresh / duck_env_r : 1.0;
  
  // Depth-Skalierung abhängig von Intensity
  duck_gr_l = 1.0 - ((1.0 - duck_gr_l) * duck_int);
  duck_gr_r = 1.0 - ((1.0 - duck_gr_r) * duck_int);
  
  wet_l *= duck_gr_l;
  wet_r *= duck_gr_r;
  
  duck_gr_db_l = lin2db(duck_gr_l);
  duck_gr_db_r = lin2db(duck_gr_r);
) : (
  duck_gr_db_l = 0.0;
  duck_gr_db_r = 0.0;
);

wet_mix = min(1.0, p_wet * 2.0);
out_l = (dry_l * dry_mix) + (wet_l * wet_mix); out_r = (dry_r * dry_mix) + (wet_r * wet_mix);
out_l *= p_gain; out_r *= p_gain;

spl0 = out_l; spl1 = out_r;

meter_fall = 20.0 / srate;
cur_in = max(abs(in_l), abs(in_r)); cur_out = max(abs(out_l), abs(out_r));
cur_er = max(abs(er_out_l), abs(er_out_r)); cur_rv = max(abs(late_out_l), abs(late_out_r));
cur_in > m_in_lin ? m_in_lin = cur_in : m_in_lin -= meter_fall;
cur_out > m_out_lin ? m_out_lin = cur_out : m_out_lin -= meter_fall;
cur_er > m_er_lin ? m_er_lin = cur_er : m_er_lin -= meter_fall;
cur_rv > m_rv_lin ? m_rv_lin = cur_rv : m_rv_lin -= meter_fall;

duck_gr_db_l < m_gr_l ? m_gr_l = duck_gr_db_l : (m_gr_l = min(m_gr_l + (meter_fall * 30.0), 0.0));
duck_gr_db_r < m_gr_r ? m_gr_r = duck_gr_db_r : (m_gr_r = min(m_gr_r + (meter_fall * 30.0), 0.0));

g_idx += 1; g_idx >= cr_buf_s ? g_idx = 0;

@gfx 1100 780
// ==========================================
// OVERSTRATUM "CLASSIC CINEMATIC" UI - V12 (FINAL)
// ==========================================
gfx_clear = 0x13161A; // Vintage Dark Slate Background

// --- SCALING LOGIC ---
s_x = gfx_w / 1100;
s_y = gfx_h / 780;
scale = min(s_x, s_y); 

// --- FARBEN ---
function set_col_bg() ( gfx_r=19/255; gfx_g=22/255; gfx_b=26/255; gfx_a=1; );
function set_col_panel() ( gfx_r=30/255; gfx_g=35/255; gfx_b=42/255; gfx_a=1; );
function set_col_border() ( gfx_r=44/255; gfx_g=51/255; gfx_b=61/255; gfx_a=1; );
function set_col_blue() ( gfx_r=43/255; gfx_g=114/255; gfx_b=157/255; gfx_a=1; ); // UI Accent Blue
function set_col_text() ( gfx_r=142/255; gfx_g=156/255; gfx_b=174/255; gfx_a=1; );
function set_col_text_hl() ( gfx_r=224/255; gfx_g=230/255; gfx_b=237/255; gfx_a=1; );

// --- DYNAMISCHE SCHRIFTEN ---
gfx_setfont(1, "Verdana", floor(14 * scale), 'b'); // Panel Titles
gfx_setfont(2, "Verdana", floor(11 * scale), 'b'); // Knob Titles / Labels
gfx_setfont(3, "Arial",   floor(36 * scale), 'b'); // Main Header (Epic Halls)
gfx_setfont(4, "Verdana", floor(13 * scale), '');  // Text / General Values
gfx_setfont(5, "Verdana", floor(14 * scale), 'b'); // Highlight Values (Knobs)
gfx_setfont(6, "Verdana", floor(11 * scale), '');  // Grid/Meters
gfx_setfont(7, "Verdana", floor(15 * scale), 'b'); // Presets (Larger & Bolder)

function draw_centered_text(str, cx, y) local(w, h) (
  gfx_measurestr(str, w, h);
  gfx_x = cx*s_x - w/2; gfx_y = y*s_y;
  gfx_drawstr(str);
);

function draw_box(px, py, pw, ph, title)
local(tw, th) (
  set_col_panel(); gfx_rect(px*s_x, py*s_y, pw*s_x, ph*s_y); 
  set_col_border(); 
  gfx_line(px*s_x, py*s_y, (px+pw)*s_x, py*s_y); 
  gfx_line(px*s_x, (py+ph)*s_y, (px+pw)*s_x, (py+ph)*s_y);
  gfx_line(px*s_x, py*s_y, px*s_x, (py+ph)*s_y); 
  gfx_line((px+pw)*s_x, py*s_y, (px+pw)*s_x, (py+ph)*s_y);
  
  title != "" ? (
    set_col_text_hl(); gfx_setfont(1);
    gfx_x = (px+15)*s_x; gfx_y = (py+12)*s_y; gfx_drawstr(title);
    gfx_line(px*s_x, (py+35)*s_y, (px+pw)*s_x, (py+35)*s_y); 
  );
);

function draw_thick_arc(x, y, r, thick, a1, a2) local(a, step) (
  step = 0.02; a = a1; while(a <= a2) ( gfx_line(x + sin(a)*(r-thick), y - cos(a)*(r-thick), x + sin(a)*r, y - cos(a)*r); a += step; );
);

function format_val(sl_idx, val) (
  sl_idx == 1 ? sprintf(#fmt_str, "%.2f s", val) : sl_idx == 2 ? sprintf(#fmt_str, "%.0f ms", val) :
  sl_idx == 4 ? (val == 50 ? strcpy(#fmt_str, "Equal Mix") : sprintf(#fmt_str, "%.0f %%", val)) :
  sl_idx == 5 ? (val == 100 ? strcpy(#fmt_str, "Wet") : val == 0 ? strcpy(#fmt_str, "Dry") : sprintf(#fmt_str, "%.0f %%", val)) :
  sl_idx == 6 || sl_idx == 20 || sl_idx == 37 || sl_idx == 40 || sl_idx == 43 ? sprintf(#fmt_str, "%+.1f dB", val) :
  sl_idx == 7 ? (val < 0.5 ? strcpy(#fmt_str, "Close") : val < 1.5 ? strcpy(#fmt_str, "Small") : val < 2.5 ? strcpy(#fmt_str, "Medium") : val < 3.5 ? strcpy(#fmt_str, "Large") : strcpy(#fmt_str, "Distant")) : 
  sl_idx == 15 || sl_idx == 18 || sl_idx == 65 || sl_idx == 69 || sl_idx == 35 || sl_idx == 36 || sl_idx == 39 || sl_idx == 42 || sl_idx == 45 ? 
    (val >= 1000 ? sprintf(#fmt_str, "%.1f kHz", val/1000) : sprintf(#fmt_str, "%.0f Hz", val)) :
  sl_idx == 17 || sl_idx == 19 ? sprintf(#fmt_str, "x %.2f", val) :
  sl_idx == 38 || sl_idx == 41 || sl_idx == 44 ? sprintf(#fmt_str, "%.2f", val) : 
  sl_idx == 62 ? strcpy(#fmt_str, "") : // Hier wird der Text für den Ducker Knob geleert
  sprintf(#fmt_str, "%.1f", val); 
  #fmt_str;
);

function draw_vintage_knob(sl_idx, cx, cy, radius, min_val, max_val, def_val, is_bipolar, is_log, title, tooltip, is_large)
local(val, arc_val, a, active_steps, str_w, str_h, m_dy, drag_range, str) (
  val = slider(sl_idx);
  
  mouse_hover = (mouse_x >= (cx-radius)*s_x && mouse_x <= (cx+radius)*s_x && mouse_y >= (cy-radius)*s_y && mouse_y <= (cy+radius)*s_y);
  mouse_hover ? strcpy(#active_tooltip, tooltip);
  mouse_hover && (mouse_cap & 1) && !mouse_down ? ( active_knob = sl_idx; mouse_down = 1; last_my = mouse_y; );
  
  active_knob == sl_idx && (mouse_cap & 1) ? ( 
      m_dy = last_my - mouse_y; 
      is_log ? ( val = val * exp(m_dy * 0.015 / scale); ) : (
        drag_range = max(max_val - min_val, 30);
        val += m_dy * drag_range * (is_large ? 0.002 : 0.005) / scale;
      );
      val = max(min(val, max_val), min_val); slider(sl_idx) = val; sliderchange(sl_idx); last_my = mouse_y; 
  );

  is_log ? arc_val = log(max(val, 0.001) / min_val) / log(max_val / min_val) : arc_val = (val - min_val) / (max_val - min_val);
  arc_val = max(0, min(1, arc_val));

  // Matte Vintage Knob Body
  gfx_r=0.08; gfx_g=0.09; gfx_b=0.11; gfx_a=1; gfx_circle(cx*s_x, cy*s_y, radius*scale, 1);
  gfx_r=0.12; gfx_g=0.14; gfx_b=0.17; gfx_circle(cx*s_x, cy*s_y, (radius-1)*scale, 1);
  gfx_r=0.18; gfx_g=0.20; gfx_b=0.24; gfx_circle(cx*s_x, cy*s_y, (radius-3)*scale, 1);

  // Background Track
  gfx_r=0.10; gfx_g=0.11; gfx_b=0.14; draw_thick_arc(cx*s_x, cy*s_y, (radius-5)*scale, 1.5*scale, -2.356, 2.356);
  
  // Solid Blue Arc
  set_col_blue(); 
  is_bipolar ? ( val > def_val ? draw_thick_arc(cx*s_x, cy*s_y, (radius-5)*scale, 2.0*scale, 0, -2.356 + (arc_val * 4.712)) : draw_thick_arc(cx*s_x, cy*s_y, (radius-5)*scale, 2.0*scale, -2.356 + (arc_val * 4.712), 0); ) : ( draw_thick_arc(cx*s_x, cy*s_y, (radius-5)*scale, 2.0*scale, -2.356, -2.356 + (arc_val * 4.712)); );

  // Pointer
  a = -2.356 + (arc_val * 4.712);
  set_col_text_hl(); gfx_line(cx*s_x, cy*s_y, cx*s_x + sin(a)*(radius-2)*scale, cy*s_y - cos(a)*(radius-2)*scale);

  // Title
  title != "" ? (
    gfx_setfont(2); set_col_text();
    gfx_measurestr(title, str_w, str_h); gfx_x = cx*s_x - (str_w/2); gfx_y = cy*s_y - radius*scale - 18*scale; gfx_drawstr(title);
  );
  
  // Value
  is_large ? gfx_setfont(3) : gfx_setfont(5); set_col_text_hl();
  str = format_val(sl_idx, val);
  gfx_measurestr(str, str_w, str_h); gfx_x = cx*s_x - (str_w/2); gfx_y = cy*s_y + radius*scale + 8*scale; gfx_drawstr(str);
);

!mouse_cap ? ( mouse_down = 0; active_knob = 0; ); 
strcpy(#active_tooltip, "");

set_col_bg(); gfx_rect(0, 0, sw, sh);

// ==========================================
// HEADER 
// ==========================================
gfx_r=22/255; gfx_g=26/255; gfx_b=31/255; gfx_a=1;
gfx_rect(0, 0, gfx_w, 85*s_y);
set_col_blue(); gfx_rect(0, 83*s_y, gfx_w, 2*s_y); 

// Main Title with Drop Shadow
gfx_setfont(3);
gfx_r=0; gfx_g=0; gfx_b=0; gfx_a=0.6; 
gfx_x = 32*s_x; gfx_y = 17*s_y; gfx_drawstr("E P I C   H A L L S");
set_col_text_hl(); 
gfx_x = 30*s_x; gfx_y = 15*s_y; gfx_drawstr("E P I C   H A L L S");

// Subtitle / Brand 
gfx_setfont(1); set_col_blue();
gfx_x = 32*s_x; gfx_y = 54*s_y; gfx_drawstr("O V E R S T R A T U M   A U D I O");

// Powered By 
gfx_setfont(4); set_col_text();
gfx_measurestr("Powered by Airwindows Galactic", str_w, str_h);
gfx_x = (1085)*s_x - str_w; gfx_y = 16*s_y; gfx_drawstr("Powered by Airwindows Galactic");

// Preset Box
preset_w = 340; preset_h = 36; preset_x = 1085 - preset_w; preset_y = 38;
set_col_panel(); gfx_rect(preset_x*s_x, preset_y*s_y, preset_w*s_x, preset_h*s_y);
set_col_border(); gfx_rect(preset_x*s_x, preset_y*s_y, preset_w*s_x, preset_h*s_y, 0);

// Preset Arrows (Vor und Zurück)
gfx_setfont(7); set_col_text_hl();
gfx_x = (preset_x + 15)*s_x; gfx_y = (preset_y + 9)*s_y; gfx_drawstr("<");
gfx_x = (preset_x + preset_w - 25)*s_x; gfx_drawstr(">");

// Korrekte Kategorie-Zuweisung
slider68 == 1 ? strcpy(#c_str, "Default") : 
slider68 <= 51 ? strcpy(#c_str, "Halls") : 
slider68 <= 81 ? strcpy(#c_str, "Studios") : 
slider68 <= 121 ? strcpy(#c_str, "Cinematic") : 
strcpy(#c_str, "Foley");

// Alle 150 Preset-Namen - Concert Hall ist jetzt fest an Position 1 verankert!
strcpy(#p_names, "Concert Hall|Small Hall|Wooden Stage|Intimate Chamber|Acoustic Room|Brief Resonance|Tight Hall|Bright Chamber|Warm Auditorium|Upfront Hall|Vocal Recital|Medium Hall|Rich Chamber|Classic Auditorium|Orchestral Room|Chamber Strings|Brass Hall|Symphony Stage|Clear Venue|Warm Reflection|Balanced Hall|Large Chamber|Stone Venue|Historic Hall|Gothic Chamber|Wide Auditorium|Majestic Stage|Philharmonia|Deep Hall|Royal Chamber|Dark Auditorium|Grand Hall|Epic Venue|Cinematic Hall|Vast Auditorium|Massive Chamber|Concert Stage|Open Hall|Deep Venue|Wide Symphony|Long Decay Hall|Scoring Stage|Crystal Hall|Warm Symphony|Elegant Venue|Classic Reverb|Bright Symphony|Natural Hall|Deep Resonance|Smooth Chamber|Large Hall|");
strcat(#p_names, "Large Studio|Bright Room|Drum Hangar|Live Room|Vocal Booth|Wood Room|Big Stone Room|Tight Studio|Drum Booth|Dry Corner|Amp Room|Tiled Room|Brick Studio|Small Iso|Vocal Room|Foley Stage|Acoustic Booth|Rehearsal Space|Crisp Room|Damped Studio|Dead Room|Padded Booth|Tight Corner|Dry Space|Boxy Room|Anechoic Vibe|Wardrobe|Broadcast Room|Voiceover Booth|Extreme Dry|");
strcat(#p_names, "Claustrophobia|Tight Coffin|Submarine Lock|Narrow Pipe|Metal Box|Panic Room|Inside Car|Air Duct|Creepy Closet|Sealed Chamber|Dark Basement|Abandoned Room|Empty Corridor|Haunting Echo|Short Slap|Creepy Slap|Muffled Ghost|Distant Memory|Dream Sequence|Tense Atmosphere|Deep Abyss|Galactic Cavern|Mystic Cave|Infinite Void|Dark Realm|Ancient Tomb|Lost World|Endless Space|Vast Wasteland|Deep Space|Eerie Wash|Frozen Time|Black Hole|Eternity|Massive Drone|Metallic Echo|Ghostly Tail|Deep Ocean|Solar Flare|Event Horizon|");
strcat(#p_names, "Kitchen|Living Room|Bedroom|Bathroom|Empty Apartment|Garage|Hallway|Office Space|Cellar|Stairwell|Long Corridor|Empty Factory|Storage Room|Warehouse|Concrete Bunker|Subway Station|Underground Parking|Empty Mall|Distant Sirens|Large Silo|Deep Drainpipe|Long Tunnel|Underground Cave|Huge Warehouse|Massive Tank|Empty Hangar|Abandoned Silo|Deep Canyon|Endless Tunnel|");

// Dynamisches Menü mit Checkmarks bauen
strcpy(#menu_str, "");
p_pos = 0; p_idx = 1; p_start = 0;
while (p_pos < strlen(#p_names)) (
  str_getchar(#p_names, p_pos) == 124 ? ( // 124 = Trennzeichen '|'
    strcpy_substr(#temp_name, #p_names, p_start, p_pos - p_start);
    
    // Namen für das Display abgreifen
    p_idx == slider68 ? strcpy(#n_str, #temp_name);
    
    // Ordnerstruktur aufbauen
    p_idx == 2 ? strcat(#menu_str, ">Halls|") :
    p_idx == 52 ? strcat(#menu_str, "<|>Studios|") :
    p_idx == 82 ? strcat(#menu_str, "<|>Cinematic|") :
    p_idx == 122 ? strcat(#menu_str, "<|>Foley|") : 0;

    // Checkmark (!) für das aktuell ausgewählte Preset setzen
    p_idx == slider68 ? strcat(#menu_str, "!") : 0; 
    strcat(#menu_str, #temp_name);
    strcat(#menu_str, "|");
    
    p_start = p_pos + 1;
    p_idx += 1;
  );
  p_pos += 1;
);
strcat(#menu_str, "<"); // Letzten Ordner schließen

sprintf(#preset_str, "%s -> %s", #c_str, #n_str);
gfx_setfont(7); 
gfx_measurestr(#preset_str, str_w, str_h);
gfx_x = (preset_x + preset_w/2)*s_x - str_w/2; gfx_y = (preset_y + 9)*s_y; gfx_drawstr(#preset_str);

// --- KLICK-LOGIK MIT VOR/ZURÜCK ---
mouse_y > preset_y*s_y && mouse_y < (preset_y+preset_h)*s_y && mouse_x >= preset_x*s_x && mouse_x <= (preset_x+preset_w)*s_x && mouse_cap & 1 && !mouse_down ? (
  mouse_down = 1; 
  
  // Linker Bereich (<): Vorheriges Preset
  mouse_x < (preset_x + 40)*s_x ? (
    slider68 > 1 ? ( slider68 -= 1; sliderchange(68); load_preset(slider68); );
  ) : 
  // Rechter Bereich (>): Nächstes Preset
  mouse_x > (preset_x + preset_w - 40)*s_x ? (
    slider68 < 150 ? ( slider68 += 1; sliderchange(68); load_preset(slider68); );
  ) : 
  // Mittlerer Bereich: Dynamisches Dropdown-Menü öffnen
  (
    gfx_x = preset_x*s_x; gfx_y = (preset_y + preset_h)*s_y; 
    choice = gfx_showmenu(#menu_str);
    choice > 0 && choice <= 150 ? ( slider68 = choice; sliderchange(68); load_preset(choice); );
  );
);

// ==========================================
// Y-GRID SETUP (15px GLOBAL MARGIN & GAP GRID!)
// ==========================================
row1_y = 100; row1_h = 235; 
row2_y = 350; row2_h = 250; 
row3_y = 615; row3_h = 150; 

// ==========================================
// ROW 1: EARLY, DECAY, LATE (GANZ OBEN)
// ==========================================
p_w = 330; 
draw_box(15, row1_y, p_w, row1_h, "REFLECTIONS");
draw_box(360, row1_y, 380, row1_h, "REVERB DECAY"); 
draw_box(755, row1_y, p_w, row1_h, "REVERBERATION");

// LEFT & RIGHT Y-Positions
ly_r1 = row1_y + 85;  
ly_r2 = row1_y + 180; 

// LEFT: Reflections
lx_c1 = 15 + (p_w*0.3); lx_c2 = 15 + (p_w*0.7);
draw_vintage_knob(12, lx_c1, ly_r1, 24, 0, 150, 100, 0, 0, "SPREAD", "Stereo width of the early reflections.", 0);
draw_vintage_knob(7,  lx_c2, ly_r1, 24, 0, 4, 0, 0, 0, "DISTANCE", "Changes the temporal early reflection pattern based on distance.", 0);
draw_vintage_knob(8,  lx_c1, ly_r2, 24, 10, 100, 50, 0, 0, "DIMENSION", "Scales the temporal spacing of the early reflections.", 0);
draw_vintage_knob(9,  lx_c2, ly_r2, 24, 0, 100, 50, 0, 0, "DAMPING", "Controls the high-frequency damping of successive early reflections.", 0);

// CENTER: Reverb Decay (Perfekt mittig und nach oben justiert)
cx_mid = 360 + 190; // Exakt die absolute X-Mitte des 380px breiten Kastens
// Die Y-Werte wurden proportional nach oben gesetzt (125 und 149), 
// damit die Beschriftungen deutlich über dem Kastenboden schweben.
draw_vintage_knob(1, cx_mid, row1_y + 125, 48, 0.2, 45, 1.2, 0, 1, "REVERB TIME", "Sets the time required for the reverb tail to decay by 60 dB.", 1);
draw_vintage_knob(4, cx_mid - 110, row1_y + 149, 24, 0, 100, 50, 0, 0, "EARLY / LATE", "Balances early reflections and late reverberation.", 0);
draw_vintage_knob(5, cx_mid + 110, row1_y + 149, 24, 0, 100, 100, 0, 0, "DRY / WET", "Blends the unprocessed dry signal with the reverberated wet signal.", 0);

// RIGHT: Reverberation
rx_c1 = 755 + (p_w*0.3); rx_c2 = 755 + (p_w*0.7);
draw_vintage_knob(2,  rx_c1, ly_r1, 24, 0, 500, 10, 0, 0, "PRE-DELAY", "Delays the onset of the entire reverberation network.", 0);
draw_vintage_knob(21, rx_c2, ly_r1, 24, 0, 100, 2.5, 0, 0, "SWELL", "Controls the time taken for the late reverb to reach maximum density.", 0);
draw_vintage_knob(22, rx_c1, ly_r2, 24, 0, 100, 2.5, 0, 0, "MOVEMENT", "Changes the low-frequency modal density and breathing character.", 0);
draw_vintage_knob(23, rx_c2, ly_r2, 24, 0, 100, 7.5, 0, 0, "CHORUSING", "Adjusts the modulation depth for the late reverberation tail.", 0);


// ==========================================
// ROW 2: GRAPHS, EQ & CONTOUR (IN DER MITTE)
// ==========================================
g_min_f = 20; g_max_f = 20000;
function calc_x_from_f(f, x_start, width) ( x_start + (log(max(f, g_min_f) / g_min_f) / log(g_max_f / g_min_f)) * width; );
function calc_f_from_x(x, x_start, width) ( g_min_f * exp((x - x_start) / width * log(g_max_f / g_min_f)); );

function draw_rolloff_graph(slider_idx, slope_idx, px, py, pw, ph, title)
local(f_val, slope_val, poles, point_x, point_y, px_i, x_step, f_at_x, w_val, resp, y_val, active_flag, slope_text, tx, ty, str_w, str_h, str) (
  f_val = slider(slider_idx); slope_val = slider(slope_idx); poles = slope_val + 1;
  draw_box(px, py, pw, ph, title);
  
  gfx_r=1; gfx_g=1; gfx_b=1; gfx_a=0.03;
  gfx_line(calc_x_from_f(100, px*s_x, pw*s_x), (py+35)*s_y, calc_x_from_f(100, px*s_x, pw*s_x), (py+ph)*s_y);
  gfx_line(calc_x_from_f(1000, px*s_x, pw*s_x), (py+35)*s_y, calc_x_from_f(1000, px*s_x, pw*s_x), (py+ph)*s_y);
  gfx_line(calc_x_from_f(10000, px*s_x, pw*s_x), (py+35)*s_y, calc_x_from_f(10000, px*s_x, pw*s_x), (py+ph)*s_y);
  gfx_line(px*s_x, (py+35 + (ph-35)/2)*s_y, (px+pw)*s_x, (py+35 + (ph-35)/2)*s_y);

  set_col_blue(); gfx_a=1;
  px_i = 0; x_step = 2;
  while(px_i <= pw*s_x) (
    f_at_x = calc_f_from_x(px*s_x + px_i, px*s_x, pw*s_x); w_val = f_at_x / f_val; 
    resp = 1.0 / sqrt(1.0 + w_val*w_val); poles > 1 ? resp = resp ^ poles; 
    y_val = (py+35 + (ph-35)/4)*s_y - (lin2db(resp) / 24.0) * (((ph-35)/2)*s_y); y_val = min(y_val, (py+ph)*s_y);
    px_i == 0 ? ( gfx_x = px*s_x + px_i; gfx_y = y_val; ) : gfx_lineto(px*s_x + px_i, y_val, 1);
    px_i += x_step;
  );

  point_x = calc_x_from_f(f_val, px*s_x, pw*s_x); point_y = (py+35 + (ph-35)/4)*s_y;
  set_col_text_hl(); gfx_circle(point_x, point_y, 4*scale, 1);
  
  set_col_text_hl(); gfx_setfont(5);
  str = format_val(slider_idx, f_val); gfx_measurestr(str, str_w, str_h);
  gfx_x = (px+pw/2)*s_x - str_w/2; gfx_y = point_y + 15*scale; gfx_drawstr(str);

  slope_text = slope_val == 0 ? "6 dB/Oct" : slope_val == 1 ? "12 dB/Oct" : slope_val == 2 ? "18 dB/Oct" : "24 dB/Oct";
  gfx_measurestr(slope_text, str_w, str_h); tx = (px+pw/2)*s_x - str_w/2; ty = (py+ph)*s_y - 25*scale;
  
  active_flag = slider_idx + 1000;
  mouse_hover = (mouse_x >= px*s_x && mouse_x <= (px+pw)*s_x && mouse_y >= py*s_y && mouse_y <= (py+ph)*s_y);
  mouse_hover ? strcpy(#active_tooltip, "Drag Curve: Freq | Right-Click: Slope");
  mouse_hover && (mouse_cap & 1) && !mouse_down ? ( active_knob = active_flag; mouse_down = 1; );
  active_knob == active_flag && (mouse_cap & 1) ? (
    f_val = calc_f_from_x(mouse_x, px*s_x, pw*s_x); f_val = max(min(f_val, g_max_f), g_min_f);
    slider(slider_idx) = f_val; sliderchange(slider_idx);
  );
  mouse_hover && (mouse_cap & 2) && !mouse_down ? (
      slope_val = (slope_val + 1) % 4; slider(slope_idx) = slope_val; sliderchange(slope_idx); mouse_down = 1;
  );
  gfx_x = tx; gfx_y = ty; gfx_drawstr(slope_text);
);

graph_w = 270;
draw_rolloff_graph(15, 16, 15, row2_y, graph_w, row2_h, "EARLY ROLLOFF"); 
draw_rolloff_graph(65, 66, 815, row2_y, graph_w, row2_h, "LATE ROLLOFF"); 

// Center Box (Contour & EQ)
c_w = 500; c_x = 300; 
draw_box(c_x, row2_y, c_w, row2_h, "");

// Tabs Setup
tab_y = row2_y + 12;
gfx_setfont(1);

slider67 == 0 ? set_col_blue() : set_col_text(); 
gfx_x = (c_x + 20)*s_x; gfx_y = tab_y*s_y; gfx_drawstr("TAIL CONTOUR");
slider67 == 0 ? ( gfx_line((c_x + 20)*s_x, (tab_y + 18)*s_y, (c_x + 130)*s_x, (tab_y + 18)*s_y); );

slider67 == 1 ? set_col_blue() : set_col_text();
gfx_x = (c_x + 160)*s_x; gfx_y = tab_y*s_y; gfx_drawstr("5-BAND EQUALIZER");
slider67 == 1 ? ( gfx_line((c_x + 160)*s_x, (tab_y + 18)*s_y, (c_x + 305)*s_x, (tab_y + 18)*s_y); );

mouse_y > tab_y*s_y && mouse_y < (tab_y+20)*s_y && mouse_x > c_x*s_x && mouse_x < (c_x+300)*s_x && (mouse_cap & 1) && !mouse_down ? (
  mouse_down = 1;
  mouse_x < (c_x + 150)*s_x ? slider67 = 0 : slider67 = 1; 
  sliderchange(67);
);

slider67 == 0 ? (
  sp3 = c_w / 5; k_y3 = row2_y + 140; 
  draw_vintage_knob(20, c_x + sp3*0.5, k_y3, 26, -24, 24, 0, 1, 0, "LOW PUSH", "Accentuation of low frequencies at the beginning of the reverb.", 0);
  draw_vintage_knob(18, c_x + sp3*1.5, k_y3, 26, 20, 20000, 800, 0, 1, "LOW CROSS", "Crossover frequency for the Bass multiplier.", 0); 
  draw_vintage_knob(17, c_x + sp3*2.5, k_y3, 26, 0.1, 4.0, 1.0, 0, 0, "LOW DECAY", "Multiplies the decay time for bass frequencies.", 0);
  draw_vintage_knob(69, c_x + sp3*3.5, k_y3, 26, 20, 20000, 6000, 0, 1, "HIGH CROSS", "Crossover frequency for the Treble multiplier.", 0); 
  draw_vintage_knob(19, c_x + sp3*4.5, k_y3, 26, 0.1, 4.0, 1.0, 0, 0, "HIGH DECAY", "Multiplies the decay time for treble frequencies.", 0); 
) : (
  // 5-BAND EQ "CONSOLE STRIP"
  eq_offset = 30; 
  sp_eq = (c_w - eq_offset) / 5; 
  k_y_freq = row2_y + 85; 
  k_y_gain = row2_y + 150; 
  k_y_q    = row2_y + 210; 
  
  cx1 = c_x + eq_offset + sp_eq*0.5; 
  cx2 = c_x + eq_offset + sp_eq*1.5; 
  cx3 = c_x + eq_offset + sp_eq*2.5; 
  cx4 = c_x + eq_offset + sp_eq*3.5; 
  cx5 = c_x + eq_offset + sp_eq*4.5;
  
  gfx_r=1; gfx_g=1; gfx_b=1; gfx_a=0.03;
  div1 = c_x + eq_offset + sp_eq * 1.0; gfx_line(div1*s_x, (row2_y+40)*s_y, div1*s_x, (row2_y+row2_h-10)*s_y);
  div2 = c_x + eq_offset + sp_eq * 2.0; gfx_line(div2*s_x, (row2_y+40)*s_y, div2*s_x, (row2_y+row2_h-10)*s_y);
  div3 = c_x + eq_offset + sp_eq * 3.0; gfx_line(div3*s_x, (row2_y+40)*s_y, div3*s_x, (row2_y+row2_h-10)*s_y);
  div4 = c_x + eq_offset + sp_eq * 4.0; gfx_line(div4*s_x, (row2_y+40)*s_y, div4*s_x, (row2_y+row2_h-10)*s_y);

  set_col_text_hl(); gfx_setfont(2);
  draw_centered_text("HPF", cx1, row2_y + 45);
  draw_centered_text("LOW", cx2, row2_y + 45);
  draw_centered_text("MID", cx3, row2_y + 45);
  draw_centered_text("HIGH", cx4, row2_y + 45);
  draw_centered_text("LPF", cx5, row2_y + 45);

  set_col_text();
  gfx_x = (c_x + 12)*s_x; gfx_y = (k_y_freq - 6)*s_y; gfx_drawstr("Hz");
  gfx_x = (c_x + 12)*s_x; gfx_y = (k_y_gain - 6)*s_y; gfx_drawstr("dB");
  gfx_x = (c_x + 12)*s_x; gfx_y = (k_y_q - 6)*s_y; gfx_drawstr("Q");

  draw_vintage_knob(35, cx1, k_y_freq, 16, 20, 1000, 20, 0, 1, "", "HPF Frequency", 0);
  draw_vintage_knob(36, cx2, k_y_freq, 16, 20, 2000, 500, 0, 1, "", "Low Shelf Frequency", 0);
  draw_vintage_knob(39, cx3, k_y_freq, 16, 20, 20000, 3000, 0, 1, "", "Mid Band Frequency", 0);
  draw_vintage_knob(42, cx4, k_y_freq, 16, 200, 20000, 8000, 0, 1, "", "High Shelf Frequency", 0);
  draw_vintage_knob(45, cx5, k_y_freq, 16, 1000, 20000, 18000, 0, 1, "", "LPF Frequency", 0);

  draw_vintage_knob(37, cx2, k_y_gain, 14, -18, 18, 0, 1, 0, "", "Low Shelf Gain", 0);
  draw_vintage_knob(40, cx3, k_y_gain, 14, -18, 18, 0, 1, 0, "", "Mid Band Gain", 0);
  draw_vintage_knob(43, cx4, k_y_gain, 14, -18, 18, 0, 1, 0, "", "High Shelf Gain", 0);
  
  draw_vintage_knob(38, cx2, k_y_q, 14, 0.1, 4.0, 0.7, 0, 0, "", "Low Shelf Q", 0);
  draw_vintage_knob(41, cx3, k_y_q, 14, 0.1, 4.0, 0.7, 0, 0, "", "Mid Band Q", 0);
  draw_vintage_knob(44, cx4, k_y_q, 14, 0.1, 4.0, 0.7, 0, 0, "", "High Shelf Q", 0);
);

// EQ ON/OFF Button
slider34 == 1 ? set_col_blue() : set_col_text();
gfx_setfont(1);
gfx_x = (c_x + 390)*s_x; gfx_y = tab_y*s_y; gfx_drawstr(slider34 == 1 ? "[ EQ ON ]" : "[ EQ OFF ]");
mouse_hover_eq = (mouse_x >= (c_x+390)*s_x && mouse_x <= (c_x+480)*s_x && mouse_y >= tab_y*s_y && mouse_y <= (tab_y+20)*s_y);
mouse_hover_eq && (mouse_cap & 1) && !mouse_down ? ( slider34 = 1 - slider34; sliderchange(34); mouse_down = 1; );


// ==========================================
// ROW 3: METERING & MASTER (GANZ UNTEN)
// ==========================================
draw_box(15, row3_y, 745, row3_h, "METERING & DUCKING");
draw_box(775, row3_y, 310, row3_h, "MASTER GAIN"); 

function draw_meter_gr(px, py, pw, ph, val_db, label)
local(fill_w, str_w, str_h, fill_x, abs_val) (
  gfx_r=0.08; gfx_g=0.09; gfx_b=0.11; gfx_a=1; gfx_rect(px*s_x, py*s_y, pw*s_x, ph*s_y); 
  
  // Begrenzung auf maximal -7 dB für feine Auflösung
  val_db = max(min(val_db, 0), -7.0); 
  abs_val = abs(val_db);
  fill_w = (abs_val / 7.0) * pw*s_x;
  fill_x = (px+pw)*s_x - fill_w;
  
  // Dynamische Farbgebung je nach Gain-Reduction-Tiefe
  abs_val <= 2.0 ? (
    gfx_r=0.35; gfx_g=0.75; gfx_b=0.35; // Grün (bis 2 dB)
  ) : abs_val <= 3.5 ? (
    gfx_r=0.90; gfx_g=0.60; gfx_b=0.15; // Orange (bis 3.5 dB)
  ) : (
    gfx_r=0.85; gfx_g=0.25; gfx_b=0.25; // Rot (über 3.5 dB)
  );
  gfx_a=0.9; 
  
  gfx_rect(fill_x, py*s_y, fill_w, ph*s_y);
  
  // Label links
  gfx_setfont(6); set_col_text();
  gfx_measurestr(label, str_w, str_h);
  gfx_x = (px-15)*s_x - str_w; gfx_y = py*s_y - 2*scale; gfx_drawstr(label);
  
  // Wert rechts
  sprintf(#db_str, "%.1f dB", val_db);
  set_col_text_hl(); gfx_x = (px+pw+15)*s_x; gfx_y = py*s_y - 2*scale; gfx_drawstr(#db_str);
);
function draw_meter_h(px, py, pw, ph, val_db, label, txt_idx)
local(fill_w, str_w, str_h, disp_val) (
  gfx_r=0.08; gfx_g=0.09; gfx_b=0.11; gfx_a=1; gfx_rect(px*s_x, py*s_y, pw*s_x, ph*s_y); 
  val_db = max(min(val_db, 12), -60); fill_w = ((val_db + 60) / 72) * pw*s_x;
  
  set_col_blue(); gfx_a=0.85;
  gfx_rect(px*s_x, py*s_y, fill_w, ph*s_y);
  
  gfx_setfont(6); set_col_text();
  gfx_measurestr(label, str_w, str_h);
  gfx_x = (px-15)*s_x - str_w; gfx_y = py*s_y - 2*scale; gfx_drawstr(label);
  
  // --- TEXT SMOOTHING ---
  disp_val = 900000[txt_idx];
  disp_val += (val_db - disp_val) * 0.01; // <-- Hier von 0.15 auf 0.04 reduziert
  900000[txt_idx] = disp_val;
  
  sprintf(#db_str, "%.1f dB", disp_val);
  set_col_text_hl(); gfx_x = (px+pw+15)*s_x; gfx_y = py*s_y - 2*scale; gfx_drawstr(#db_str);
);

function draw_meter_gr(px, py, pw, ph, val_db, label, txt_idx)
local(fill_w, str_w, str_h, fill_x, abs_val, disp_val) (
  gfx_r=0.08; gfx_g=0.09; gfx_b=0.11; gfx_a=1; gfx_rect(px*s_x, py*s_y, pw*s_x, ph*s_y); 
  
  val_db = max(min(val_db, 0), -7.0); 
  abs_val = abs(val_db);
  fill_w = (abs_val / 7.0) * pw*s_x;
  fill_x = (px+pw)*s_x - fill_w;
  
  abs_val <= 2.0 ? (
    gfx_r=0.35; gfx_g=0.75; gfx_b=0.35; 
  ) : abs_val <= 3.5 ? (
    gfx_r=0.90; gfx_g=0.60; gfx_b=0.15; 
  ) : (
    gfx_r=0.85; gfx_g=0.25; gfx_b=0.25; 
  );
  gfx_a=0.9; 
  
  gfx_rect(fill_x, py*s_y, fill_w, ph*s_y);
  
  gfx_setfont(6); set_col_text();
  gfx_measurestr(label, str_w, str_h);
  gfx_x = (px-15)*s_x - str_w; gfx_y = py*s_y - 2*scale; gfx_drawstr(label);
  
  // --- TEXT SMOOTHING ---
  disp_val = 900000[txt_idx];
  disp_val += (val_db - disp_val) * 0.01; // <-- Hier ebenfalls auf 0.04 reduziert
  900000[txt_idx] = disp_val;
  
  sprintf(#db_str, "%.1f dB", disp_val);
  set_col_text_hl(); gfx_x = (px+pw+15)*s_x; gfx_y = py*s_y - 2*scale; gfx_drawstr(#db_str);
);

m_w = 520; m_x = 95; 
    
// 1. INPUT (Oben)
draw_meter_h(m_x, row3_y + 48, m_w, 7, m_in, "IN L", 0); 
draw_meter_h(m_x, row3_y + 59, m_w, 7, m_in, "IN R", 1);

// 2. OUTPUT (Mitte)
draw_meter_h(m_x, row3_y + 84, m_w, 7, m_out, "OUT L", 2); 
draw_meter_h(m_x, row3_y + 95, m_w, 7, m_out, "OUT R", 3);

// 3. DUCKING (Unten)
draw_meter_gr(m_x, row3_y + 120, m_w, 7, m_gr_l, "DUCK L", 4);
draw_meter_gr(m_x, row3_y + 131, m_w, 7, m_gr_r, "DUCK R", 5);

// Ducker Knob
draw_vintage_knob(62, m_x + m_w + 90, row3_y + 128, 16, 0, 100, 0, 0, 0, "DUCKING", "Ducking amount. Reduces reverb when input is loud.", 0);

// Master Gain - Zentral in der rechten Box
draw_vintage_knob(6, 775 + 155, row3_y + 85, 36, -24, 24, 0, 1, 0, "", "Adjusts the overall output gain of the plugin.", 0);


// --- TOOLTIP DRAWING ---
strlen(#active_tooltip) > 0 ? ( 
  gfx_setfont(4); gfx_measurestr(#active_tooltip, tw, th);
  bx = mouse_x + 15; by = mouse_y + 15;
  bx + tw + 20 > gfx_w ? bx = gfx_w - tw - 20; by + th + 15 > gfx_h ? by = gfx_h - th - 15;
  
  gfx_r=0.06; gfx_g=0.08; gfx_b=0.11; gfx_a=0.95; gfx_rect(bx, by, tw + 20, th + 12);
  set_col_border(); gfx_a=0.8; gfx_rect(bx, by, tw + 20, th + 12, 0);
  set_col_text_hl(); gfx_a=1; gfx_x = bx + 10; gfx_y = by + 6; gfx_drawstr(#active_tooltip);
);