home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February / PCWorld_2008-02_cd.bin / audio-video / reaper / reaper2028-install.exe / Effects / LOSER / Compciter < prev    next >
Text File  |  2007-12-03  |  2KB  |  61 lines

  1. // (C) 2007, Michael Gruhn.
  2.  
  3. // NO WARRANTY IS GRANTED.  THIS PLUG-IN  IS PROVIDED FOR FREE  ON  AN  "AS  IS"
  4. // BASIS, WITHOUT WARRANTY OF ANY KIND.  NO LIABILITY IS GRANTED, INCLUDING, BUT
  5. // NOT LIMITED TO, ANY DIRECT OR INDIRECT,  SPECIAL, INCIDENTAL OR CONSEQUENTIAL
  6. // DAMAGE ARISING OUT OF THE USE  OR INABILITY  TO  USE  THIS PLUG-IN,  COMPUTER
  7. // FAILTURE  OF  MALFUNCTION  INCLUDED.  THE  USE  OF THE  SOURCE  CODE,  EITHER
  8. // PARTIALLY OR IN TOTAL, IS ONLY GRANTED,  IF USED IN THE SENSE OF THE AUTHOR'S
  9. // INTENTION,  AND USED WITH ACKNOWLEDGEMENT OF THE AUTHOR.  LAST BUT NOT LEAST,
  10. // BY USING THIS  PLUG-IN YOU RELINQUISH YOUR CLAIM TO SUE IT'S AUTHOR,  AS WELL
  11. // AS YOUR CLAIM TO ENTRUST SOMEBODY ELSE WITH DOING SO.
  12.  
  13. // NOTE: This is a early alpha release!
  14.  
  15. desc:Compciter
  16. slider1:0<0,60,.1>Drive (dB)
  17. slider2:25<0,100,1>Distortion (%)
  18. slider3:5000<800,12000,1>High-Pass (Hz)
  19. slider4:-6<-60,24,1>Wet (dB)
  20. slider5:0<-120,0,1>Dry (dB)
  21.  
  22.  
  23. @init
  24. gain = seekgain = 1;
  25. c = 8.65617025;
  26. dc = 10^-30;
  27.  
  28. gain = seekGain = 1;
  29.  
  30. @slider
  31. threshDB = -slider1;
  32. thresh = exp(threshDB/c);
  33. ratio = 1/20;
  34.  
  35. release = exp( -60 / (    pow(1-slider2/100,3)   *500*srate/1000) / c );
  36.  
  37. t0 = t1 = 0;
  38. blp = -exp(-2*$pi*slider3*3 / srate );
  39. alp = 1.0 + blp;
  40.  
  41. wet = exp(slider4/c) / exp(( threshDB -threshDB*ratio )/c);
  42. dry = exp(slider5/c);
  43.  
  44. seekgain = 1;
  45.  
  46.  
  47. @sample
  48. s0 =      (t00 = alp*spl0-blp*t00);
  49. s1 =      (t01 = alp*spl1-blp*t01);
  50. s0 =      (t10 = alp*s0  -blp*t10);
  51. s1 =      (t11 = alp*s1  -blp*t11);
  52. s0 = spl0-(t20 = alp*s0-blp*t20);
  53. s1 = spl1-(t21 = alp*s1-blp*t21);
  54.  
  55. rms = max( abs(spl0) , abs(spl1) );
  56. seekGain = ((rms > thresh) ? exp((threshDB + (log(rms)*c-threshDB)*ratio) /c) / rms : 1);
  57. gain = ((gain > seekGain) ? seekGain : min( gain/release , seekGain ));
  58. spl0 = spl0*dry + s0 *gain * wet;
  59. spl1 = spl1*dry + s1 *gain * wet;
  60.  
  61.