desc: ReaSpect
version: 1.21

changelog: 
  Matched BPF by MARTIN VICANEK
  Optimization led ini
  Optimized and reduсed code
author: Vladimir Belov
website: https://rmmedia.ru/threads/105277/

// (C) 2013, Vladimir V. Belov
// This effect Copyright (C) 2004 and later Cockos Incorporated
// License: GPL - http://www.gnu.org/licenses/gpl.html
//
// V1.11 from 02.10.2018
//        Matched BPF by MARTIN VICANEK
//        Optimized and redused code
//        
// V1.12 from 24.10.2018
//        Optimization led ini
//
// V1.2  from 08.05.2020
//        4-nd order filter
//        optimized autogane
//        micro help


slider1:1<0,1,1>-PeakStatus
slider2:0<0,1,1>-ShiftStatus

options:no_meter

@init

Q=4.5; // Q=4.5;


ind=30*0;
outt=30*1;
peak=30*2;
CP=30*3;

ind_1=ind_2=ind_3=ind_4=ind_5=ind_6=ind_7=ind_8=ind_9=ind_10=0.00001;
ind_11=ind_12=ind_13=ind_14=ind_15=ind_16=ind_17=ind_18=ind_19=ind_20=0.00001;
ind_21=ind_22=ind_23=ind_24=ind_25=ind_26=ind_27=ind_28=ind_29=ind_30=0.00001;

i=0;
loop(30, i+=1; peak[i]=-100);

//ext_noinit=1;

// Hiberbolic cosinus

function cosh(x)
  ((exp(x)-exp(-x))/2);

// Function coeficent for Matched Bandpass

function cmbpf(f,Q) local (f0,AA0,AA1,AA2,BB1,BB2,phi0,phi1,phi2,r1,r2)
  (
  f0=2*f/srate;

  // Poles
  a2 = exp(-0.5*$pi*f0/Q);
  2*Q > 1 ?  
   // complex conjugate poles
  (a1 = -2*a2*cos(sqrt(1 - 1/(4*Q*Q))*$pi*f0)):
 
  // real poles
  (a1 = -2*a2*cosh(sqrt(1/(4*Q*Q) - 1)*$PI*f0));

  a2 = a2^2;
  
  //Zeros
  AA0 = (1 + a1+ a2)^2;
  AA1 = (1 - a1+ a2)^2;
  AA2 = -4*a2;

  phi1 = sin(0.5*$PI*f0)^2;
  phi0 = 1 - phi1;
  phi2 = 4*phi0*phi1;

  r1 = phi0*AA0 + phi1*AA1 + phi2*AA2;
  r2 = AA1 - AA0 + 4*(phi0 - phi1)*AA2;

  BB2 = (r1 - phi1*r2)/(4*phi1*phi1);
  BB1 = r2 + 4*(phi1 - phi0)*BB2;

  b1 = -0.5*sqrt(BB1);
  b0 = 0.5*(sqrt(b1*b1 + BB2) - b1);
  b2 = -b0 - b1;
  );

/*
function mbpf(in,a0,a1,a2,b0,b1) instance (S1,S2)
  (
  out = s1 + b0*in;
  s1  = s2 + b1*in - a1*out;
  s2  = b2*in - a2*out;
  out;
  );
*/


function a2d(x)
     (
       20*log10(x)
     );
        
function d2a(x)
     (
       pow(10,x/20)
     );
   
X0=25;
Y0=0;

// Band - Freq
F_1=25;
F_2=31.5;
F_3=40;
F_4=50;
F_5=63;
F_6=80;
F_7=100;
F_8=125;
F_9=160;
F_10=200;
F_11=250;
F_12=315;
F_13=400;
F_14=500;
F_15=630;
F_16=800;
F_17=1000;
F_18=1250;
F_19=1600;
F_20=2000;
F_21=2500;
F_22=3150;
F_23=4000;
F_24=5000;
F_25=6300;
F_26=8000;
F_27=10000;
F_28=12500;
F_29=16000;
F_30=20000;

// Calculate Filtr coef

