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 / LOSER / DVCJS < prev    next >
Text File  |  2007-05-05  |  2KB  |  56 lines

  1. // (C) 2006, Michael Gruhn.
  2.  
  3. // NO WARRANTY IS GRANTED. THIS PLUG-IN IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
  4. // WARRANTY OF ANY KIND. NO LIABILITY IS GRANTED, INCLUDING, BUT NOT LIMITED TO,
  5. // ANY DIRECT OR INDIRECT,  SPECIAL,  INCIDENTAL OR CONSEQUENTIAL DAMAGE ARISING
  6. // OUT OF  THE  USE  OR INABILITY  TO  USE  THIS PLUG-IN,  COMPUTER FAILTURE  OF
  7. // MALFUNCTION INCLUDED.  THE USE OF THE SOURCE CODE,  EITHER  PARTIALLY  OR  IN
  8. // TOTAL, IS ONLY GRANTED,  IF USED IN THE SENSE OF THE AUTHOR'S INTENTION,  AND
  9. // USED WITH ACKNOWLEDGEMENT OF THE AUTHOR. FURTHERMORE IS THIS PLUG-IN A  THIRD
  10. // PARTY CONTRIBUTION,  EVEN IF INCLUDED IN REAPER(TM),  COCKOS INCORPORATED  OR
  11. // ITS AFFILIATES HAVE NOTHING TO DO WITH IT.  LAST BUT NOT LEAST, BY USING THIS
  12. // PLUG-IN YOU RELINQUISH YOUR CLAIM TO SUE IT'S AUTHOR, AS WELL AS THE CLAIM TO
  13. // ENTRUST SOMEBODY ELSE WITH DOING SO.
  14.  
  15. desc:Digital Versatile Compressor (DVC)
  16. slider1:-.1<-30,-.1,.1>Threshold (dB)
  17. slider2:1<1,20,.1>Ratio
  18. slider3:20<0,500,1>Attack (ms)
  19. slider4:200<0,1000,1>Release (ms)
  20. slider5:1<0,1,1{NO,YES}>Auto Make Up
  21. slider6:0<-12,12,.1>Output (dB)
  22. slider7:0,REDUCTION (dB)
  23.  
  24. @init
  25. gain = seekgain = 1;
  26. c = 8.65617025;
  27. dc = 10^-30;
  28.  
  29. gain = seekGain = 1;
  30. t = 0;
  31. b = -exp(-62.83185307 / srate );
  32. a = 1.0 + b;
  33.  
  34. @slider
  35. threshDB = slider1;
  36. thresh = exp(threshDB/c);
  37. ratio = 1/slider2;
  38.  
  39. attack = exp( threshDB / (slider3*srate/1000) / c);
  40. release = exp( threshdB / (slider4*srate/1000) / c );
  41.  
  42. volume = exp(slider6/c) / (slider5 ? exp(( threshDB -threshDB*ratio )/c)  : 1 );
  43.  
  44. seekgain = 1;
  45.  
  46. @sample
  47. rms = max( abs(spl0) , abs(spl1) );
  48. rms = max( sqrt( (t = a*rms-b*t) ) , rms);    
  49. seekGain = ((rms > thresh) ? exp((threshDB + (log(rms)*c-threshDB)*ratio) /c) / rms : 1);
  50. gain = ((gain > seekGain) ? max( gain*attack , seekGain ) : min( gain/release , seekGain ));
  51. spl0 *= gain * volume;
  52. spl1 *= gain * volume;
  53. slider7 = log(gain)*c;
  54. sliderchange(64);
  55.  
  56.