home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / temacd / reaper / reaper147-install.exe / Effects / SStillwell / delay_tempo < prev    next >
Text File  |  2006-08-18  |  2KB  |  85 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. odelay=delaylen;
  17. beat = 240 * slider7;
  18. slider1==0 ? (
  19.   delaylen=min((beat / tempo)*srate,600000);
  20. ):(
  21.   delaylen=min(slider1 * srate / 1000,600000);
  22. );
  23. odelay != delaylen ? (
  24.   slider6 && odelay > delaylen ? (
  25.       // resample down delay buffer, heh
  26.       rspos=0; rspos2=0;
  27.       drspos=odelay/delaylen;
  28.       loop(delaylen,
  29.          
  30.          tpos = ((rspos)|0)*2;
  31.          rspos2[0]=tpos[0];
  32.          rspos2[1]=tpos[1];
  33.  
  34.          rspos2+=2;
  35.          rspos+=drspos;
  36.       );
  37.       delaypos /= drspos;
  38.       delaypos|=0;
  39.       delaypos<0?delaypos=0;
  40.   ) : (
  41.     slider6 && odelay < delaylen ? (
  42.         // resample up delay buffer, heh
  43.         drspos=odelay/delaylen;
  44.         rspos=odelay; 
  45.         rspos2=delaylen*2;
  46.         loop(delaylen,
  47.            rspos-=drspos;
  48.            rspos2-=2;
  49.          
  50.            tpos = ((rspos)|0)*2;
  51.            rspos2[0]=tpos[0];
  52.            rspos2[1]=tpos[1];
  53.  
  54.         );
  55.         delaypos /= drspos;
  56.         delaypos|=0;
  57.         delaypos<0?delaypos=0;
  58.     ) : (!slider6 && delaypos >= delaylen ? delaypos = 0);
  59.   );
  60.   freembuf(delaylen*2);
  61. );
  62. wetmix = 2 ^(slider2/6);
  63. drymix = 2 ^(slider3/6);
  64. wetmix2 = 2 ^(slider4/6);
  65. drymix2 = 2 ^(slider5/6);
  66.  
  67. @sample
  68. odelay=delaylen;
  69. slider1==0 ? (
  70.   delaylen=min((beat / tempo)*srate,500000);
  71. ):(
  72.   delaylen=min(slider1 * srate / 1000,500000);
  73. );
  74. dpint = delaypos*2;
  75. os1=dpint[0];
  76. os2=dpint[1];
  77.  
  78. dpint[0]=min(max(spl0*drymix + os1*wetmix,-4),4);
  79. dpint[1]=min(max(spl1*drymix + os2*wetmix,-4),4);
  80.  
  81. (delaypos+=1) >= delaylen ? delaypos=0;
  82.  
  83. spl0=spl0*drymix2 + os1*wetmix2;
  84. spl1=spl1*drymix2 + os2*wetmix2;
  85.