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

  1. // This effect Copyright (C) 2004 and later Cockos Incorporated
  2. // License: GPL - http://www.gnu.org/licenses/gpl.html
  3. desc: ping-pong beatsync delay
  4. slider1:0<0,13000,1>delay (ms) - 0 for beatsync
  5. slider2:-5<-120,6,1>feedback (dB)
  6. slider3:0<-120,6,1>mix in (dB)
  7. slider4:-6<-120,6,1>output wet (dB)
  8. slider5:0<-120,6,1>output dry (dB)
  9. slider6:0<0,100,1>ping-pong width%
  10. slider7:0.25<0.0625,4,0.0625>beatsync - fraction of whole note
  11.  
  12. @init
  13.   delaypos=0;
  14.   pongloc=0;
  15.  
  16. @slider
  17.   odelay=delaylen;
  18.   beat = 240 * slider7;
  19.   wetmix = 2 ^(slider2/6);
  20.   drymix = 2 ^(slider3/6);
  21.   wetmix2 = 2 ^(slider4/6);
  22.   drymix2 = 2 ^(slider5/6);
  23.   pongwidth = slider6/100;
  24.   pongpan=(1-pongwidth)/2;
  25.  
  26. @block
  27.   slider1==0 ? (
  28.     delaylen=min((beat / tempo)*srate,500000);
  29.   ):(
  30.     delaylen=min(slider1 * srate / 1000,500000);
  31.   );
  32.  
  33. @sample
  34.   dpint = delaypos*2;
  35.   os1=dpint[0];
  36.   os2=dpint[1];
  37.  
  38.   dpint[0]=min(max(spl0*drymix + os1*wetmix,-4),4);
  39.   dpint[1]=min(max(spl1*drymix + os2*wetmix,-4),4);
  40.  
  41.   switching=0;
  42.  
  43.   abs(delaypos)<400 ? (
  44.     switch = pongloc ? abs(delaypos)/400 : ((400 - abs(delaypos))/400);
  45.   );
  46.  
  47.   (delaypos+=1) >= delaylen ? (
  48.     delaypos=0;
  49.     pongloc = (pongloc * -1) + 1;
  50.   );
  51.  
  52.   os = (os1 + os2) / 2;
  53.   panloc = pongpan + pongwidth * switch;
  54.  
  55.   spl0=spl0*drymix2 + os*wetmix2*(panloc);
  56.   spl1=spl1*drymix2 + os*wetmix2*(1-panloc);
  57.