home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February / PCWorld_2008-02_cd.bin / audio-video / reaper / reaper2028-install.exe / Effects / LOSER / SP1LimiterJS < prev    next >
Text File  |  2007-12-09  |  2KB  |  85 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.  
  16. desc:Simple Peak-1 Limiter
  17. slider1:-0<-20,0,.1>Treshold (dB)
  18. slider2:0,REDUCTION (dB)
  19.  
  20. @init
  21. gain = 1; c = 8.65617025; dc = 10^(-30);
  22.  
  23.  
  24. gr_meter=1;
  25. gr_meter_decay = exp(1/(1*srate));
  26.  
  27.  
  28. @slider
  29.  
  30. thresh = exp(slider1/c); seekgain = 1;
  31. gain = 1;
  32. t = 0;
  33. b = -exp(-62.83185307 / srate );
  34. a = 1.0 + b;
  35.  
  36. @sample
  37. rms = max( abs(spl0) , abs(spl1) );
  38. rms = max( sqrt( (t = a*rms-b*t+dc)-dc) , rms);
  39. (rms > thresh) ? gain = rms : gain = thresh;
  40. spl0 /= gain;
  41. spl1 /= gain;
  42. slider2 = log(thresh/gain)*c;
  43. sliderchange(2);
  44.  
  45. gain < gr_meter ? gr_meter=gain : ( gr_meter*=gr_meter_decay; gr_meter>1?gr_meter=1; );
  46.  
  47. @gfx 0 24 // request horizontal/vertical heights (0 means dont care)
  48.  
  49.   gr_meter *= exp(1/30); gr_meter>1?gr_meter=1; // decay meter here so if the audio processing stops it doesnt "stick"
  50.   gfx_r=1; gfx_g=gfx_b=0; gfx_a=0.8;
  51.   
  52.   meter_bot=20;
  53.   meter_h=min(gfx_h,32);
  54.   xscale=gfx_w*20/meter_bot;
  55.  
  56.   gfx_y=0;
  57.   gfx_x=gfx_w + log10(gr_meter)*xscale;
  58.   gfx_rectto(gfx_w,meter_h);
  59.  
  60.   gfx_r=gfx_g=gfx_b=1.0; gfx_a=0.6;
  61.  
  62.   s2=sqrt(2)/2;
  63.   g = s2;
  64.   while(
  65.     gfx_x=gfx_w + log10(g)*xscale;
  66.     gfx_x >= 0 ? 
  67.     (
  68.       gfx_y=0;
  69.       gfx_lineto(gfx_x,meter_h,0);
  70.       gfx_y=meter_h-gfx_texth;
  71.       gfx_x+=2;
  72.       gfx_drawnumber(log10(g)*20,0);
  73.       gfx_drawchar($'d');
  74.       gfx_drawchar($'B');
  75.     );
  76.     g*=s2;
  77.     gfx_x >=0;
  78.   );
  79.   gfx_a=1;
  80.  
  81.   gfx_x=0; gfx_y=meter_h/2 - gfx_texth/2;
  82.   gfx_drawnumber(log10(gr_meter)*20,1);
  83.   gfx_drawchar($'d');
  84.   gfx_drawchar($'B');
  85.