[preset00]
fRating=2
fGammaAdj=1
fDecay=1
fVideoEchoZoom=1
fVideoEchoAlpha=0
nVideoEchoOrientation=0
nWaveMode=7
bAdditiveWaves=0
bWaveDots=0
bWaveThick=1
bModWaveAlphaByVolume=0
bMaximizeWaveColor=1
bTexWrap=1
bDarkenCenter=0
bRedBlueStereo=0
bBrighten=0
bDarken=1
bSolarize=0
bInvert=0
fWaveAlpha=1
fWaveScale=1.186471
fWaveSmoothing=0
fWaveParam=0
fModWaveAlphaStart=0.75
fModWaveAlphaEnd=0.95
fWarpAnimSpeed=1
fWarpScale=1
fZoomExponent=0.351767
fShader=0
zoom=0.980296
rot=0
cx=0.5
cy=0.5
dx=0
dy=0
warp=1
sx=1
sy=1
wave_r=1
wave_g=0.7
wave_b=0.5
wave_x=0.5
wave_y=0.5
ob_size=0.005
ob_r=1
ob_g=1
ob_b=1
ob_a=1
ib_size=0.005
ib_r=0
ib_g=0
ib_b=0
ib_a=1
nMotionVectorsX=1.28
nMotionVectorsY=1.248
mv_dx=0
mv_dy=0
mv_l=5
mv_r=1
mv_g=1
mv_b=1
mv_a=0
per_frame_1=warp=0;
per_frame_2=framehalf = frame%2;
per_frame_3=volume = 0.3*(bass+mid);
per_frame_4=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
per_frame_5=lastbeat = lastbeat + equal(lastbeat,0)*time;
per_frame_6=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
per_frame_7=peakbass_att = max(bass_att,peakbass_att);
per_frame_8=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
per_frame_9=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
per_frame_10=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.99 + (1-above(time - lastbeat, 2*beatrate))*0.998);
per_frame_11=lastbeat = beat*time + (1-beat)*lastbeat;
per_frame_12=peakbass_att = max(peakbass_att,1.1*meanbass_att);
per_frame_13=mode = if(beat,abs(mode-1),mode);
per_frame_14=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps)) + 1/(fps*5);
per_frame_15=oldq8 = q8;
per_frame_16=q1 = 0.5 + 0.15*sin(0.416*q8) + 0.15*sin(0.832*q8) + 0.1*sin(1.324*q8);
per_frame_17=q2 = 0.5 + 0.15*sin(0.341*q8) + 0.15*sin(0.768*q8) + 0.1*sin(1.523*q8);
per_frame_18=q6 = 0.5 + 0.15*sin(0.287*q8) + 0.15*sin(0.913*q8) + 0.1*sin(1.142*q8);
per_frame_19=q7 = 0.5 + 0.15*sin(0.531*q8) + 0.15*sin(0.671*q8) + 0.1*sin(1.442*q8);
per_frame_20=ob_size = beat*0.05;
per_frame_21=ob_r = sin(20*(q1+q2));
per_frame_22=ob_g = sin(25*(q6+q7));
per_frame_23=q4 = (8 + 0.2*sin(q8*0.385) + 0.2*sin(q8*0.641) + 0.2*sin(q8*0.846));
per_frame_24=q5 = (12 + 0.2*sin(q8*0.385) + 0.2*sin(q8*0.641) + 0.2*sin(q8*0.846));
per_frame_25=q3 = mode;
per_frame_26=wave_a =0.4;
per_frame_27=wave_r = if(framehalf,0.5 + 0.15*sin(0.512*time) + 0.15*sin(0.943*time) + 0.1*sin(1.024*time),0.5 + 0.15*sin(0.483*time) + 0.15*sin(0.879*time) + 0.1*sin(1.423*time));
per_frame_28=wave_g = if(framehalf,0.5 + 0.15*sin(0.248*time) + 0.15*sin(0.829*time) + 0.1*sin(1.623*time),0.5 + 0.15*sin(0.461*time) + 0.15*sin(0.699*time) + 0.1*sin(1.254*time));
per_frame_29=wave_b = if(framehalf,0.5 + 0.15*sin(0.211*time) + 0.15*sin(0.652*time) + 0.1*sin(1.865*time),0.5 + 0.15*sin(0.333*time) + 0.15*sin(0.978*time) + 0.1*sin(1.359*time));
per_pixel_1=newx = x - q1;
per_pixel_2=newy = y - q6;
per_pixel_3=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
per_pixel_4=newang = atan2(newx,newy);
per_pixel_5=newzoom = pow(0.995 + 0.05*sin((q4)*(newang+q3)), pow(sin(newrad*newrad), newrad));
per_pixel_6=dx = (newx)*newzoom - newx;
per_pixel_7=dy = (newy)*newzoom - newy;
per_pixel_8=newx = x - q2;
per_pixel_9=newy = y - q7;
per_pixel_10=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
per_pixel_11=newang = atan2(newx,newy);
per_pixel_12=newzoom = pow(0.995 + 0.05*sin((q5)*(newang)), pow(sin(newrad*newrad), newrad));
per_pixel_13=dx = dx + (newx)*newzoom - newx;
per_pixel_14=dy = dy + (newy)*newzoom - newy;
per_pixel_15=newx = x - (0.33*(q1+q2+q6));
per_pixel_16=newy = y - (0.33*(3-q2-q6-q7));
per_pixel_17=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
per_pixel_18=newang = atan2(newx,newy);
per_pixel_19=newzoom = pow(1.04 + 0.05*sin(0.5*(q4+q5)*(newang)), pow(sin(newrad*newrad), newrad));
per_pixel_20=dx = dx + (newx)*newzoom - newx;
per_pixel_21=dy = dy + (newy)*newzoom - newy;
