// This effect Copyright (C) 2004 and later Cockos Incorporated
// License: GPL - http://www.gnu.org/licenses/gpl.html
desc: stereo bounce delay
slider1:300<0,4000,20>delay (ms)
slider2:-6<-120,6,1>upd wet (dB)
slider3:-6<-120,6,1>upd dry (dB)
slider4:-6<-120,6,1>out wet (dB)
slider5:-6<-120,6,1>out dry (dB)
slider6:0<0,1,1{off,on}>resample on length change
@init
delaypos=0;
@slider
odelay=delaylen;
delaylen=min(slider1 * srate / 1000,500000);
odelay != delaylen ? (
  slider6 && odelay > delaylen ? (
      // resample down delay buffer, heh
      rspos=0; rspos2=0;
      drspos=odelay/delaylen;
      loop(delaylen,
         
         tpos = ((rspos)|0)*2;
         rspos2[0]=tpos[0];
         rspos2[1]=tpos[1];
         rspos2+=2;
         rspos+=drspos;
      );
      delaypos /= drspos;
      delaypos|=0;
  ) : (
    slider6 && odelay < delaylen ? (
        // resample up delay buffer, heh
        drspos=odelay/delaylen;
        rspos=odelay; 
        rspos2=delaylen*2;
        loop(delaylen,
           rspos-=drspos;
           rspos2-=2;
         
           tpos = ((rspos)|0)*2;
           rspos2[0]=tpos[0];
           rspos2[1]=tpos[1];
        );
        delaypos /= drspos;
        delaypos|=0;
    ) : (!slider6 && delaypos >= delaylen ? delaypos = 0);
  );
  delaypos<0?delaypos=0;
  freembuf(delaylen*2);
);
wetmix = 2 ^(slider2/6);
drymix = (2 ^(slider3/6)) * 0.5;
wetmix2 = 2 ^(slider4/6);
drymix2 = 2 ^(slider5/6);
@sample
dpint = delaypos*2;
os1=dpint[0];
os2=dpint[1];
dpint[0]=min(max((spl0+spl1)*drymix + os2*wetmix,-4),4);
dpint[1]=min(max(os1*wetmix,-4),4);
(delaypos+=1) >= delaylen ? delaypos=0;
spl0=spl0*drymix2 + os1*wetmix2;
spl1=spl0*drymix2 + os2*wetmix2;
