home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February / PCWorld_2008-02_cd.bin / audio-video / reaper / reaper2028-install.exe / Effects / SStillwell / dirtsqueeze < prev    next >
Text File  |  2007-12-03  |  4KB  |  113 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. desc:prog. dependent comp. with saturation
  25.  
  26. slider1:0<-60,0,0.1>Threshold (dB)
  27. slider2:1<1,20,0.1>Ratio
  28. slider3:0<0,1,1{No,Yes}>Auto-makeup
  29. slider4:0<-20,20,0.1>Manual gain
  30.  
  31. @init
  32.   i=0;
  33.   loop(
  34.     120,
  35.     attimes[i] = ((0.08924 / i) + (0.60755 / (i ^ 2)) - 0.00006)*srate;
  36.     i+=1;
  37.   );
  38.   overthresh = 0;
  39.   compressing = 0;
  40.   relfactor = 2 ^ (-20.833333333 / srate);
  41.   attime=0;
  42.   atctr=0;
  43.   prevmax=0;
  44.   maxover=0;
  45.   relctr=0;
  46.   cratio=0;
  47.   ratio=0;
  48.  
  49. @slider
  50.   thresh = slider1;
  51.   threshv = 2^(thresh/6);
  52.   ratio = slider2;
  53.   cratio = ratio;
  54.   autogain = slider3;
  55.   makeup = autogain ? (((abs(thresh) - (abs(thresh) / ratio))/2) + slider4) : slider4;
  56.   makeupv = 2^(makeup / 6);
  57.  
  58. @sample
  59.   aspl0 = abs(spl0);
  60.   aspl1 = abs(spl1);
  61.   maxspl = max(aspl0,aspl1);
  62.   maxspl > threshv ? (
  63.     overthresh = 1;
  64.     overdb = log(6 * maxspl / threshv) / log(2);
  65.     overdb > maxover ? (
  66.         maxover = overdb;
  67.         prevattime = attime;
  68.         attime = attimes[floor(overdb+0.5)];
  69.         prevattime > 0 ? (atctr += prevattime - attime);
  70.      atctr = min(atctr,attime);
  71.         reltime = srate * overdb / 125;
  72.         relctr = 0;
  73.         cratio = ratio;
  74.     );
  75.     relctr = 0;
  76.     releasing = 0;
  77.     atctr == 0 ? atctr = attimes[floor(overdb)];
  78.   );
  79.   overthresh ? (
  80.      atctr += 1;
  81.      atctr >= attime ? (
  82.        compressing = 1;
  83.        relctr = 0;
  84.      );
  85.   );
  86.   compressing ? (
  87.     overthresh = 0;
  88.     atctr = 0;
  89.     thresh0 = threshv * sign(spl0);
  90.     thresh1 = threshv * sign(spl1);
  91.     spl0 = (aspl0 <= threshv ? spl0 : (thresh0 + (spl0-thresh0) / cratio));
  92.     spl1 = (aspl1 <= threshv ? spl1 : (thresh1 + (spl1-thresh1) / cratio));
  93.   );
  94.   maxspl <= threshv ? (
  95.     relctr += 1;
  96.     releasing = 1;
  97.     relctr >= (reltime - 1000) ? (
  98.       compressing = 0;
  99.       overthresh = 0;
  100.       relctr = 0;
  101.       reltime = 0;
  102.       atctr = 0;
  103.       attime = 0;
  104.       releasing = 0;
  105.       cratio = ratio;
  106.     );
  107.   );
  108.   releasing ? (
  109.     cratio = max(1,cratio * relfactor);
  110.   );
  111.   spl0 = spl0 * makeupv;
  112.   spl1 = spl1 * makeupv;  
  113.