home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / temacd / reaper / reaper147-install.exe / Effects / LoopSamplers / autoloop next >
Text File  |  2005-06-24  |  2KB  |  103 lines

  1. // This effect Copyright (C) 2004 and later Cockos Incorporated
  2. // License: GPL - http://www.gnu.org/licenses/gpl.html
  3.  
  4. desc:auto loop
  5.  
  6. slider1:0<-120,6,1>wet (dB)
  7. slider2:0<-120,6,1>dry (dB)
  8. slider3:-30<-100,60,1>threshold (dB)
  9. slider4:100<1,1000,20>thresh len (ms)
  10. slider5:60<0,400,10>edge overlap (ms)
  11. slider6:100<0,4000,30>min len (ms)
  12. slider7:0<-100,6,1>decay (dB)
  13. slider8:1<0,1,1{disabled,enabled}>record
  14.  
  15. @init
  16.     isplay=1; 
  17.     silcnt=rbufpos=pbuflen=pbuf=0; 
  18.     rbuf=1000000/2;
  19.     sscnt=sstot=playfade=pbufpos=0;
  20.  
  21.  
  22. @serialize
  23.  
  24. file_var(0,isplay);
  25. file_var(0,pbuf);
  26. file_var(0,pbuflen);
  27. file_var(0,playfade);
  28. isplay ? file_mem(0,pbuf,pbuflen);
  29.  
  30.  
  31.  
  32. @slider
  33.     wet=2 ^ (slider1/6);
  34.     dry=2 ^ (slider2/6);
  35.     silthres=2 ^ (slider3/6); 
  36.     sillen=srate*slider4/1000; 
  37.     olsize=srate*slider5/1000; 
  38.     minsize=slider6*srate/1000;
  39.     decay=2 ^ (slider7/6); 
  40.     playfade=0;
  41.  
  42. @sample
  43.  
  44. s0=spl0;
  45. issil=abs(spl0) < silthres;
  46.  
  47. slider8 ? (
  48.   isplay ? (
  49.      rbuf[sstot]=s0;
  50.      sstot+=1;
  51.  
  52.      issil ? (
  53.          sscnt+=1;
  54.          sscnt > sstot*0.5 ? sstot=sscnt=0; // if our silent samples are a significant percent
  55.      );
  56.     
  57.      sstot > sillen ? (rbufpos=sstot; isplay=sstot=sscnt=silcnt=0; );
  58.   ) : (
  59.  
  60.     rbuf[rbufpos]=spl0;
  61.  
  62.     (rbufpos+=1) >= 500000 ? (
  63.       isplay=1;
  64.       pbuflen=rbufpos-silcnt;
  65.       tmp=rbuf; rbuf=pbuf; pbuf=tmp;
  66.       rbufpos=pbufpos=0;
  67.     );
  68.  
  69.     issil ? (
  70.       (silcnt+=1) > sillen ? (
  71.          rbufpos > minsize ? (
  72.              isplay=1;
  73.              pbuflen=rbufpos-silcnt;
  74.              tmp=rbuf; rbuf=pbuf; pbuf=tmp;
  75.              rbufpos=0;
  76.              pbufpos=silcnt;
  77.          );
  78.          silcnt=0;
  79.       );
  80.     ) 
  81.     : 
  82.     silcnt=0;
  83.   );
  84. );
  85.  
  86. isplay || playfade > 0 ? (
  87.  
  88.   spl0= (pbuf[pbufpos]*=decay);
  89.  
  90.   pbufpos < olsize ? (
  91.     tmpsc=pbufpos/olsize;
  92.     spl0=spl0*tmpsc + pbuf[pbuflen-olsize+pbufpos]*(1-tmpsc);
  93.   );
  94.  
  95.   spl0=spl0*playfade;
  96.   playfade = isplay ? min(playfade+0.01,1) : max(playfade-0.01,0);
  97.   (pbufpos+=1) > (pbuflen-olsize-1) ? pbufpos=0;
  98. );
  99.  
  100. spl0=spl0*wet + s0*dry;
  101.  
  102. spl1=spl0;
  103.