cmbpf(F_1,Q); a1_1=a1; a2_1=a2; b0_1=b0; b1_1=b1; b2_1=b2;
cmbpf(F_2,Q); a1_2=a1; a2_2=a2; b0_2=b0; b1_2=b1; b2_2=b2;
cmbpf(F_3,Q); a1_3=a1; a2_3=a2; b0_3=b0; b1_3=b1; b2_3=b2;
cmbpf(F_4,Q); a1_4=a1; a2_4=a2; b0_4=b0; b1_4=b1; b2_4=b2;
cmbpf(F_5,Q); a1_5=a1; a2_5=a2; b0_5=b0; b1_5=b1; b2_5=b2;
cmbpf(F_6,Q); a1_6=a1; a2_6=a2; b0_6=b0; b1_6=b1; b2_6=b2;
cmbpf(F_7,Q); a1_7=a1; a2_7=a2; b0_7=b0; b1_7=b1; b2_7=b2;
cmbpf(F_8,Q); a1_8=a1; a2_8=a2; b0_8=b0; b1_8=b1; b2_8=b2;
cmbpf(F_9,Q); a1_9=a1; a2_9=a2; b0_9=b0; b1_9=b1; b2_9=b2;

cmbpf(F_10,Q); a1_10=a1; a2_10=a2; b0_10=b0; b1_10=b1; b2_10=b2;
cmbpf(F_11,Q); a1_11=a1; a2_11=a2; b0_11=b0; b1_11=b1; b2_11=b2;
cmbpf(F_12,Q); a1_12=a1; a2_12=a2; b0_12=b0; b1_12=b1; b2_12=b2;
cmbpf(F_13,Q); a1_13=a1; a2_13=a2; b0_13=b0; b1_13=b1; b2_13=b2;
cmbpf(F_14,Q); a1_14=a1; a2_14=a2; b0_14=b0; b1_14=b1; b2_14=b2;
cmbpf(F_15,Q); a1_15=a1; a2_15=a2; b0_15=b0; b1_15=b1; b2_15=b2;
cmbpf(F_16,Q); a1_16=a1; a2_16=a2; b0_16=b0; b1_16=b1; b2_16=b2;
cmbpf(F_17,Q); a1_17=a1; a2_17=a2; b0_17=b0; b1_17=b1; b2_17=b2;
cmbpf(F_18,Q); a1_18=a1; a2_18=a2; b0_18=b0; b1_18=b1; b2_18=b2;
cmbpf(F_19,Q); a1_19=a1; a2_19=a2; b0_19=b0; b1_19=b1; b2_19=b2;
cmbpf(F_20,Q); a1_20=a1; a2_20=a2; b0_20=b0; b1_20=b1; b2_20=b2;

cmbpf(F_21,Q); a1_21=a1; a2_21=a2; b0_21=b0; b1_21=b1; b2_21=b2;
cmbpf(F_22,Q); a1_22=a1; a2_22=a2; b0_22=b0; b1_22=b1; b2_22=b2; 
cmbpf(F_23,Q); a1_23=a1; a2_23=a2; b0_23=b0; b1_23=b1; b2_23=b2;
cmbpf(F_24,Q); a1_24=a1; a2_24=a2; b0_24=b0; b1_24=b1; b2_24=b2;
cmbpf(F_25,Q); a1_25=a1; a2_25=a2; b0_25=b0; b1_25=b1; b2_25=b2;
cmbpf(F_25,Q); a1_25=a1; a2_25=a2; b0_25=b0; b1_25=b1; b2_25=b2;
cmbpf(F_26,Q); a1_26=a1; a2_26=a2; b0_26=b0; b1_26=b1; b2_26=b2;
cmbpf(F_27,Q); a1_27=a1; a2_27=a2; b0_27=b0; b1_27=b1; b2_27=b2;
cmbpf(F_28,Q); a1_28=a1; a2_28=a2; b0_28=b0; b1_28=b1; b2_28=b2;
cmbpf(F_29,Q); a1_29=a1; a2_29=a2; b0_29=b0; b1_29=b1; b2_29=b2;
cmbpf(F_30,Q); a1_30=a1; a2_30=a2; b0_30=b0; b1_30=b1; b2_30=b2;


// time shift gain db/S
Tsg=10/30;

// Counter Time Hold Zoom S
Ctzo=3*30;

// Counter Time Hold Zoom
CPp=1*30;

//vremia zatuhania span dB/S
tr=20/srate;
ctr=d2a(-tr);
Tgr=20/30;

