[preset00]
fRating=3.000000
fGammaAdj=2
fDecay=0.98
fVideoEchoZoom=0.998169
fVideoEchoAlpha=0.5
nVideoEchoOrientation=3
nWaveMode=0
bAdditiveWaves=0
bWaveDots=0
bModWaveAlphaByVolume=0
bMaximizeWaveColor=1
bTexWrap=1
bDarkenCenter=0
bMotionVectorsOn=0
bRedBlueStereo=0
nMotionVectorsX=12
nMotionVectorsY=9
bBrighten=0
bDarken=0
bSolarize=0
bInvert=0
fWaveAlpha=0.320553
fWaveScale=1
fWaveSmoothing=0.45
fWaveParam=0
fModWaveAlphaStart=0.75
fModWaveAlphaEnd=0.95
fWarpAnimSpeed=1
fWarpScale=1.772
fZoomExponent=1.96
fShader=0.19
zoom=0.999698
rot=0
cx=0.5
cy=0.5
dx=0
dy=0
warp=0.513
sx=1
sy=1
wave_r=0.5
wave_g=0.5
wave_b=0.5
wave_x=0.5
wave_y=0.5
ob_size=0.01
ob_r=0
ob_g=0
ob_b=0
ob_a=0.58
ib_size=0.015
ib_r=0.55
ib_g=1
ib_b=0.4999
ib_a=1
per_frame_1=warp=0;
per_frame_2=old_bass_flop=bass_flop;
per_frame_3=old_treb_flop=treb_flop;
per_frame_4=old_mid_flop=mid_flop;
per_frame_5=chaos=.9+.1*sin(pulse);
per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
per_frame_16=bass_residual = bass_changed*sin(pulse*.1*entropy) + bnot(bass_changed)*bass_residual;
per_frame_17=treb_residual = treb_changed*sin(pulse*.1*entropy) + bnot(treb_changed)*treb_residual;
per_frame_18=mid_residual = mid_changed*sin(pulse*.1*entropy) + bnot(mid_changed)*mid_residual;
per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid+thresh+treb_thresh)*.052+-(bass+treb+mid)*.01);
per_frame_20=q1=mid_residual;
per_frame_21=q2=bass_residual;
per_frame_22=q3=treb_residual;
per_frame_23=q4=sin(pulse);
per_frame_24=q5=sin(pulse/2);
per_frame_25=wave_r=wave_r+.5*bass_residual;
per_frame_26=wave_r=wave_g+.5*mid_residual;
per_frame_27=wave_r=wave_b+.5*treb_residual;
per_frame_28=wave_mystery=mid_residual;
per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
per_frame_32=ob_a=.05+.05*cos(wave_r+pulse*.03);
per_frame_33=ob_size=.2+.2*treb_residual;
per_frame_34=ib_r=if(bass_flop,ob_b,ob_g);
per_frame_35=ib_b=if(treb_flop,ob_g,ob_r);
per_frame_36=ib_g=if(mid_flop,ob_r,ob_b);
per_frame_37=ib_size=ob_size*cos(wave_g+pulse*0.4)*.5;
per_pixel_1=radix=if(above(q3,0),min(x,y),max(x,y));
per_pixel_2=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
per_pixel_3=rot=if(above(q4,0),rad*.2*q5,rot+.3*sin(radix*3.14*(q1+q2+q3)));
per_pixel_4=zoom=if(above(q2,0),zoom-cos(radix*3.14*q2)*.1,if(above(q3,0),1+q1*.05,1+.07*cos(radix*10*q1)));
