home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 July & August / PCWorld_2007-07-08_cd.bin / audio-video / reaper / reaper1861-install.exe / Effects / Teej / rbj12eq-teej next >
Text File  |  2007-02-22  |  15KB  |  675 lines

  1. // Copyright 2006, Thomas Scott Stillwell
  2. // All rights reserved.
  3. //
  4. //Redistribution and use in source and binary forms, with or without modification, are permitted 
  5. //provided that the following conditions are met:
  6. //
  7. //Redistributions of source code must retain the above copyright notice, this list of conditions 
  8. //and the following disclaimer. 
  9. //
  10. //Redistributions in binary form must reproduce the above copyright notice, this list of conditions 
  11. //and the following disclaimer in the documentation and/or other materials provided with the distribution. 
  12. //
  13. //The name of Thomas Scott Stillwell may not be used to endorse or 
  14. //promote products derived from this software without specific prior written permission. 
  15. //
  16. //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 
  17. //IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
  18. //FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
  19. //BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  20. //(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
  21. //PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
  22. //STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
  23. //THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24. //
  25. //
  26. //This modified version of the most excellent SS:rbj7eq is presented by TJ Higley.
  27. //Last modified: 2:36 PM, 2/18/07
  28. //
  29. //The frequency of the low shelf filter is customizable by modifying 'lowshelffreq' in line 52.
  30. //The frequency of each slider is customizable by modifying 'sliderXfreq' in lines 53 - 64. If you change these,
  31. //be sure to change the label in lines 36 - 51!  :)
  32. //The Q value of each slider is customizable by modifying 'sliderQ' in lines 65 - 76.
  33.  
  34. desc:12-band + HPF EQ, based on RBJ Filter Cookbook
  35.  
  36. slider1:0<0,400,5>HPF:
  37. slider2:0<-12,12,0.1>Low Shelf:
  38. slider3:0<-12,12,0.5>80 Hz:
  39. slider4:0<-12,12,0.5>150 Hz:
  40. slider5:0<-12,12,0.5>250 Hz:
  41. slider6:0<-12,12,0.5>400 Hz:
  42. slider7:0<-12,12,0.5>630 Hz:
  43. slider8:0<-12,12,0.5>800 Hz:
  44. slider9:0<-12,12,0.5>1.6 kHz:
  45. slider10:0<-12,12,0.5>3 kHz:
  46. slider11:0<-12,12,0.5>5 kHz:
  47. slider12:0<-12,12,0.5>7 kHz:
  48. slider13:0<-12,12,0.5>10 kHz:
  49. slider14:0<-12,12,0.5>12 kHz:
  50. slider15:22000<400,22000,5>LPF:
  51. slider16:0<-12,12,0.5>Output Gain:
  52.  
  53.  
  54. @init
  55.  
  56.   lowshelffreq = 110;
  57.   slider3freq = 80;
  58.   slider4freq = 150;
  59.   slider5freq = 250;
  60.   slider6freq = 400;
  61.   slider7freq = 630;
  62.   slider8freq = 800;
  63.   slider9freq = 1600;
  64.   slider10freq = 3000;
  65.   slider11freq = 5000;
  66.   slider12freq = 7000;
  67.   slider13freq = 10000;
  68.   slider14freq = 12000;
  69.   slider3Q = 1;
  70.   slider4Q = 1;
  71.   slider5Q = 1;
  72.   slider6Q = 1;
  73.   slider7Q = 1;
  74.   slider8Q = 1;
  75.   slider9Q = 1;
  76.   slider10Q = 1;
  77.   slider11Q = 1;
  78.   slider12Q = 1;
  79.   slider13Q = 1;
  80.   slider14Q = 1;
  81.  
  82. cDcAdd = 10^-30;
  83. cDenorm = 10^-30;
  84.  
  85.  
  86. @slider
  87.  
  88.   gain = 10^(slider16/20);
  89.  
  90.  
  91.   aHPF = 1;
  92.   sHPF = 1;
  93.   qHPF = 1 / (sqrt((aHPF + 1/aHPF)*(1/sHPF - 1) + 2));
  94.   w0HPF = 2 * $pi * slider1/srate;
  95.   cosw0HPF = cos(w0HPF);
  96.   sinw0HPF = sin(w0HPF);
  97.   alphaHPF = sinw0HPF / (2 * qHPF);
  98.  
  99.   b0HPF = (1 + cosw0HPF)/2;
  100.   b1HPF = -(1 + cosw0HPF);
  101.   b2HPF = (1 + cosw0HPF)/2;
  102.   a0HPF = 1 + alphaHPF;
  103.   a1HPF = -2 * cosw0HPF;
  104.   a2HPF = 1 - alphaHPF;
  105.   b0HPF /= a0HPF;
  106.   b1HPF /= a0HPF;
  107.   b2HPF /= a0HPF;
  108.   a1HPF /= a0HPF;
  109.   a2HPF /= a0HPF;
  110.  
  111.  
  112.   aLS = 10^(slider2/40);
  113.   sLS = 2;
  114.   qLS = 1 / (sqrt((aLS + 1/aLS)*(1/sLS - 1) + 2));
  115.   w0LS = 2 * $pi * lowshelffreq/srate;
  116.   cosw0LS = cos(w0LS);
  117.   sinw0LS = sin(w0LS);
  118.   alphaLS = sinw0LS / (2 * qLS);
  119.  
  120.   b0LS = aLS * ((aLS+1) - (aLS-1)*cosw0LS + 2*sqrt(aLS)*alphaLS);
  121.   b1LS = 2 * aLS * ((aLS-1) - (aLS+1)*cosw0LS);
  122.   b2LS = aLS * ((aLS+1) - (aLS-1)*cosw0LS - 2*sqrt(aLS)*alphaLS);
  123.   a0LS = (aLS+1) + (aLS-1)*cosw0LS + 2*sqrt(aLS)*alphaLS;
  124.   a1LS = -2 * ((aLS-1) + (aLS+1)*cosw0LS);
  125.   a2LS = (aLS+1)+(aLS-1)*cosw0LS-2*sqrt(aLS)*alphaLS;
  126.   b0LS /= a0LS;
  127.   b1LS /= a0LS;
  128.   b2LS /= a0LS;
  129.   a1LS /= a0LS;
  130.   a2LS /= a0LS;
  131.  
  132.  
  133.   qC = slider3Q;
  134.   aC = 10^(slider3/40);
  135.   w0C = 2 * $pi * slider3freq/srate;
  136.   cosw0C = cos(w0C);
  137.   sinw0C = sin(w0C);
  138.   alphaC = sinw0C / (2 * qC);
  139.  
  140.   b0C = 1 + alphaC * aC;
  141.   b1C = -2 * cosw0C;
  142.   b2C = 1 - alphaC * aC;
  143.   a0C = 1 + alphaC / aC;
  144.   a1C = -2 * cosw0C;
  145.   a2C = 1 - alphaC / aC;
  146.   b0C /= a0C;
  147.   b1C /= a0C;
  148.   b2C /= a0C;
  149.   a1C /= a0C;
  150.   a2C /= a0C;
  151.  
  152.  
  153.   qD = slider4Q;
  154.   aD = 10^(slider4/40);
  155.   w0D = 2 * $pi * slider4freq/srate;
  156.   cosw0D = cos(w0D);
  157.   sinw0D = sin(w0D);
  158.   alphaD = sinw0D / (2 * qD);
  159.  
  160.   b0D = 1 + alphaD * aD;
  161.   b1D = -2 * cosw0D;
  162.   b2D = 1 - alphaD * aD;
  163.   a0D = 1 + alphaD / aD;
  164.   a1D = -2 * cosw0D;
  165.   a2D = 1 - alphaD / aD;
  166.   b0D /= a0D;
  167.   b1D /= a0D;
  168.   b2D /= a0D;
  169.   a1D /= a0D;
  170.   a2D /= a0D;
  171.  
  172.  
  173.   qE = slider5Q;
  174.   aE = 10^(slider5/40);
  175.   w0E = 2 * $pi * slider5freq/srate;
  176.   cosw0E = cos(w0E);
  177.   sinw0E = sin(w0E);
  178.   alphaE = sinw0E / (2 * qE);
  179.  
  180.   b0E = 1 + alphaE * aE;
  181.   b1E = -2 * cosw0E;
  182.   b2E = 1 - alphaE * aE;
  183.   a0E = 1 + alphaE / aE;
  184.   a1E = -2 * cosw0E;
  185.   a2E = 1 - alphaE / aE;
  186.   b0E /= a0E;
  187.   b1E /= a0E;
  188.   b2E /= a0E;
  189.   a1E /= a0E;
  190.   a2E /= a0E;
  191.  
  192.  
  193.   qF = slider6Q;
  194.   aF = 10^(slider6/40);
  195.   w0F = 2 * $pi * slider6freq/srate;
  196.   cosw0F = cos(w0F);
  197.   sinw0F = sin(w0F);
  198.   alphaF = sinw0F / (2 * qF);
  199.  
  200.   b0F = 1 + alphaF * aF;
  201.   b1F = -2 * cosw0F;
  202.   b2F = 1 - alphaF * aF;
  203.   a0F = 1 + alphaF / aF;
  204.   a1F = -2 * cosw0F;
  205.   a2F = 1 - alphaF / aF;
  206.   b0F /= a0F;
  207.   b1F /= a0F;
  208.   b2F /= a0F;
  209.   a1F /= a0F;
  210.   a2F /= a0F;
  211.  
  212.  
  213.   qG = slider7Q;
  214.   aG = 10^(slider7/40);
  215.   w0G = 2 * $pi * slider7freq/srate;
  216.   cosw0G = cos(w0G);
  217.   sinw0G = sin(w0G);
  218.   alphaG = sinw0G / (2 * qG);
  219.  
  220.   b0G = 1 + alphaG * aG;
  221.   b1G = -2 * cosw0G;
  222.   b2G = 1 - alphaG * aG;
  223.   a0G = 1 + alphaG / aG;
  224.   a1G = -2 * cosw0G;
  225.   a2G = 1 - alphaG / aG;
  226.   b0G /= a0G;
  227.   b1G /= a0G;
  228.   b2G /= a0G;
  229.   a1G /= a0G;
  230.   a2G /= a0G;
  231.  
  232.  
  233.   qH = slider8Q;
  234.   aH = 10^(slider8/40);
  235.   w0H = 2 * $pi * slider8freq/srate;
  236.   cosw0H = cos(w0H);
  237.   sinw0H = sin(w0H);
  238.   alphaH = sinw0H / (2 * qH);
  239.  
  240.   b0H = 1 + alphaH * aH;
  241.   b1H = -2 * cosw0H;
  242.   b2H = 1 - alphaH * aH;
  243.   a0H = 1 + alphaH / aH;
  244.   a1H = -2 * cosw0H;
  245.   a2H = 1 - alphaH / aH;
  246.   b0H /= a0H;
  247.   b1H /= a0H;
  248.   b2H /= a0H;
  249.   a1H /= a0H;
  250.   a2H /= a0H;
  251.  
  252.  
  253.   qI = slider9Q;
  254.   aI = 10^(slider9/40);
  255.   w0I = 2 * $pi * slider9freq/srate;
  256.   cosw0I = cos(w0I);
  257.   sinw0I = sin(w0I);
  258.   alphaI = sinw0I / (2 * qI);
  259.  
  260.   b0I = 1 + alphaI * aI;
  261.   b1I = -2 * cosw0I;
  262.   b2I = 1 - alphaI * aI;
  263.   a0I = 1 + alphaI / aI;
  264.   a1I = -2 * cosw0I;
  265.   a2I = 1 - alphaI / aI;
  266.   b0I /= a0I;
  267.   b1I /= a0I;
  268.   b2I /= a0I;
  269.   a1I /= a0I;
  270.   a2I /= a0I;
  271.  
  272.  
  273.   qJ = slider10Q;
  274.   aJ = 10^(slider10/40);
  275.   w0J = 2 * $pi * slider10freq/srate;
  276.   cosw0J = cos(w0J);
  277.   sinw0J = sin(w0J);
  278.   alphaJ = sinw0J / (2 * qJ);
  279.  
  280.   b0J = 1 + alphaJ * aJ;
  281.   b1J = -2 * cosw0J;
  282.   b2J = 1 - alphaJ * aJ;
  283.   a0J = 1 + alphaJ / aJ;
  284.   a1J = -2 * cosw0J;
  285.   a2J = 1 - alphaJ / aJ;
  286.   b0J /= a0J;
  287.   b1J /= a0J;
  288.   b2J /= a0J;
  289.   a1J /= a0J;
  290.   a2J /= a0J;
  291.  
  292.  
  293.   qK = slider11Q;
  294.   aK = 10^(slider11/40);
  295.   w0K = 2 * $pi * slider11freq/srate;
  296.   cosw0K = cos(w0K);
  297.   sinw0K = sin(w0K);
  298.   alphaK = sinw0K / (2 * qK);
  299.  
  300.   b0K = 1 + alphaK * aK;
  301.   b1K = -2 * cosw0K;
  302.   b2K = 1 - alphaK * aK;
  303.   a0K = 1 + alphaK / aK;
  304.   a1K = -2 * cosw0K;
  305.   a2K = 1 - alphaK / aK;
  306.   b0K /= a0K;
  307.   b1K /= a0K;
  308.   b2K /= a0K;
  309.   a1K /= a0K;
  310.   a2K /= a0K;
  311.  
  312.  
  313.   qL = slider12Q;
  314.   aL = 10^(slider12/40);
  315.   w0L = 2 * $pi * slider12freq/srate;
  316.   cosw0L = cos(w0L);
  317.   sinw0L = sin(w0L);
  318.   alphaL = sinw0L / (2 * qL);
  319.  
  320.   b0L = 1 + alphaL * aL;
  321.   b1L = -2 * cosw0L;
  322.   b2L = 1 - alphaL * aL;
  323.   a0L = 1 + alphaL / aL;
  324.   a1L = -2 * cosw0L;
  325.   a2L = 1 - alphaL / aL;
  326.   b0L /= a0L;
  327.   b1L /= a0L;
  328.   b2L /= a0L;
  329.   a1L /= a0L;
  330.   a2L /= a0L;
  331.  
  332.  
  333.   qM = slider13Q;
  334.   aM = 10^(slider13/40);
  335.   w0M = 2 * $pi * slider13freq/srate;
  336.   cosw0M = cos(w0M);
  337.   sinw0M = sin(w0M);
  338.   alphaM = sinw0M / (2 * qM);
  339.  
  340.   b0M = 1 + alphaM * aM;
  341.   b1M = -2 * cosw0M;
  342.   b2M = 1 - alphaM * aM;
  343.   a0M = 1 + alphaM / aM;
  344.   a1M = -2 * cosw0M;
  345.   a2M = 1 - alphaM / aM;
  346.   b0M /= a0M;
  347.   b1M /= a0M;
  348.   b2M /= a0M;
  349.   a1M /= a0M;
  350.   a2M /= a0M;
  351.  
  352.  
  353.   qN = slider14Q;
  354.   aN = 10^(slider14/40);
  355.   w0N = 2 * $pi * slider14freq/srate;
  356.   cosw0N = cos(w0N);
  357.   sinw0N = sin(w0N);
  358.   alphaN = sinw0N / (2 * qN);
  359.  
  360.   b0N = 1 + alphaN * aN;
  361.   b1N = -2 * cosw0N;
  362.   b2N = 1 - alphaN * aN;
  363.   a0N = 1 + alphaN / aN;
  364.   a1N = -2 * cosw0N;
  365.   a2N = 1 - alphaN / aN;
  366.   b0N /= a0N;
  367.   b1N /= a0N;
  368.   b2N /= a0N;
  369.   a1N /= a0N;
  370.   a2N /= a0N;
  371.  
  372.  
  373.   aP = 1;
  374.   sP = 2;
  375.   qP = 1 / (sqrt((aP + 1/aP)*(1/sP - 1) + 2));
  376.   w0P = 2 * $pi * slider15/srate;
  377.   cosw0P = cos(w0P);
  378.   sinw0P = sin(w0P);
  379.   alphaP = sinw0P / (2 * qP);
  380.  
  381.   b0P = (1 - cosw0P)/2;
  382.   b1P = (1 - cosw0P);
  383.   b2P = (1 - cosw0P)/2;
  384.   a0P = 1 + alphaP;
  385.   a1P = -2 * cosw0P;
  386.   a2P = 1 - alphaP;
  387.   b0P /= a0P;
  388.   b1P /= a0P;
  389.   b2P /= a0P;
  390.   a1P /= a0P;
  391.   a2P /= a0P;
  392.  
  393.  
  394. @sample
  395.  
  396.   freq0 > 10 ? (
  397.   ospl0 = spl0;
  398.   spl0 = b00 * spl0 + b10 * xl10 + b20 * xl20 - a10 * yl10 - a20 * yl20;
  399.   xl20 = xl10;
  400.   xl10 = ospl0;
  401.   yl20 = yl10;
  402.   yl10 = abs(spl0) < cDenorm ? 0 : spl0 ;
  403.  
  404.   ospl1 = spl1;
  405.   spl1 = b00 * spl1 + b10 * xr10 + b20 * xr20 - a10 * yr10 - a20 * yr20;
  406.   xr20 = xr10;
  407.   xr10 = ospl1;
  408.   yr20 = yr10;
  409.   yr10 = abs(spl1) < cDenorm ? 0 : spl1 ;
  410.   );
  411.  
  412.  
  413.  
  414.   slider1 != 0 ? (
  415.   ospl0 = spl0;
  416.   spl0 = b0HPF * spl0 + b1HPF * xl1HPF + b2HPF * xl2HPF - a1HPF * yl1HPF - a2HPF * yl2HPF;
  417.   xl2HPF = xl1HPF;
  418.   xl1HPF = ospl0;
  419.   yl2HPF = yl1HPF;
  420.   yl1HPF = abs(spl0) < cDenorm ? 0 : spl0 ;
  421.  
  422.   ospl1 = spl1;
  423.   spl1 = b0HPF * spl1 + b1HPF * xr1HPF + b2HPF * xr2HPF - a1HPF * yr1HPF - a2HPF * yr2HPF;
  424.   xr2HPF = xr1HPF;
  425.   xr1HPF = ospl1;
  426.   yr2HPF = yr1HPF;
  427.   yr1HPF = abs(spl1) < cDenorm ? 0 : spl1 ;
  428.   );
  429.  
  430.  
  431. spl0 += cDcAdd;
  432. spl1 += cDcAdd;
  433.  
  434.   slider2 != 0 ? (
  435.   ospl0 = spl0;
  436.   spl0 = b0LS * spl0 + b1LS * xl1LS + b2LS * xl2LS - a1LS * yl1LS - a2LS * yl2LS;
  437.   xl2LS = xl1LS;
  438.   xl1LS = ospl0;
  439.   yl2LS = yl1LS;
  440.   yl1LS = spl0;
  441.  
  442.   ospl1 = spl1;
  443.   spl1 = b0LS * spl1 + b1LS * xr1LS + b2LS * xr2LS - a1LS * yr1LS - a2LS * yr2LS;
  444.   xr2LS = xr1LS;
  445.   xr1LS = ospl1;
  446.   yr2LS = yr1LS;
  447.   yr1LS = spl1;
  448.   );
  449.  
  450.  
  451.   slider3 != 0 ? (
  452.   ospl0 = spl0;
  453.   spl0 = b0C * spl0 + b1C * xl1C + b2C * xl2C - a1C * yl1C - a2C * yl2C;
  454.   xl2C = xl1C;
  455.   xl1C = ospl0;
  456.   yl2C = yl1C;
  457.   yl1C = spl0;
  458.  
  459.   ospl1 = spl1;
  460.   spl1 = b0C * spl1 + b1C * xr1C + b2C * xr2C - a1C * yr1C - a2C * yr2C;
  461.   xr2C = xr1C;
  462.   xr1C = ospl1;
  463.   yr2C = yr1C;
  464.   yr1C = spl1;
  465.   );
  466.  
  467.  
  468.   slider4 != 0 ? (
  469.   ospl0 = spl0;
  470.   spl0 = b0D * spl0 + b1D * xl1D + b2D * xl2D - a1D * yl1D - a2D * yl2D;
  471.   xl2D = xl1D;
  472.   xl1D = ospl0;
  473.   yl2D = yl1D;
  474.   yl1D = spl0;
  475.  
  476.   ospl1 = spl1;
  477.   spl1 = b0D * spl1 + b1D * xr1D + b2D * xr2D - a1D * yr1D - a2D * yr2D;
  478.   xr2D = xr1D;
  479.   xr1D = ospl1;
  480.   yr2D = yr1D;
  481.   yr1D = spl1;
  482.   );
  483.  
  484.  
  485.   slider5 != 0 ? (
  486.   ospl0 = spl0;
  487.   spl0 = b0E * spl0 + b1E * xl1E + b2E * xl2E - a1E * yl1E - a2E * yl2E;
  488.   xl2E = xl1E;
  489.   xl1E = ospl0;
  490.   yl2E = yl1E;
  491.   yl1E = spl0;
  492.  
  493.   ospl1 = spl1;
  494.   spl1 = b0E * spl1 + b1E * xr1E + b2E * xr2E - a1E * yr1E - a2E * yr2E;
  495.   xr2E = xr1E;
  496.   xr1E = ospl1;
  497.   yr2E = yr1E;
  498.   yr1E = spl1;
  499.   );
  500.  
  501.  
  502.   slider6 != 0 ? (
  503.   ospl0 = spl0;
  504.   spl0 = b0F * spl0 + b1F * xl1F + b2F * xl2F - a1F * yl1F - a2F * yl2F;
  505.   xl2F = xl1F;
  506.   xl1F = ospl0;
  507.   yl2F = yl1F;
  508.   yl1F = spl0;
  509.  
  510.   ospl1 = spl1;
  511.   spl1 = b0F * spl1 + b1F * xr1F + b2F * xr2F - a1F * yr1F - a2F * yr2F;
  512.   xr2F = xr1F;
  513.   xr1F = ospl1;
  514.   yr2F = yr1F;
  515.   yr1F = spl1;
  516.   );
  517.  
  518.  
  519.   slider7 != 0 ? (
  520.   ospl0 = spl0;
  521.   spl0 = b0G * spl0 + b1G * xl1G + b2G * xl2G - a1G * yl1G - a2G * yl2G;
  522.   xl2G = xl1G;
  523.   xl1G = ospl0;
  524.   yl2G = yl1G;
  525.   yl1G = spl0;
  526.  
  527.   ospl1 = spl1;
  528.   spl1 = b0G * spl1 + b1G * xr1G + b2G * xr2G - a1G * yr1G - a2G * yr2G;
  529.   xr2G = xr1G;
  530.   xr1G = ospl1;
  531.   yr2G = yr1G;
  532.   yr1G = spl1;
  533.   );
  534.  
  535.  
  536.   slider8 != 0 ? (
  537.   ospl0 = spl0;
  538.   spl0 = b0H * spl0 + b1H * xl1H + b2H * xl2H - a1H * yl1H - a2H * yl2H;
  539.   xl2H = xl1H;
  540.   xl1H = ospl0;
  541.   yl2H = yl1H;
  542.   yl1H = spl0;
  543.  
  544.   ospl1 = spl1;
  545.   spl1 = b0H * spl1 + b1H * xr1H + b2H * xr2H - a1H * yr1H - a2H * yr2H;
  546.   xr2H = xr1H;
  547.   xr1H = ospl1;
  548.   yr2H = yr1H;
  549.   yr1H = spl1;
  550.   );
  551.  
  552.  
  553.   slider9 != 0 ? (
  554.   ospl0 = spl0;
  555.   spl0 = b0I * spl0 + b1I * xl1I + b2I * xl2I - a1I * yl1I - a2I * yl2I;
  556.   xl2I = xl1I;
  557.   xl1I = ospl0;
  558.   yl2I = yl1I;
  559.   yl1I = spl0;
  560.  
  561.   ospl1 = spl1;
  562.   spl1 = b0I * spl1 + b1I * xr1I + b2I * xr2I - a1I * yr1I - a2I * yr2I;
  563.   xr2I = xr1I;
  564.   xr1I = ospl1;
  565.   yr2I = yr1I;
  566.   yr1I = spl1;
  567.   );
  568.  
  569.  
  570.   slider10 != 0 ? (
  571.   ospl0 = spl0;
  572.   spl0 = b0J * spl0 + b1J * xl1J + b2J * xl2J - a1J * yl1J - a2J * yl2J;
  573.   xl2J = xl1J;
  574.   xl1J = ospl0;
  575.   yl2J = yl1J;
  576.   yl1J = spl0;
  577.  
  578.   ospl1 = spl1;
  579.   spl1 = b0J * spl1 + b1J * xr1J + b2J * xr2J - a1J * yr1J - a2J * yr2J;
  580.   xr2J = xr1J;
  581.   xr1J = ospl1;
  582.   yr2J = yr1J;
  583.   yr1J = spl1;
  584.   );
  585.  
  586.  
  587.   slider11 != 0 ? (
  588.   ospl0 = spl0;
  589.   spl0 = b0K * spl0 + b1K * xl1K + b2K * xl2K - a1K * yl1K - a2K * yl2K;
  590.   xl2K = xl1K;
  591.   xl1K = ospl0;
  592.   yl2K = yl1K;
  593.   yl1K = spl0;
  594.  
  595.   ospl1 = spl1;
  596.   spl1 = b0K * spl1 + b1K * xr1K + b2K * xr2K - a1K * yr1K - a2K * yr2K;
  597.   xr2K = xr1K;
  598.   xr1K = ospl1;
  599.   yr2K = yr1K;
  600.   yr1K = spl1;
  601.   );
  602.  
  603.  
  604.   slider12 != 0 ? (
  605.   ospl0 = spl0;
  606.   spl0 = b0L * spl0 + b1L * xl1L + b2L * xl2L - a1L * yl1L - a2L * yl2L;
  607.   xl2L = xl1L;
  608.   xl1L = ospl0;
  609.   yl2L = yl1L;
  610.   yl1L = spl0;
  611.  
  612.   ospl1 = spl1;
  613.   spl1 = b0L * spl1 + b1L * xr1L + b2L * xr2L - a1L * yr1L - a2L * yr2L;
  614.   xr2L = xr1L;
  615.   xr1L = ospl1;
  616.   yr2L = yr1L;
  617.   yr1L = spl1;
  618.   );
  619.  
  620.  
  621.   slider13 != 0 ? (
  622.   ospl0 = spl0;
  623.   spl0 = b0M * spl0 + b1M * xl1M + b2M * xl2M - a1M * yl1M - a2M * yl2M;
  624.   xl2M = xl1M;
  625.   xl1M = ospl0;
  626.   yl2M = yl1M;
  627.   yl1M = spl0;
  628.  
  629.   ospl1 = spl1;
  630.   spl1 = b0M * spl1 + b1M * xr1M + b2M * xr2M - a1M * yr1M - a2M * yr2M;
  631.   xr2M = xr1M;
  632.   xr1M = ospl1;
  633.   yr2M = yr1M;
  634.   yr1M = spl1;
  635.   );
  636.  
  637.  
  638.   slider14 != 0 ? (
  639.   ospl0 = spl0;
  640.   spl0 = b0N * spl0 + b1N * xl1N + b2N * xl2N - a1N * yl1N - a2N * yl2N;
  641.   xl2N = xl1N;
  642.   xl1N = ospl0;
  643.   yl2N = yl1N;
  644.   yl1N = spl0;
  645.  
  646.   ospl1 = spl1;
  647.   spl1 = b0N * spl1 + b1N * xr1N + b2N * xr2N - a1N * yr1N - a2N * yr2N;
  648.   xr2N = xr1N;
  649.   xr1N = ospl1;
  650.   yr2N = yr1N;
  651.   yr1N = spl1;
  652.   );
  653.  
  654.  
  655.   slider15 != 22000 ? (
  656.   ospl0 = spl0;
  657.   spl0 = b0P * spl0 + b1P * xl1P + b2P * xl2P - a1P * yl1P - a2P * yl2P;
  658.   xl2P = xl1P;
  659.   xl1P = ospl0;
  660.   yl2P = yl1P;
  661.   yl1P = spl0;
  662.  
  663.   ospl1 = spl1;
  664.   spl1 = b0P * spl1 + b1P * xr1P + b2P * xr2P - a1P * yr1P - a2P * yr2P;
  665.   xr2P = xr1P;
  666.   xr1P = ospl1;
  667.   yr2P = yr1P;
  668.   yr1P = spl1;
  669.   );
  670.  
  671.  
  672.  
  673.   spl0 *= gain;
  674.   spl1 *= gain;
  675.