home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2008 February
/
PCWorld_2008-02_cd.bin
/
audio-video
/
reaper
/
reaper2028-install.exe
/
Effects
/
Analysis
/
zoomanalyzer
< prev
Wrap
Text File
|
2007-12-15
|
3KB
|
150 lines
desc:simple vis
/*
Copyright (C) 2007 Cockos Incorporated
License: GPL - http://www.gnu.org/licenses/gpl.html
*/
@init
recpos=0;
fftsize=32768;
gfx_clear=-1;
windowtype=-1;
histsize=128*1024;
window=histsize;
fftworkspace=window+65536;
lrecpos=0;
@slider
lfft=fftsize;
fftsize=4096;
@block
ifftsize=1/fftsize;
@sample
recpos[]=spl(0)+spl(1);
recpos+=1;
recpos >= histsize ? recpos=0;
@gfx 640 400
// only update if new fft data is there or if the size changed
recpos != lrecpos || old_w != gfx_w || old_h!=gfx_h? (
gfx_mode=0;
old_w=gfx_w; old_h=gfx_h;
gfx_r=gfx_g=gfx_b=0; gfx_a=0.01;
gfx_x=gfx_y=0;
gfx_rectto(gfx_w,gfx_h);
gfx_x=gfx_y=0;
gfx_blurto(gfx_w,gfx_h);
gfX_a=0.5;
blitparms=2*1024*1024;
blitparms[0]=blitparms[1]=0;
blitparms[2]=gfx_w;
blitparms[3]=gfx_h;
blitparms[4]=-gfx_w*0.05; blitparms[5]=-gfx_h*0.05;
blitparms[6]=gfx_w-blitparms[4]*2;
blitparms[7]=gfx_h-blitparms[5]*2;
blitparms[8]=cos(colorang2*0.03)*gfx_w*0.09;
blitparms[9]=cos(colorang*3.5)*gfx_h*0.09;
gfx_blitext(-1,blitparms,sin(blitang)*$pi*0.1);
blitang+=0.01*cos(colorang);
sc=(gfx_h-20)*20/(120 * log(10));
wsc=gfx_w/log(1+400);
lrecpos=recpos;
(
windowsize != fftsize ? (
windowsize=fftsize;
i=0;
dwindowpos = $pi*2/fftsize;
windowpos=-dwindowpos * m_fft_size / 4;
loop(fftsize,
window[i] = (0.42 - 0.50 * cos(windowpos) + 0.08 * cos(2.0*windowpos) )*ifftsize*0.5;
windowpos+=dwindowpos;
i+=1;
);
);
gfx_mode=1;
gfx_a=0.7;
gfx_x=gfx_w/2; gfx_y=gfx_h/2;
gfx_getpixel(r,g,b);
stupidcnt > 10 ? gfx_a=-gfx_a;
r>0.6 && g>0.6 && b>0.6 ?
(
stupidcnt+=1; stupidcnt==9 ? stupidcnt=100;
)
:
(
stupidcnt-=1;
stupidcnt==10 ? stupidcnt=0;
);
colorang2+=cos(colorang);
gfX_r=1+sin(colorang*7);
gfx_g=1+cos(colorang*3.132+3);
gfx_b=1+cos(colorang*0.3125+1);
colorang+=0.005;
buf1=lrecpos-fftsize;
buf1<0 ? buf1+=histsize;
buf2=window;
buf3=fftworkspace;
loop(fftsize,
buf3[] = buf1[]*buf2[];
buf3[1]=0;
buf3+=2;
buf2+=1;
(buf1+=1) >= histsize ? buf1 -= histsize;
);
fft(fftworkspace,fftsize);
fft_permute(fftworkspace,fftsize);
i=0;
ascale=gfx_h/$pi*0.25;
xscale=800/(fftsize-1);
loop(fftsize*0.5-1,
aa=fftworkspace[i*2+2]; bb=fftworkspace[i*2+3];
dv=aa*aa+bb*bb;
dv<0.00000000000000000001 ? dv=0.0000000000000000000001;
ty= (-log(dv)*0.5)*sc+20;
ang=-atan2(aa,bb);
ty2=ang*ascale + gfx_h*0.5;
tx = log(1.0+i*xscale)*wsc;
i ?
(
gfx_x=lx; gfx_y=ly; gfx_lineto(tx,ty,1) ;
);
lx=tx; ly=ty; ly2=ty2;
i+=1;
);
);
);