home *** CD-ROM | disk | FTP | other *** search
- // 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;
-