ta=10000/srate;
cta=d2a(ta);

@slider
PeakStatus=slider1;
ShiftStatus=slider2;

  
@sample
// inp - input
inp=spl0/2+spl1/2;

//////////////////////////////////////////////////////
//                   Filtr Blok                     //
//////////////////////////////////////////////////////

// 2-nd order
// 4-nd order (2+2)
// ou2 - out2 - out past 4-nd order // s3 - s1 // s4 - s2
 
out = s1_1 + b0_1 * inp; s1_1 = s2_1 + b1_1 * inp - a1_1 * out; s2_1 = b2_1 * inp - a2_1 * out; 
ou2 = s3_1 + b0_1 * out; s3_1 = s4_1 + b1_1 * out - a1_1 * ou2; s4_1 = b2_1 * out - a2_1 * ou2; in_1=abs(ou2);

out = s1_2 + b0_2 * inp; s1_2 = s2_2 + b1_2 * inp - a1_2 * out; s2_2 = b2_2 * inp - a2_2 * out;
ou2 = s3_2 + b0_2 * out; s3_2 = s4_2 + b1_2 * out - a1_2 * ou2; s4_2 = b2_2 * out - a2_2 * ou2; in_2=abs(ou2);

out = s1_3 + b0_3 * inp; s1_3 = s2_3 + b1_3 * inp - a1_3 * out; s2_3 = b2_3 * inp - a2_3 * out;
ou2 = s3_3 + b0_3 * out; s3_3 = s4_3 + b1_3 * out - a1_3 * ou2; s4_3 = b2_3 * out - a2_3 * ou2; in_3=abs(ou2);

out = s1_4 + b0_4 * inp; s1_4 = s2_4 + b1_4 * inp - a1_4 * out; s2_4 = b2_4 * inp - a2_4 * out;
ou2 = s3_4 + b0_4 * out; s3_4 = s4_4 + b1_4 * out - a1_4 * ou2; s4_4 = b2_4 * out - a2_4 * ou2; in_4=abs(ou2);

out = s1_5 + b0_5 * inp; s1_5 = s2_5 + b1_5 * inp - a1_5 * out; s2_5 = b2_5 * inp - a2_5 * out;
ou2 = s3_5 + b0_5 * out; s3_5 = s4_5 + b1_5 * out - a1_5 * ou2; s4_5 = b2_5 * out - a2_5 * ou2; in_5=abs(ou2);

out = s1_6 + b0_6 * inp; s1_6 = s2_6 + b1_6 * inp - a1_6 * out; s2_6 = b2_6 * inp - a2_6 * out;
ou2 = s3_6 + b0_6 * out; s3_6 = s4_6 + b1_6 * out - a1_6 * ou2; s4_6 = b2_6 * out - a2_6 * ou2; in_6=abs(ou2);

out = s1_7 + b0_7 * inp; s1_7 = s2_7 + b1_7 * inp - a1_7 * out; s2_7 = b2_7 * inp - a2_7 * out;
ou2 = s3_7 + b0_7 * out; s3_7 = s4_7 + b1_7 * out - a1_7 * ou2; s4_7 = b2_7 * out - a2_7 * ou2; in_7=abs(ou2);

out = s1_8 + b0_8 * inp; s1_8 = s2_8 + b1_8 * inp - a1_8 * out; s2_8 = b2_8 * inp - a2_8 * out;
ou2 = s3_8 + b0_8 * out; s3_8 = s4_8 + b1_8 * out - a1_8 * ou2; s4_8 = b2_8 * out - a2_8 * ou2; in_8=abs(ou2);

out = s1_9 + b0_9 * inp; s1_9 = s2_9 + b1_9 * inp - a1_9 * out; s2_9 = b2_9 * inp - a2_9 * out;
ou2 = s3_9 + b0_9 * out; s3_9 = s4_9 + b1_9 * out - a1_9 * ou2; s4_9 = b2_9 * out - a2_9 * ou2; in_9=abs(ou2);

////
////
 
out = s1_10 + b0_10 * inp; s1_10 = s2_10 + b1_10 * inp - a1_10 * out; s2_10 = b2_10 * inp - a2_10 * out;
ou2 = s3_10 + b0_10 * out; s3_10 = s4_10 + b1_10 * out - a1_10 * ou2; s4_10 = b2_10 * out - a2_10 * ou2; in_10=abs(ou2);

