[preset00]
fRating=3.000000
fGammaAdj=1.000000
fDecay=1.000000
fVideoEchoZoom=2.000000
fVideoEchoAlpha=0.000000
nVideoEchoOrientation=1
nWaveMode=0
bAdditiveWaves=0
bWaveDots=0
bWaveThick=1
bModWaveAlphaByVolume=0
bMaximizeWaveColor=0
bTexWrap=0
bDarkenCenter=0
bRedBlueStereo=0
bBrighten=0
bDarken=0
bSolarize=0
bInvert=0
fWaveAlpha=1.000000
fWaveScale=0.499227
fWaveSmoothing=0.000000
fWaveParam=-0.520000
fModWaveAlphaStart=0.750000
fModWaveAlphaEnd=0.950000
fWarpAnimSpeed=0.010000
fWarpScale=0.010000
fZoomExponent=1.000000
fShader=0.000000
zoom=1.003861
rot=0.000000
cx=0.500000
cy=0.500000
dx=0.000000
dy=0.000000
warp=0.000000
sx=1.000000
sy=1.000000
wave_r=0.650000
wave_g=0.650000
wave_b=0.650000
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.000000
ib_size=0.000000
ib_r=0.250000
ib_g=0.250000
ib_b=0.250000
ib_a=0.000000
nMotionVectorsX=12.000000
nMotionVectorsY=9.000000
mv_dx=0.000000
mv_dy=0.000000
mv_l=0.900000
mv_r=1.000000
mv_g=1.000000
mv_b=1.000000
mv_a=0.000000
per_frame_1=q1=.01; //general speed;
per_frame_2=q2=.5;   // main twirl's x
per_frame_3=q3=.5;   // main twirl's y
per_frame_4=q4=3*( abs( 6*cos(time/5) )%6);     // the phase of the mini twirls
per_frame_5=q5=.008;   // main twirl's speed;
per_frame_6=q6=q5/0.03;    // main twirl's range;
per_frame_7=q7=bass_att+mid_att+treb_att; //volume
per_frame_8=q8=sqrt(2)/20;   // max dist from transformation center
per_frame_9=InvertInterval = 1200;    // invert colors every ...#frames
per_frame_10=InvertDuration = 600;
per_frame_11=zoomexp=1.2;
per_frame_12=zoom=zoom+bass/70;
per_frame_13=wave_x=q2;
per_frame_14=wave_y=q3;
per_frame_15=bInvert = if( below( (frame+InvertInterval)%InvertInterval, InvertDuration),1,0);
per_frame_16=wave_r=abs(sin(time*1.3+1.23+cos(time*2.87+2.145)));
per_frame_17=wave_g=abs(sin(time*2.165+2.89+cos(time*.74+.78)));
per_frame_18=wave_b=abs(sin(time*.845+1.23+cos(time*1.6+3)));
per_frame_19=
per_frame_20=
per_frame_21=wave_mystery=-0.1+2*sin(3*abs(cos(time))*time);
per_frame_22=rot = rot +(q7/4)*.04*pow((sin(time/2 + .6)),11);
per_frame_23=q4 = if( equal(q4,9),10,q4);
per_frame_24=q4 = if(equal(q4,12),13,q4);
per_frame_25=q4= if(equal(q4,15),18,q4);
per_pixel_1=// center twirl
per_pixel_2=twirlX=q2;
per_pixel_3=twirlY=1-q3;
per_pixel_4=Distance = sqrt(sqr(x-q2)+sqr(y-q3));
per_pixel_5=RelAngle=atan2(x-twirlX,y-twirlY);
per_pixel_6=TwirlMult = sin(time*50*q1)*q5/(Distance+q6);
per_pixel_7=dx = dx+TwirlMult*sin(RelAngle+1.5);
per_pixel_8=dy=dy+TwirlMult*cos(RelAngle+1.5);
per_pixel_9=zoom = zoom + .0001*log(Distance);
per_pixel_10=
per_pixel_11=// mini twirls
per_pixel_12=x=x*(1-q4/20);
per_pixel_13=y=y*(1-q4/20);
per_pixel_14=CenX= ((100*x)%100)/100;
per_pixel_15=CenY= ((100*y)%100)/100;
per_pixel_16=CurX=x-CenX;
per_pixel_17=CurY=y-CenY;
per_pixel_18=
per_pixel_19=factor = 1+.7*abs(cos(q1*time/50));
per_pixel_20=dx=dx-(bass_att/factor)*abs(sin(3.14/2+time*50*q1))*.2*CurY/q8;
per_pixel_21=dy=dy-(bass_att/factor)*abs(sin(3.14/2+time*50*q1))*.2*CurX/q8;
per_pixel_22=
per_pixel_23=
