[preset00]
fRating=3.000000
fGammaAdj=1.980001
fDecay=0.99
fVideoEchoZoom=2
fVideoEchoAlpha=0
nVideoEchoOrientation=0
nWaveMode=5
bAdditiveWaves=0
bWaveDots=1
bWaveThick=1
bModWaveAlphaByVolume=1
bMaximizeWaveColor=0
bTexWrap=1
bDarkenCenter=0
bRedBlueStereo=0
bBrighten=0
bDarken=1
bSolarize=0
bInvert=0
fWaveAlpha=1.179297
fWaveScale=0.491915
fWaveSmoothing=0.216
fWaveParam=-0.42
fModWaveAlphaStart=0.75
fModWaveAlphaEnd=0.95
fWarpAnimSpeed=1
fWarpScale=2.853
fZoomExponent=1
fShader=0
zoom=1.001829
rot=0
cx=0.5
cy=0.5
dx=0
dy=0
warp=0.01
sx=0.999005
sy=0.999005
wave_r=0.77
wave_g=0.6
wave_b=0.6
wave_x=0.42
wave_y=0.5
ob_size=0.02
ob_r=0
ob_g=0
ob_b=0
ob_a=0.250001
ib_size=0.155
ib_r=0.25
ib_g=0.25
ib_b=0.25
ib_a=0.27
nMotionVectorsX=30.079998
nMotionVectorsY=0
mv_dx=0.32
mv_dy=0.42
mv_l=3.199998
mv_r=1
mv_g=1
mv_b=1
mv_a=0
per_frame_1=warp = 0;
per_frame_2=wave_r = min(1,max(0,0.3*bass));
per_frame_3=wave_g = min(1,max(0,0.3*mid));
per_frame_4=wave_b = min(1,max(0,0.3*treb));
per_frame_5=
per_frame_6=//Thanks to Zylot for rainbow generator
per_frame_7=counter1 = if(equal(counter2,1),if(equal(counter1,1),0,counter1+.2),1);
per_frame_8=counter2 = if(equal(counter1,1),if(equal(counter2,1),0,counter2+.2),1);
per_frame_9=cdelay1 = if(equal(cdelay2,1),1,if(equal(colorcounter%2,1),if(equal(counter1,1),2 ,0), if(equal(counter2,1),2,0)));
per_frame_10=cdelay2 = if(equal(cdelay1,2),1,0);
per_frame_11=colorcounter = if(above(colorcounter,7),0,if(equal(cdelay1,1),colorcounter+1,colorcounter));
per_frame_12=ob_r = if(equal(colorcounter,1),1, if(equal(colorcounter,2),1, if(equal(colorcounter,3),1, if(equal(colorcounter,4),sin(counter2+2.1), if(equal(colorcounter,5),0, if(equal(colorcounter,6),0,sin(counter1)))))));
per_frame_13=ob_g = if(equal(colorcounter,1),0, if(equal(colorcounter,2),sin(counter2*.5), if(equal(colorcounter,3),sin((counter1+1.75)*.4), if(equal(colorcounter,4),1, if(equal(colorcounter,5),1, if(equal(colorcounter,6),sin(counter2+2),0))))));
per_frame_14=ob_b = if(equal(colorcounter,1),sin(counter1+2.1), if(equal(colorcounter,2),0, if(equal(colorcounter,3),0, if(equal(colorcounter,4),0, if(equal(colorcounter,5),sin(counter1), if(equal(colorcounter,6),1,1))))));
per_frame_15=
per_frame_16=mbass=max(bass_att,3);
per_frame_17=xmovn = 0.1*rand(10)*mbass*0.015*(1-2*above(rand(10),5));
per_frame_18=ymovn = pow(pow(mbass*0.015,2)-pow(xmovn,2),1/2)*(1-2*above(rand(10),5));
per_frame_19=//ymovn=.05;
per_frame_20=xmov = if(beat,xmovn,xmov*.9);
per_frame_21=ymov = if(beat,ymovn,ymov*.9);
per_frame_22=q1=oldx;
per_frame_23=q2=oldy;
per_frame_24=out_x = bor(above(q1+xmov,.9),below(q1+xmov,.1));
per_frame_25=out_y = bor(above(q2+ymov,.9),below(q2+ymov,.1));
per_frame_26=xmov = xmov + (-2*xmov*out_x);
per_frame_27=ymov = ymov + (-2*ymov*out_y);
per_frame_28=wave_x =  q1+xmov ;
per_frame_29=wave_y = q2+ymov;
per_frame_30=q1=wave_x;
per_frame_31=q2=wave_y;
per_frame_32=oldx = q1;
per_frame_33=oldy = q2;
per_frame_34=
per_frame_35=decay = decay - 0.91*(treble);
per_frame_36=
per_frame_37=//Thanks to krash for beat detection (modified)
per_frame_38=volume = 0.3*bass+mid;
per_frame_39=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
per_frame_40=lastbeat = lastbeat + equal(lastbeat,0)*time;
per_frame_41=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
per_frame_42=runmeanbass =(runmeanbass*2 + bass_att)/3;
per_frame_43=peakbass_att = max(bass_att,peakbass_att);
per_frame_44=beat = above(volume,0.8)*above(bass_att,runmeanbass*1.1)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
per_frame_45=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
per_frame_46=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
per_frame_47=lastbeat = beat*time + (1-beat)*lastbeat;
per_frame_48=peakbass_att = max(peakbass_att,1.1*meanbass_att);
per_frame_49=q3=volume+treb;
per_frame_50=monitor =meanbass_att;
per_pixel_1=mx= x-q1;
per_pixel_2=my = y-(1-q2);
per_pixel_3=mrad = pow(pow(mx,2)+pow(my,2),0.5)*pow(2,0.5);
per_pixel_4=cx = q1;
per_pixel_5=cy = 1-q2;
per_pixel_6=rot= rot + below(mrad-0.18,0)*0.5*sin(mrad*40)*(mrad-0.1)*40- above(mrad-0.18,0)*0.3*sin(mrad*2)*(mrad-0.1)*sin((cx-0.5)*(cy-0.5)*6.28)*q3;
per_pixel_7=zoom= zoom - above(mrad-0.18,0)*0.05*mrad*q3;
per_pixel_8=dx = dx +below(mrad-0.18,0)*0.015*(mx/mrad);
per_pixel_9=dy = dy +below(mrad-0.18,0)*0.015*(my/mrad);
per_frame_init_1=oldx=.5;
per_frame_init_2=oldy=.5;