out = s1_11 + b0_11 * inp; s1_11 = s2_11 + b1_11 * inp - a1_11 * out; s2_11 = b2_11 * inp - a2_11 * out;
ou2 = s3_11 + b0_11 * out; s3_11 = s4_11 + b1_11 * out - a1_11 * ou2; s4_11 = b2_11 * out - a2_11 * ou2; in_11=abs(ou2);

out = s1_12 + b0_12 * inp; s1_12 = s2_12 + b1_12 * inp - a1_12 * out; s2_12 = b2_12 * inp - a2_12 * out;
ou2 = s3_12 + b0_12 * out; s3_12 = s4_12 + b1_12 * out - a1_12 * ou2; s4_12 = b2_12 * out - a2_12 * ou2; in_12=abs(ou2);

out = s1_13 + b0_13 * inp; s1_13 = s2_13 + b1_13 * inp - a1_13 * out; s2_13 = b2_13 * inp - a2_13 * out;
ou2 = s3_13 + b0_13 * out; s3_13 = s4_13 + b1_13 * out - a1_13 * ou2; s4_13 = b2_13 * out - a2_13 * ou2; in_13=abs(ou2);

out = s1_14 + b0_14 * inp; s1_14 = s2_14 + b1_14 * inp - a1_14 * out; s2_14 = b2_14 * inp - a2_14 * out;
ou2 = s3_14 + b0_14 * out; s3_14 = s4_14 + b1_14 * out - a1_14 * ou2; s4_14 = b2_14 * out - a2_14 * ou2; in_14=abs(ou2);

out = s1_15 + b0_15 * inp; s1_15 = s2_15 + b1_15 * inp - a1_15 * out; s2_15 = b2_15 * inp - a2_15 * out;
ou2 = s3_15 + b0_15 * out; s3_15 = s4_15 + b1_15 * out - a1_15 * ou2; s4_15 = b2_15 * out - a2_15 * ou2; in_15=abs(ou2);

out = s1_16 + b0_16 * inp; s1_16 = s2_16 + b1_16 * inp - a1_16 * out; s2_16 = b2_16 * inp - a2_16 * out;
ou2 = s3_16 + b0_16 * out; s3_16 = s4_16 + b1_16 * out - a1_16 * ou2; s4_16 = b2_16 * out - a2_16 * ou2; in_16=abs(ou2);

out = s1_17 + b0_17 * inp; s1_17 = s2_17 + b1_17 * inp - a1_17 * out; s2_17 = b2_17 * inp - a2_17 * out;
ou2 = s3_17 + b0_17 * out; s3_17 = s4_17 + b1_17 * out - a1_17 * ou2; s4_17 = b2_17 * out - a2_17 * ou2; in_17=abs(ou2);

out = s1_18 + b0_18 * inp; s1_18 = s2_18 + b1_18 * inp - a1_18 * out; s2_18 = b2_18 * inp - a2_18 * out;
ou2 = s3_18 + b0_18 * out; s3_18 = s4_18 + b1_18 * out - a1_18 * ou2; s4_18 = b2_18 * out - a2_18 * ou2; in_18=abs(ou2);

out = s1_19 + b0_19 * inp; s1_19 = s2_19 + b1_19 * inp - a1_19 * out; s2_19 = b2_19 * inp - a2_19 * out;
ou2 = s3_19 + b0_19 * out; s3_19 = s4_19 + b1_19 * out - a1_19 * ou2; s4_19 = b2_19 * out - a2_19 * ou2; in_19=abs(ou2);

out = s1_20 + b0_20 * inp; s1_20 = s2_20 + b1_20 * inp - a1_20 * out; s2_20 = b2_20 * inp - a2_20 * out;
ou2 = s3_20 + b0_20 * out; s3_20 = s4_20 + b1_20 * out - a1_20 * ou2; s4_20 = b2_20 * out - a2_20 * ou2; in_20=abs(ou2);

////
////

