[preset00]
fRating=3.000000
fGammaAdj=1.994000
fDecay=0.930000
fVideoEchoZoom=0.999834
fVideoEchoAlpha=0.500000
nVideoEchoOrientation=1
nWaveMode=0
bAdditiveWaves=0
bWaveDots=0
bWaveThick=1
bModWaveAlphaByVolume=0
bMaximizeWaveColor=0
bTexWrap=1
bDarkenCenter=0
bRedBlueStereo=0
bBrighten=0
bDarken=0
bSolarize=0
bInvert=0
fWaveAlpha=100.000000
fWaveScale=0.197884
fWaveSmoothing=0.750000
fWaveParam=0.500100
fModWaveAlphaStart=0.750000
fModWaveAlphaEnd=0.950000
fWarpAnimSpeed=1.000000
fWarpScale=1.000000
fZoomExponent=1.000000
fShader=0.000000
zoom=0.999900
rot=0.100000
cx=0.500000
cy=0.500000
dx=0.000000
dy=0.000000
warp=1.000000
sx=1.000000
sy=1.000000
wave_r=0.500000
wave_g=0.500000
wave_b=0.500000
wave_x=0.500000
wave_y=0.500000
ob_size=0.000000
ob_r=0.000000
ob_g=0.000000
ob_b=0.000000
ob_a=0.600000
ib_size=0.005000
ib_r=0.500000
ib_g=0.500000
ib_b=0.500000
ib_a=0.380000
nMotionVectorsX=12.799999
nMotionVectorsY=11.399998
mv_dx=0.000000
mv_dy=0.000000
mv_l=5.000000
mv_r=1.000000
mv_g=1.000000
mv_b=1.000000
mv_a=1.000000
per_frame_1=warp=0;
per_frame_2=vol = 0.167*(bass+mid);
per_frame_3=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
per_frame_4=xamp = xamp + 0.5*(xamptarg-xamp);
per_frame_5=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
per_frame_6=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
per_frame_7=xpos = xpos + 0.001*xspeed;
per_frame_8=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
per_frame_9=yamp = yamp + 0.5*(yamptarg-yamp);
per_frame_10=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
per_frame_11=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
per_frame_12=ypos = ypos + 0.001*yspeed;
per_frame_13=ib_r = ib_r + 2.3*sin(time*4.132)*xpos;
per_frame_14=ib_g = ib_g + 2.3*sin(time*3.547)*ypos;
per_frame_15=ib_b = ib_b + 0.499*sin(time*0.731);
per_frame_16=ob_g = beat*treb*0.5;
per_frame_17=ob_a = 0.5 + 0.5*beat;
per_frame_18=ob_size = ob_size + 0.01*beat;
per_frame_19=mv_dx =0.15* xpos;
per_frame_20=mv_dy = 0.15*ypos;
per_frame_21=mv_l = 0.15;
per_frame_22=mv_r = 1 - ib_g;
per_frame_23=mv_b = ib_r;
per_frame_24=mv_g = 1-ib_b;
per_frame_25=volume = 0.15*(bass_att+bass+mid+mid_att);
per_frame_26=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
per_frame_27=lastbeat = if(equal(lastbeat,0),time,lastbeat);
per_frame_28=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
per_frame_29=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
per_frame_30=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
per_frame_31=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
per_frame_32=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
per_frame_33=lastbeat = if(beat,time,lastbeat);
per_frame_34=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
per_frame_35=Eff_test = if(below(Eff_size*200,500),1,0);
per_frame_36=Eff_size = if(beat,2.5*Eff_test+ 0.0025*rand(500),Old_Eff_size);
per_frame_37=Old_Eff_size =Eff_size;
per_frame_38=q5 = Eff_size;
per_frame_39=mv_l = if(Eff_test,q5*3,mv_l);
per_frame_40=q6 = 3*xpos;
per_frame_41=q4 = 3*ypos;
per_frame_42=decay = decay + if(Eff_test,0,0.07);
per_frame_43=wave_r = 1-ib_g;
per_frame_44=wave_g = 1-ib_b;
per_frame_45=wave_b = 1-ib_b;
per_pixel_1=q1 = 0.8*((sqrt(2)*0.5)-rad);
per_pixel_2=q3  = below(rad,0.1*q5+ 0.3);
per_pixel_3=q7 =if(q3,0,12 + int(3*(rad)));
per_pixel_4=q8 =if(q3,0,10 + int(1*(rad)));
per_pixel_5=cx =if(q3,0.5,(0&(x*q7-q1))*(1/q7)+0.1*q1);
per_pixel_6=cy =if(q3,0.5,(0&(y*q8-0.3*rad))*(1/(q8-0.3*rad))+0.1*(0.3*rad));
per_pixel_7=rot = if(q3,2*q6*rad,0.1*(0.5*sqrt(2)-rad)- 0.1*bass_att-0.02*cx*cy);
per_pixel_8=zoomexp = if(q3,0.2+0.2*(1-rad)+0.1*q5+ 0.5*q4,zoomexp);
per_pixel_9=zoom = zoomexp-0.005*(rad);
per_pixel_10=dx = if(q3,0,-0.0015);
per_pixel_11=sx = 1.05 + if(q3,0,0.05*q4);
per_pixel_12=sy = 1.05 + if(q3,0,0.05*q4);
per_frame_init_1=Eff_test =1;
per_frame_init_2=Eff_size = 400;
