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_tempo < prev    next >
Text File  |  2007-12-03  |  2KB  |  82 lines

  1. // This effect Copyright (C) 2004 and later Cockos Incorporated
  2. // License: GPL - http://www.gnu.org/licenses/gpl.html
  3. desc: simple delay
  4. slider1:0<0,13000,1>delay (ms) - 0 for beatsync
  5. slider2:-120<-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,1,1{off,on}>resample on length change
  10. slider7:0.25<0.0625,4,0.0625>beatsync - fraction of whole note
  11.  
  12. @init
  13. delaypos=0;
  14.  
  15. @slider
  16. beat = 240 * slider7;
  17. wetmix = 2 ^(slider2/6);
  18. drymix = 2 ^(slider3/6);
  19. wetmix2 = 2 ^(slider4/6);
  20. drymix2 = 2 ^(slider5/6);
  21.  
  22.  
  23. @block
  24. odelay=delaylen;
  25. slider1==0 ? (
  26.   delaylen=min((beat / tempo)*srate,500000);
  27. ):(
  28.   delaylen=min(slider1 * srate / 1000,500000);
  29. );
  30. odelay != delaylen ? (
  31.   slider6 && odelay > delaylen ? (
  32.       // resample down delay buffer, heh
  33.       rspos=0; rspos2=0;
  34.       drspos=odelay/delaylen;
  35.       loop(delaylen,
  36.          
  37.          tpos = ((rspos)|0)*2;
  38.          rspos2[0]=tpos[0];
  39.          rspos2[1]=tpos[1];
  40.  
  41.          rspos2+=2;
  42.          rspos+=drspos;
  43.       );
  44.       delaypos /= drspos;
  45.       delaypos|=0;
  46.       delaypos<0?delaypos=0;
  47.   ) : (
  48.     slider6 && odelay < delaylen ? (
  49.         // resample up delay buffer, heh
  50.         drspos=odelay/delaylen;
  51.         rspos=odelay; 
  52.         rspos2=delaylen*2;
  53.         loop(delaylen,
  54.            rspos-=drspos;
  55.            rspos2-=2;
  56.          
  57.            tpos = ((rspos)|0)*2;
  58.            rspos2[0]=tpos[0];
  59.            rspos2[1]=tpos[1];
  60.  
  61.         );
  62.         delaypos /= drspos;
  63.         delaypos|=0;
  64.         delaypos<0?delaypos=0;
  65.     ) : (!slider6 && delaypos >= delaylen ? delaypos = 0);
  66.   );
  67.   freembuf(delaylen*2);
  68. );
  69.  
  70. @sample
  71. dpint = delaypos*2;
  72. os1=dpint[0];
  73. os2=dpint[1];
  74.  
  75. dpint[0]=min(max(spl0*drymix + os1*wetmix,-4),4);
  76. dpint[1]=min(max(spl1*drymix + os2*wetmix,-4),4);
  77.  
  78. (delaypos+=1) >= delaylen ? delaypos=0;
  79.  
  80. spl0=spl0*drymix2 + os1*wetmix2;
  81. spl1=spl1*drymix2 + os2*wetmix2;
  82.