out = s1_21 + b0_21 * inp; s1_21 = s2_21 + b1_21 * inp - a1_21 * out; s2_21 = b2_21 * inp - a2_21 * out;
ou2 = s3_21 + b0_21 * out; s3_21 = s4_21 + b1_21 * out - a1_21 * ou2; s4_21 = b2_21 * out - a2_21 * ou2; in_21=abs(ou2);

out = s1_22 + b0_22 * inp; s1_22 = s2_22 + b1_22 * inp - a1_22 * out; s2_22 = b2_22 * inp - a2_22 * out;
ou2 = s3_22 + b0_22 * out; s3_22 = s4_22 + b1_22 * out - a1_22 * ou2; s4_22 = b2_22 * out - a2_22 * ou2; in_22=abs(ou2);

out = s1_23 + b0_23 * inp; s1_23 = s2_23 + b1_23 * inp - a1_23 * out; s2_23 = b2_23 * inp - a2_23 * out;
ou2 = s3_23 + b0_23 * out; s3_23 = s4_23 + b1_23 * out - a1_23 * ou2; s4_23 = b2_23 * out - a2_23 * ou2; in_23=abs(ou2);

out = s1_24 + b0_24 * inp; s1_24 = s2_24 + b1_24 * inp - a1_24 * out; s2_24 = b2_24 * inp - a2_24 * out;
ou2 = s3_24 + b0_24 * out; s3_24 = s4_24 + b1_24 * out - a1_24 * ou2; s4_24 = b2_24 * out - a2_24 * ou2; in_24=abs(ou2);

out = s1_25 + b0_25 * inp; s1_25 = s2_25 + b1_25 * inp - a1_25 * out; s2_25 = b2_25 * inp - a2_25 * out;
ou2 = s3_25 + b0_25 * out; s3_25 = s4_25 + b1_25 * out - a1_25 * ou2; s4_25 = b2_25 * out - a2_25 * ou2; in_25=abs(ou2);

out = s1_26 + b0_26 * inp; s1_26 = s2_26 + b1_26 * inp - a1_26 * out; s2_26 = b2_26 * inp - a2_26 * out;
ou2 = s3_26 + b0_26 * out; s3_26 = s4_26 + b1_26 * out - a1_26 * ou2; s4_26 = b2_26 * out - a2_26 * ou2; in_26=abs(ou2);

out = s1_27 + b0_27 * inp; s1_27 = s2_27 + b1_27 * inp - a1_27 * out; s2_27 = b2_27 * inp - a2_27 * out;
ou2 = s3_27 + b0_27 * out; s3_27 = s4_27 + b1_27 * out - a1_27 * ou2; s4_27 = b2_27 * out - a2_27 * ou2; in_27=abs(ou2);

out = s1_28 + b0_28 * inp; s1_28 = s2_28 + b1_28 * inp - a1_28 * out; s2_28 = b2_28 * inp - a2_28 * out;
ou2 = s3_28 + b0_28 * out; s3_28 = s4_28 + b1_28 * out - a1_28 * ou2; s4_28 = b2_28 * out - a2_28 * ou2; in_28=abs(ou2);

out = s1_29 + b0_29 * inp; s1_29 = s2_29 + b1_29 * inp - a1_29 * out; s2_29 = b2_29 * inp - a2_29 * out;
ou2 = s3_29 + b0_29 * out; s3_29 = s4_29 + b1_29 * out - a1_29 * ou2; s4_29 = b2_29 * out - a2_29 * ou2; in_29=abs(ou2);

out = s1_30 + b0_30 * inp; s1_30 = s2_30 + b1_30 * inp - a1_30 * out; s2_30 = b2_30 * inp - a2_30 * out;
ou2 = s3_30 + b0_30 * out; s3_30 = s4_30 + b1_30 * out - a1_30 * ou2; s4_30 = b2_30 * out - a2_30 * ou2; in_30=abs(ou2);



// ADSR //

ind_1>in_1 ? (ind_1=ind_1*ctr) : (ind_1=ind_1*cta); 
ind_2>in_2 ? (ind_2=ind_2*ctr) : (ind_2=ind_2*cta);
ind_3>in_3 ? (ind_3=ind_3*ctr) : (ind_3=ind_3*cta);
ind_4>in_4 ? (ind_4=ind_4*ctr) : (ind_4=ind_4*cta);
ind_5>in_5 ? (ind_5=ind_5*ctr) : (ind_5=ind_5*cta);
ind_6>in_6 ? (ind_6=ind_6*ctr) : (ind_6=ind_6*cta);
ind_7>in_7 ? (ind_7=ind_7*ctr) : (ind_7=ind_7*cta);
ind_8>in_8 ? (ind_8=ind_8*ctr) : (ind_8=ind_8*cta);
ind_9>in_9 ? (ind_9=ind_9*ctr) : (ind_9=ind_9*cta);

