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 / Delay / delay next >
Text File  |  2007-02-12  |  2KB  |  73 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:300<0,4000,20>delay (ms)
  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,1,1{off,on}>resample on length change
  10.  
  11. @init
  12. delaypos=0;
  13.  
  14. @slider
  15. odelay=delaylen;
  16. delaylen=min(slider1 * srate / 1000,500000);
  17. odelay != delaylen ? (
  18.   slider6 && odelay > delaylen ? (
  19.       // resample down delay buffer, heh
  20.       rspos=0; rspos2=0;
  21.       drspos=odelay/delaylen;
  22.       loop(delaylen,
  23.          
  24.          tpos = ((rspos)|0)*2;
  25.          rspos2[0]=tpos[0];
  26.          rspos2[1]=tpos[1];
  27.  
  28.          rspos2+=2;
  29.          rspos+=drspos;
  30.       );
  31.       delaypos /= drspos;
  32.       delaypos|=0;
  33.       delaypos<0?delaypos=0;
  34.   ) : (
  35.     slider6 && odelay < delaylen ? (
  36.         // resample up delay buffer, heh
  37.         drspos=odelay/delaylen;
  38.         rspos=odelay; 
  39.         rspos2=delaylen*2;
  40.         loop(delaylen,
  41.            rspos-=drspos;
  42.            rspos2-=2;
  43.          
  44.            tpos = ((rspos)|0)*2;
  45.            rspos2[0]=tpos[0];
  46.            rspos2[1]=tpos[1];
  47.  
  48.         );
  49.         delaypos /= drspos;
  50.         delaypos|=0;
  51.         delaypos<0?delaypos=0;
  52.     ) : (!slider6 && delaypos >= delaylen ? delaypos = 0);
  53.   );
  54.   freembuf(delaylen*2);
  55. );
  56. wetmix = 2 ^(slider2/6);
  57. drymix = 2 ^(slider3/6);
  58. wetmix2 = 2 ^(slider4/6);
  59. drymix2 = 2 ^(slider5/6);
  60.  
  61. @sample
  62. dpint = delaypos*2;
  63. os1=dpint[0];
  64. os2=dpint[1];
  65.  
  66. dpint[0]=min(max(spl0*drymix + os1*wetmix,-4),4);
  67. dpint[1]=min(max(spl1*drymix + os2*wetmix,-4),4);
  68.  
  69. (delaypos+=1) >= delaylen ? delaypos=0;
  70.  
  71. spl0=spl0*drymix2 + os1*wetmix2;
  72. spl1=spl1*drymix2 + os2*wetmix2;
  73.