[preset00]
fRating=3.0
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;