ind_10>in_10 ? (ind_10=ind_10*ctr) : (ind_10=ind_10*cta);
ind_11>in_11 ? (ind_11=ind_11*ctr) : (ind_11=ind_11*cta);
ind_12>in_12 ? (ind_12=ind_12*ctr) : (ind_12=ind_12*cta);
ind_13>in_13 ? (ind_13=ind_13*ctr) : (ind_13=ind_13*cta);
ind_14>in_14 ? (ind_14=ind_14*ctr) : (ind_14=ind_14*cta);
ind_15>in_15 ? (ind_15=ind_15*ctr) : (ind_15=ind_15*cta);
ind_16>in_16 ? (ind_16=ind_16*ctr) : (ind_16=ind_16*cta);
ind_17>in_17 ? (ind_17=ind_17*ctr) : (ind_17=ind_17*cta);
ind_18>in_18 ? (ind_18=ind_18*ctr) : (ind_18=ind_18*cta);
ind_19>in_19 ? (ind_19=ind_19*ctr) : (ind_19=ind_19*cta);

ind_20>in_20 ? (ind_20=ind_20*ctr) : (ind_20=ind_20*cta);
ind_21>in_21 ? (ind_21=ind_21*ctr) : (ind_21=ind_21*cta);
ind_22>in_22 ? (ind_22=ind_22*ctr) : (ind_22=ind_22*cta);
ind_23>in_23 ? (ind_23=ind_23*ctr) : (ind_23=ind_23*cta);
ind_24>in_24 ? (ind_24=ind_24*ctr) : (ind_24=ind_24*cta);
ind_25>in_25 ? (ind_25=ind_25*ctr) : (ind_25=ind_25*cta);
ind_26>in_26 ? (ind_26=ind_26*ctr) : (ind_26=ind_26*cta);
ind_27>in_27 ? (ind_27=ind_27*ctr) : (ind_27=ind_27*cta);
ind_28>in_28 ? (ind_28=ind_28*ctr) : (ind_28=ind_28*cta);
ind_29>in_29 ? (ind_29=ind_29*ctr) : (ind_29=ind_29*cta);
ind_30>in_30 ? (ind_30=ind_30*ctr) : (ind_30=ind_30*cta);


@gfx 634 290

/////////////////////////////////////////////
//              Analog to dB               //
/////////////////////////////////////////////

ind[1]=ind_1;
ind[2]=ind_2;
ind[3]=ind_3;
ind[4]=ind_4;
ind[5]=ind_5;
ind[6]=ind_6;
ind[7]=ind_7;
ind[8]=ind_8;
ind[9]=ind_9;
ind[10]=ind_10;
ind[11]=ind_11;
ind[12]=ind_12;
ind[13]=ind_13;
ind[14]=ind_14;
ind[15]=ind_15;
ind[16]=ind_16;
ind[17]=ind_17;
ind[18]=ind_18;
ind[19]=ind_19;
ind[20]=ind_20;
ind[21]=ind_21;
ind[22]=ind_22;
ind[23]=ind_23;
ind[24]=ind_24;
ind[25]=ind_25;
ind[26]=ind_26;
ind[27]=ind_27;
ind[28]=ind_28;
ind[29]=ind_29;
ind[30]=ind_30;

i=0;
loop(30,
i+=1;
outt[i] = 20*log10(max(ind[i],0.00001))+0.5;
);

Zmax=-140;

i=0;
loop(30,
i+=1;
peak[i]>outt[i] ? ( CP[i]>CPp ? ( peak[i]-=2*Tgr;) : CP[i]+=1;):(peak[i]=outt[i]; CP[i]=0; (peak[i]>0 ? outt[i]=0;);); Zmax=max(Zmax,outt[i]);
);

// shift gain

mouse_cap!=0 ? (
                  (mouse_cap == 9  ? ShiftStatus=slider2=0);
                  (mouse_cap == 10 ? ShiftStatus=slider2=1);
                  (mouse_cap == 1  ?  PeakStatus=slider1=1);
                  (mouse_cap == 2  ?  PeakStatus=slider1=0);
                );

ShiftStatus==0 ? 
(
    Zout>Zmax+20    ? Zout-=10;
    Zout<Zmax-10.5  ? Zout+=10;
    Zo=min(max(Zout,-50),-10);
);


gfx_w>900 ? 
      (Lx=22; Ly=6; Wa=350; Ha=845; Xp=28; Yp=7; Hy=70; Z1=1):
      (Lx=15; Ly=4; Wa=250; Ha=573; Xp=19; Yp=5; Hy=50; Z1=0);

//Zalivka temno zelenym cvetom
gfx_r=0; gfx_g=0.282; gfx_b=0.165;
gfx_x=X0; gfx_y=0; gfx_a=1;
gfx_rectto (X0+Ha,Wa);

//Zalivka dark yellow
gfx_r=0.2863; gfx_g=0.302; gfx_b=0;
a=0;
loop(6, gfx_x=X0; gfx_y=a; gfx_rectto (X0+Ha,a+Ly); a=a+Hy;);


//Green Led Indicator

//gfx_r=0; gfx_g=0.8; gfx_b=0.5;
gfx_r=0.1569; gfx_g=0.9686; gfx_b=0.7686;

a=X0+Ly;

i=0;
loop(30,
i+=1;
gfx_x=a; gfx_y=Wa; gfx_rectto (a+Lx,Wa-max(Yp*floor(outt[i]-10-Zo)+Wa,0));a+=Xp;
);


//Yelow Led
gfx_r=0.9529; gfx_g=0.9804; gfx_b=0.1608;

a=X0+Ly;
i=0;
loop(30,
i+=1;bb=0; 

    loop(floor(50-Zo+outt[i])/10,
        gfx_x=a; gfx_y=Wa-bb;
        gfx_rectto (a+Xp,gfx_y+Ly);bb=bb+Hy); 
    a=a+Xp
);


//Peak Led


a=X0+Ly;
b=1;
loop(PeakStatus,bb=0;i=0;
    Loop(30,
        i+=1;
          (10*floor((peak[i])/10)==floor(peak[i]) ? 
                              (gfx_r=0.9529; gfx_g=0.9804; gfx_b=0.1608;;):
                              (gfx_r=0.1569; gfx_g=0.9686; gfx_b=0.7686;););
    
        gfx_x=a; gfx_y=Ly-Yp*max(floor(Peak[i])-Zo-10,-51);
        gfx_rectto (a+Lx,gfx_y-Ly); 
        a=a+Xp;
    );    
);


//razdelenie horizontalnoe
gfx_r=0.1373; gfx_g=0.1216; gfx_b=0.1098;
a=Ly;
loop(50, gfx_x=X0; gfx_y=a; gfx_lineto (X0+Ha,a,1); a=a+Yp;);

//razdelenie verticalnoe

gfx_r=gfx_b=gfx_g=0.3137;
a=X0;
loop(31, gfx_x=a; gfx_y=0; gfx_rectto (a+Ly,Wa+lY); a=a+Lx+Ly;);
gfx_x=X0; gfx_y=Wa+Ly; gfx_rectto (X0+Ha+1,Wa+Ly+Yp);

//Scale dB text
gfx_r=gfx_b=gfx_g=0.5;

a=1;
loop (5, 
      gfx_x=0; gfx_y=a*Hy; gfx_drawnumber(10+Zo-10*a,0); 
      gfx_x=X0+Ha+6;gfx_drawnumber(10+Zo-10*a,0); a=a+1;
      );

// Scale Freq
gfx_y=Wa+3*Yp;

Z1==0 ?(
gfx_x=X0+4; gfx_drawnumber(25,0);
gfx_x=X0+42; gfx_drawnumber(40,0);
gfx_x=X0+80; gfx_drawnumber(63,0);
gfx_x=X0+114; gfx_drawnumber(100,0);
gfx_x=X0+153; gfx_drawnumber(160,0);
gfx_x=X0+190; gfx_drawnumber(250,0);
gfx_x=X0+228; gfx_drawnumber(400,0);
gfx_x=X0+266; gfx_drawnumber(630,0);
gfx_x=X0+304; gfx_drawnumber(1,1);
gfx_x=X0+342; gfx_drawnumber(1.6,1);
gfx_x=X0+380; gfx_drawnumber(2.5,1);
gfx_x=X0+418; gfx_drawnumber(4,1);
gfx_x=X0+456; gfx_drawnumber(6.31,1);
gfx_x=X0+490; gfx_drawnumber(10,1);
gfx_x=X0+528; gfx_drawnumber(16,1);
):(
gfx_x=X0+9; gfx_drawnumber(25,0);
gfx_x=X0+66; gfx_drawnumber(40,0);
gfx_x=X0+122; gfx_drawnumber(63,0);
gfx_x=X0+174; gfx_drawnumber(100,0);
gfx_x=X0+230; gfx_drawnumber(160,0);
gfx_x=X0+286; gfx_drawnumber(250,0);
gfx_x=X0+343; gfx_drawnumber(400,0);
gfx_x=X0+399; gfx_drawnumber(630,0);
gfx_x=X0+454; gfx_drawnumber(1,1);
gfx_x=X0+510; gfx_drawnumber(1.6,1);
gfx_x=X0+566; gfx_drawnumber(2.5,1);
gfx_x=X0+622; gfx_drawnumber(4,1);
gfx_x=X0+678; gfx_drawnumber(6.31,1);
gfx_x=X0+730; gfx_drawnumber(10,1);
gfx_x=X0+788; gfx_drawnumber(16,1);
);

gfx_y=Wa+5*Yp;

Z1==0 ?(
gfx_x=X0+16; gfx_drawnumber(31.5,1);
gfx_x=X0+61; gfx_drawnumber(50,0);
gfx_x=X0+99; gfx_drawnumber(80,0);
gfx_x=X0+132; gfx_drawnumber(125,0);
gfx_x=X0+170; gfx_drawnumber(200,0);
gfx_x=X0+208; gfx_drawnumber(315,0);
gfx_x=X0+246; gfx_drawnumber(500,0);
gfx_x=X0+284; gfx_drawnumber(800,0);
gfx_x=X0+320; gfx_drawnumber(1.250,2);
gfx_x=X0+362; gfx_drawnumber(2,1);
gfx_x=X0+396; gfx_drawnumber(3.155,2);
gfx_x=X0+438; gfx_drawnumber(5,1);
gfx_x=X0+476; gfx_drawnumber(8,1);
gfx_x=X0+510; gfx_drawnumber(12.5,1);
gfx_x=X0+548; gfx_drawnumber(20,1);

):(

gfx_x=X0+28; gfx_drawnumber(31.5,1);
gfx_x=X0+94; gfx_drawnumber(50,0);
gfx_x=X0+150; gfx_drawnumber(80,0);
gfx_x=X0+202; gfx_drawnumber(125,0);
gfx_x=X0+258; gfx_drawnumber(200,0);
gfx_x=X0+314; gfx_drawnumber(315,0);
gfx_x=X0+370; gfx_drawnumber(500,0);
gfx_x=X0+426; gfx_drawnumber(800,0);
gfx_x=X0+478; gfx_drawnumber(1.250,2);
gfx_x=X0+538; gfx_drawnumber(2,1);
gfx_x=X0+592; gfx_drawnumber(3.155,2);
gfx_x=X0+650; gfx_drawnumber(5,1);
gfx_x=X0+706; gfx_drawnumber(8,1);
gfx_x=X0+758; gfx_drawnumber(12.5,1);
gfx_x=X0+816; gfx_drawnumber(20,1);
);
gfx_y=Wa*1.22;
gfx_x=X0+4;
gfx_drawstr("Peak Led - ");
PeakStatus==1 ? gfx_drawstr("ON.  To Change <RKM>") : gfx_drawstr("Off. To change <LKM>");
gfx_y=Wa*1.22+10;
gfx_x=X0+4;
gfx_drawstr("AutoGane - "); 
ShiftStatus==1 ? gfx_drawstr("Off. To change <Shift>+<LKM>"):gfx_drawstr("ON.  To change <Shift>+<RKM>");  

