Old 09-19-2011, 12:18 PM   #81
zillboe
Human being with feelings
 
Join Date: Sep 2011
Posts: 89
Default JS Multifreak - where to get it ?

see old discussion below.. all the links ive tried are dead or in russian. is this still avail , and for win7-64bit ?

http://forum.cockos.com/showthread.php?t=33332

Last edited by zillboe; 09-19-2011 at 12:20 PM. Reason: email notify
zillboe is offline   Reply With Quote
Old 09-19-2011, 12:42 PM   #82
Fabian
Human being with feelings
 
Fabian's Avatar
 
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
Default

Quote:
Originally Posted by zillboe View Post
see old discussion below.. all the links ive tried are dead or in russian. is this still avail , and for win7-64bit ?

http://forum.cockos.com/showthread.php?t=33332
Yeah, the links to ufo-scientific are dead, and the Russian text says that the site is no longer registered. But a little googling...
http://avaxhome.ws/software/software...4_x86_x64.html
The two bottom links and the password work, but if it's trustworthy... I don't know... It contains a 4MB setup.exe.

EDIT: Search for "63-ufo-scientific-multifreek-vst-v24-x86-x64.html" on "audioz dot info"
__________________
// MVHMF
I never always did the right thing, but all I did wasn't wrong...

Last edited by Fabian; 09-19-2011 at 12:47 PM.
Fabian is offline   Reply With Quote
Old 11-06-2011, 09:29 AM   #83
leetobin
Human being with feelings
 
Join Date: Apr 2010
Posts: 27
Default Anyone got the js file?

[deleted]

Last edited by leetobin; 11-04-2021 at 07:16 AM.
leetobin is offline   Reply With Quote
Old 11-06-2011, 09:48 AM   #84
Fabian
Human being with feelings
 
Fabian's Avatar
 
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
Default

Quote:
Originally Posted by leetobin View Post
Would love to have a look at the JS-multifreaq code. Anyone got it? I've tried the OP's site but it seems down.

Thanks!
I guess it's ok to share...

Code:
desc: JS-multifreaq v1.1:multichannel mixing spectroscope
//################################################
// MULTIFREAQ                                    # 
// Muitichannel mixing spectroscope              #
// version 1.3                                   #
//                                               # 
// author: Sergey Grechin   (U.F.O scientific)   #
// Plug's homepage:                              #
// http://www.ufo-scientific.com/js_multifreaq   #
// contact me: support@ufo-scientific.com        #
//################################################


slider1:-80<-140,0,1>Floor:
slider2:0<0,5,1>CPU release: 
slider3:4<0,6,1{512,1024,2048,4096,8192,16384}>FFT size:
slider4:0.1<0,5,0.1>Smoothing factor:
//------------------------------------------------
@init
//------------------------------------------------
max_ch=14;
fftSize=8192;
maxFftSize=16384;
pcmBufferSize=200000;
pcmBuffer=0;
nextRecPosition=0;
lastBatchOfSamples=pcmBuffer;
windowType=2;
fftWorkspace = pcmBuffer+pcmBufferSize;
window=fftWorkspace+maxFftSize*2;
barWorkspace=window+maxFftSize;
barAutoReductionSpeed=7;
ampThreshold=-90;

//------------------------
// Grid-related constants
marginLeft=5;
marginRight=30;
hspacingFactor=8;
vspacingFactor=2;
marginTop=vspacingFactor*13;
marginBottom=vspacingFactor*13;
ampStep=10;
//------------------------

numBars=120;
numLinBars=0;
f0=16;
k=1.062088578; // Taken from Maple sheet
bars=barWorkspace+numBars+1;


dWindowPos = $pi*2/(fftSize-1);
iFftSize=1/fftSize;
windowCreated=0;
gfx_flag=0;


cpuReleaseCounter=0;

//------------------------------------------------
@slider
ampThreshold=slider1;
cpuReleaseCounter=0;
fftSize=2^(slider3+9);
slider4==0? (barAutoReductionSpeed=0) : (barAutoReductionSpeed=5.01-slider4;);
//------------------------------------------------

@block
num_ch>max_ch ? my_num_ch=max_ch : my_num_ch=num_ch;
checkGuiOpened==0? (
    checkGuiOpenedCounter+=1;
    checkGuiOpenedCounter>10? guiOpened=0;
) : (
    checkGuiOpenedCounter=0;
    guiOpened=1;
);
checkGuiOpened=0;
//------------------------------------------------ 
@sample
//------------------------------------------------
guiOpened==1? (
    is=0;
    loop(my_num_ch/2,
        pcmBufer[nextRecPosition]=(spl(is+is+1)+spl(is+is)); 

        //pcmBufer[nextRecPosition]=rand(1); 
        is+=1;
        nextRecPosition+=1;
        nextRecPosition==pcmBufferSize ? nextRecPosition=0;
    );
    lastBatchOfSamples=nextRecPosition-my_num_ch/2;    
);
//------------------------------------------------ 
@gfx
//------------------------------------------------
checkGuiOpened=1;
guiOpened==1? (
cpuReleaseCounter==slider2? (

cpuReleaseCounter=0;
windowCreated==0? (
    loop(fftSize,
    window[i] = (
        windowType==1 ? 0.53836 - cos(windowPos)*0.46164 :
        windowType==2 ? 0.35875 - 0.48829 * cos(windowPos) + 0.14128 * cos(2*windowPos) - 0.01168 * cos(6*windowPos) :
        windowType==3 ? 0.42 - 0.50 * cos(windowPos) + 0.08 * cos(2.0*windowPos) :
        windowType==4 ? 0 :
        1.0)*0.5;
        windowPos+=dWindowPos;
        i+=1;
    );
    windowCreated=1;
);



gfx_flag<1  ? (
    gfx_flag+=1;
) : (

num_ch<=max_ch? (

my_num_ch=num_ch;
my_num_ch>max_ch ? my_num_ch=max_ch;

i=0;
gfx_r=1;
gfx_a=1;
i=lastBatchOfSamples;

// Draw grid
i=0;
spacingFlag=0;
vspacingFlag=0;
f=0;

gfx_r=1;
gfx_g=1;
gfx_b=1;	

barWidth=floor((gfx_w-marginLeft-marginRight)/numBars);

//Drawing border
gfx_a=1;
gfx_x=marginLeft-1;
gfx_y=marginTop;
gfx_lineto(gfx_x,gfx_h-marginBottom,1);

gfx_x=marginLeft-1;
gfx_y=marginTop;
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);

gfx_x=marginLeft-1;
gfx_y=gfx_h-marginBottom;
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);


gfx_x=marginLeft+barWidth*numBars;
gfx_y=marginTop;
gfx_lineto(gfx_x,gfx_h-marginBottom,1);

//---------------------------------------------------------
// Drawing decibel figures and lines
//---------------------------------------------------------
amp=0;
i=0;
gfx_y=marginTop;
loop(my_num_ch/2,
    amp=0;
    gfx_y=marginTop+(gfx_h-marginTop-marginBottom)/(my_num_ch/2)*i;
    loop(-ampThreshold/ampStep,
        gfx_a=1;
        gfx_x=marginLeft+numBars*barWidth+2;
        gfx_y-=gfx_texth/2;
        gfx_drawnumber(amp,0);
        gfx_y+=(gfx_h-marginTop-marginBottom)/(my_num_ch)*2/(-ampThreshold/ampStep);
        gfx_y+=gfx_texth/2;

        gfx_x=marginLeft;
        gfx_a=0.1;
        gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);
        amp-=ampStep;
    );
    i+=1;
);




c=1;
gfx_a=0.5;
loop(my_num_ch/2-1,
    gfx_x=marginLeft;
    gfx_y=ceil(marginTop+((gfx_h-marginTop-marginBottom)/(my_num_ch/2))*c);
    gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);
    c+=1;
);

//---------------------------------------
// Drawing frequency grid
//---------------------------------------
loop(numBars,
    f!=0? f*=k : f=f0;
    spacingFlag==0? (
        gfx_a=1;
        gfx_x=barWidth*(i+1)+2+marginLeft;
        gfx_y=5+gfx_texth*1.3*vspacingFlag;
        f<1000? gfx_drawnumber(f,0) : gfx_drawnumber(f/1000,1);
        vspacingFlag+=1;
        vspacingFlag==vspacingFactor? vspacingFlag=0;
        gfx_a=0.1;
        gfx_x=barWidth*(i+1)+marginLeft;
        gfx_y=marginTop;
        gfx_lineto(gfx_x,gfx_h-marginBottom,0);
        gfx_a=1;
        gfx_y=gfx_h-gfx_texth*1.3*(vspacingFlag+1);
        f<1000? gfx_drawnumber(f,0) : gfx_drawnumber(f/1000,1);

    );
    i+=1;
    spacingFlag+=1;
    spacingFlag==hspacingFactor? spacingFlag=0;
);
c=0;
lbs=lastBatchOfSamples;
gfx_a=1; 
my_num_ch_div_2=my_num_ch/2;
loop (my_num_ch_div_2,
    //----------------------------
    // Silence detection algorithm
    //----------------------------
    i=lbs+c-fftSize*my_num_ch/2;
    i < 0 ? i+=pcmBufferSize;
    j=0; 
    sum1=0;
    silenceDetectionLength=5;
    j=0; 
    loop (silenceDetectionLength,
	sum1+=abs(pcmBuffer[i]);
        i+=my_num_ch_div_2*floor(fftSize/silenceDetectionLength);
        i >= pcmBufferSize ? i-=pcmBufferSize;
    );
    sum1>=0.001? ( // if NOT silence 
        i=lbs+c-fftSize*my_num_ch/2;
        i < 0 ? i+=pcmBufferSize;
        j=0; 
        j=0; 
        loop (fftSize,
            fftWorkspace[j+j]=pcmBuffer[i]*window[j];
            fftWorkspace[j+j+1]=0;
            i+=my_num_ch_div_2;
            i >= pcmBufferSize ? i-=pcmBufferSize;
            sum1+=abs(pcmBuffer[i]);
            j+=1;
        );
    
        fft(fftWorkspace,fftSize);
        fft_permute(fftWorkspace,fftSize);

        i=0;
        loop(numBars,
            barWorkspace[i]=0;
            i+=1;
        );
    
        fftWorkspace[fftSize]=100000;
        g=(fftSize)/srate;
        i=0;
        f2=f0; // the high frequency for the bar zero
        f1=0;  // the low frequency
        loop(numBars,
            j=floor(g*f1); // calculating corresponding element from fft results
     	    sum=0;
 	    num=ceil(g*f2)-floor(g*f1);
	    loop(ceil(g*f2)-floor(g*f1),
                aa=fftWorkspace[j*2+2]; bb=fftWorkspace[j*2+3]; cc=sqrt(aa*aa+bb*bb);
                sum+=cc; 
	        //cc>sum?sum=cc;
	        j+=1;
	    );
	    num? ( 
	        barWorkspace[i]=sum/num/(fftSize/2)/2; // the last /2 because we do not devide PCM data in sample block
	        barWorkspace[i+1]=barWorkspace[i];
	    );
	    f1=f2;
	    f2=f2*k;
	    i+=1;
        );
    
        // applying vertical transform
        i=0;
        loop(numBars,
            barWorkspace[i]=20*log(barWorkspace[i])/log(10)-ampThreshold;
	    barWorkspace[i]<0? barWorkspace[i]=0;
            i+=1;
        );

        i=0;
        loop(numBars,
            barAutoReductionSpeed ? bars[c*numBars+i]-=barAutoReductionSpeed*(slider2+1) : bars[c*numBars+i]=0; 
            bars[c*numBars+i]<barWorkspace[i] ? bars[c*numBars+i]=barWorkspace[i];
    //        barAutoReductionSpeed ? bars[c*numBars+i]-=barAutoReductionSpeed : bars[c*numBars+i]=0; 
    	    i+=1;
        );
    
        i=0;
        gfx_r=1;
        gfx_g=0;
        gfx_b=0;
        x=marginLeft;
        barWidth=floor((gfx_w-marginLeft-marginRight)/numBars);
        barWidth>2? barSpacing=1 : barSpacing=0;

        loop(numBars,
            gfx_r-=1/numBars;
            gfx_b+=1/numBars;
            gfx_g+=1/numBars/1.5;
         
            gfx_x=x;
            gfx_y=marginTop+ceil((gfx_h-marginTop-marginBottom)/my_num_ch*2*(c+1)+1);
  
            h=(gfx_h-marginTop-marginBottom)/my_num_ch*2*bars[c*numBars+i]/abs(ampThreshold);
            h > gfx_h/my_num_ch*2 ? h=gfx_h/my_num_ch*2;
            gfx_rectto(gfx_x+barWidth-barSpacing,gfx_y-h);

            gfx_x=x;
         //gfx_y=ceil(gfx_h/my_num_ch*2*(c+1)-1);
    //        gfx_y=marginTop+ceil((gfx_h-marginTop-marginBottom)/my_num_ch*2*(c+1));
    //        gfx_lineto(gfx_x+barWidth,gfx_y,1);

        
            x+=barWidth;
    	    i+=1;
        ); 
    ); // end of silence detection condition
c+=1;
);


) : (
    gfx_a=1;
    gfx_r=1;
    gfx_x=10;
    gfx_y=10;
    gfx_drawchar($'t');
    gfx_drawchar($'o');
    gfx_drawchar($'o');
    gfx_drawchar($' ');
    gfx_drawchar($'m');
    gfx_drawchar($'a');
    gfx_drawchar($'n');
    gfx_drawchar($'y');
    gfx_drawchar($' ');
    gfx_drawchar($'c');
    gfx_drawchar($'h');
    gfx_drawchar($'a');
    gfx_drawchar($'n');
    gfx_drawchar($'n');
    gfx_drawchar($'e');
    gfx_drawchar($'l');
    gfx_drawchar($'s');

);
);
) : (
    cpuReleaseCounter+=1;
);
);
__________________
// MVHMF
I never always did the right thing, but all I did wasn't wrong...
Fabian is offline   Reply With Quote
Old 11-10-2011, 03:58 PM   #85
leetobin
Human being with feelings
 
Join Date: Apr 2010
Posts: 27
Default

[deleted]

Last edited by leetobin; 11-04-2021 at 07:15 AM.
leetobin is offline   Reply With Quote
Old 02-04-2012, 05:12 PM   #86
RJHollins
Human being with feelings
 
Join Date: Dec 2011
Posts: 2,167
Default

Quote:
Originally Posted by Fabian View Post
I guess it's ok to share...

Code:
desc: JS-multifreaq v1.1:multichannel mixing spectroscope
//################################################
// MULTIFREAQ                                    # 
// Muitichannel mixing spectroscope              #
// version 1.3                                   #
//                                               # 
// author: Sergey Grechin   (U.F.O scientific)   #
// Plug's homepage:                              #
// http://www.ufo-scientific.com/js_multifreaq   #
// contact me: support@ufo-scientific.com        #
//################################################


slider1:-80<-140,0,1>Floor:
slider2:0<0,5,1>CPU release: 
slider3:4<0,6,1{512,1024,2048,4096,8192,16384}>FFT size:
slider4:0.1<0,5,0.1>Smoothing factor:
//------------------------------------------------
@init
//------------------------------------------------
max_ch=14;
fftSize=8192;
maxFftSize=16384;
pcmBufferSize=200000;
pcmBuffer=0;
nextRecPosition=0;
lastBatchOfSamples=pcmBuffer;
windowType=2;
fftWorkspace = pcmBuffer+pcmBufferSize;
window=fftWorkspace+maxFftSize*2;
barWorkspace=window+maxFftSize;
barAutoReductionSpeed=7;
ampThreshold=-90;

//------------------------
// Grid-related constants
marginLeft=5;
marginRight=30;
hspacingFactor=8;
vspacingFactor=2;
marginTop=vspacingFactor*13;
marginBottom=vspacingFactor*13;
ampStep=10;
//------------------------

numBars=120;
numLinBars=0;
f0=16;
k=1.062088578; // Taken from Maple sheet
bars=barWorkspace+numBars+1;


dWindowPos = $pi*2/(fftSize-1);
iFftSize=1/fftSize;
windowCreated=0;
gfx_flag=0;


cpuReleaseCounter=0;

//------------------------------------------------
@slider
ampThreshold=slider1;
cpuReleaseCounter=0;
fftSize=2^(slider3+9);
slider4==0? (barAutoReductionSpeed=0) : (barAutoReductionSpeed=5.01-slider4;);
//------------------------------------------------

@block
num_ch>max_ch ? my_num_ch=max_ch : my_num_ch=num_ch;
checkGuiOpened==0? (
    checkGuiOpenedCounter+=1;
    checkGuiOpenedCounter>10? guiOpened=0;
) : (
    checkGuiOpenedCounter=0;
    guiOpened=1;
);
checkGuiOpened=0;
//------------------------------------------------ 
@sample
//------------------------------------------------
guiOpened==1? (
    is=0;
    loop(my_num_ch/2,
        pcmBufer[nextRecPosition]=(spl(is+is+1)+spl(is+is)); 

        //pcmBufer[nextRecPosition]=rand(1); 
        is+=1;
        nextRecPosition+=1;
        nextRecPosition==pcmBufferSize ? nextRecPosition=0;
    );
    lastBatchOfSamples=nextRecPosition-my_num_ch/2;    
);
//------------------------------------------------ 
@gfx
//------------------------------------------------
checkGuiOpened=1;
guiOpened==1? (
cpuReleaseCounter==slider2? (

cpuReleaseCounter=0;
windowCreated==0? (
    loop(fftSize,
    window[i] = (
        windowType==1 ? 0.53836 - cos(windowPos)*0.46164 :
        windowType==2 ? 0.35875 - 0.48829 * cos(windowPos) + 0.14128 * cos(2*windowPos) - 0.01168 * cos(6*windowPos) :
        windowType==3 ? 0.42 - 0.50 * cos(windowPos) + 0.08 * cos(2.0*windowPos) :
        windowType==4 ? 0 :
        1.0)*0.5;
        windowPos+=dWindowPos;
        i+=1;
    );
    windowCreated=1;
);



gfx_flag<1  ? (
    gfx_flag+=1;
) : (

num_ch<=max_ch? (

my_num_ch=num_ch;
my_num_ch>max_ch ? my_num_ch=max_ch;

i=0;
gfx_r=1;
gfx_a=1;
i=lastBatchOfSamples;

// Draw grid
i=0;
spacingFlag=0;
vspacingFlag=0;
f=0;

gfx_r=1;
gfx_g=1;
gfx_b=1;	

barWidth=floor((gfx_w-marginLeft-marginRight)/numBars);

//Drawing border
gfx_a=1;
gfx_x=marginLeft-1;
gfx_y=marginTop;
gfx_lineto(gfx_x,gfx_h-marginBottom,1);

gfx_x=marginLeft-1;
gfx_y=marginTop;
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);

gfx_x=marginLeft-1;
gfx_y=gfx_h-marginBottom;
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);


gfx_x=marginLeft+barWidth*numBars;
gfx_y=marginTop;
gfx_lineto(gfx_x,gfx_h-marginBottom,1);

//---------------------------------------------------------
// Drawing decibel figures and lines
//---------------------------------------------------------
amp=0;
i=0;
gfx_y=marginTop;
loop(my_num_ch/2,
    amp=0;
    gfx_y=marginTop+(gfx_h-marginTop-marginBottom)/(my_num_ch/2)*i;
    loop(-ampThreshold/ampStep,
        gfx_a=1;
        gfx_x=marginLeft+numBars*barWidth+2;
        gfx_y-=gfx_texth/2;
        gfx_drawnumber(amp,0);
        gfx_y+=(gfx_h-marginTop-marginBottom)/(my_num_ch)*2/(-ampThreshold/ampStep);
        gfx_y+=gfx_texth/2;

        gfx_x=marginLeft;
        gfx_a=0.1;
        gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);
        amp-=ampStep;
    );
    i+=1;
);




c=1;
gfx_a=0.5;
loop(my_num_ch/2-1,
    gfx_x=marginLeft;
    gfx_y=ceil(marginTop+((gfx_h-marginTop-marginBottom)/(my_num_ch/2))*c);
    gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);
    c+=1;
);

//---------------------------------------
// Drawing frequency grid
//---------------------------------------
loop(numBars,
    f!=0? f*=k : f=f0;
    spacingFlag==0? (
        gfx_a=1;
        gfx_x=barWidth*(i+1)+2+marginLeft;
        gfx_y=5+gfx_texth*1.3*vspacingFlag;
        f<1000? gfx_drawnumber(f,0) : gfx_drawnumber(f/1000,1);
        vspacingFlag+=1;
        vspacingFlag==vspacingFactor? vspacingFlag=0;
        gfx_a=0.1;
        gfx_x=barWidth*(i+1)+marginLeft;
        gfx_y=marginTop;
        gfx_lineto(gfx_x,gfx_h-marginBottom,0);
        gfx_a=1;
        gfx_y=gfx_h-gfx_texth*1.3*(vspacingFlag+1);
        f<1000? gfx_drawnumber(f,0) : gfx_drawnumber(f/1000,1);

    );
    i+=1;
    spacingFlag+=1;
    spacingFlag==hspacingFactor? spacingFlag=0;
);
c=0;
lbs=lastBatchOfSamples;
gfx_a=1; 
my_num_ch_div_2=my_num_ch/2;
loop (my_num_ch_div_2,
    //----------------------------
    // Silence detection algorithm
    //----------------------------
    i=lbs+c-fftSize*my_num_ch/2;
    i < 0 ? i+=pcmBufferSize;
    j=0; 
    sum1=0;
    silenceDetectionLength=5;
    j=0; 
    loop (silenceDetectionLength,
	sum1+=abs(pcmBuffer[i]);
        i+=my_num_ch_div_2*floor(fftSize/silenceDetectionLength);
        i >= pcmBufferSize ? i-=pcmBufferSize;
    );
    sum1>=0.001? ( // if NOT silence 
        i=lbs+c-fftSize*my_num_ch/2;
        i < 0 ? i+=pcmBufferSize;
        j=0; 
        j=0; 
        loop (fftSize,
            fftWorkspace[j+j]=pcmBuffer[i]*window[j];
            fftWorkspace[j+j+1]=0;
            i+=my_num_ch_div_2;
            i >= pcmBufferSize ? i-=pcmBufferSize;
            sum1+=abs(pcmBuffer[i]);
            j+=1;
        );
    
        fft(fftWorkspace,fftSize);
        fft_permute(fftWorkspace,fftSize);

        i=0;
        loop(numBars,
            barWorkspace[i]=0;
            i+=1;
        );
    
        fftWorkspace[fftSize]=100000;
        g=(fftSize)/srate;
        i=0;
        f2=f0; // the high frequency for the bar zero
        f1=0;  // the low frequency
        loop(numBars,
            j=floor(g*f1); // calculating corresponding element from fft results
     	    sum=0;
 	    num=ceil(g*f2)-floor(g*f1);
	    loop(ceil(g*f2)-floor(g*f1),
                aa=fftWorkspace[j*2+2]; bb=fftWorkspace[j*2+3]; cc=sqrt(aa*aa+bb*bb);
                sum+=cc; 
	        //cc>sum?sum=cc;
	        j+=1;
	    );
	    num? ( 
	        barWorkspace[i]=sum/num/(fftSize/2)/2; // the last /2 because we do not devide PCM data in sample block
	        barWorkspace[i+1]=barWorkspace[i];
	    );
	    f1=f2;
	    f2=f2*k;
	    i+=1;
        );
    
        // applying vertical transform
        i=0;
        loop(numBars,
            barWorkspace[i]=20*log(barWorkspace[i])/log(10)-ampThreshold;
	    barWorkspace[i]<0? barWorkspace[i]=0;
            i+=1;
        );

        i=0;
        loop(numBars,
            barAutoReductionSpeed ? bars[c*numBars+i]-=barAutoReductionSpeed*(slider2+1) : bars[c*numBars+i]=0; 
            bars[c*numBars+i]<barWorkspace[i] ? bars[c*numBars+i]=barWorkspace[i];
    //        barAutoReductionSpeed ? bars[c*numBars+i]-=barAutoReductionSpeed : bars[c*numBars+i]=0; 
    	    i+=1;
        );
    
        i=0;
        gfx_r=1;
        gfx_g=0;
        gfx_b=0;
        x=marginLeft;
        barWidth=floor((gfx_w-marginLeft-marginRight)/numBars);
        barWidth>2? barSpacing=1 : barSpacing=0;

        loop(numBars,
            gfx_r-=1/numBars;
            gfx_b+=1/numBars;
            gfx_g+=1/numBars/1.5;
         
            gfx_x=x;
            gfx_y=marginTop+ceil((gfx_h-marginTop-marginBottom)/my_num_ch*2*(c+1)+1);
  
            h=(gfx_h-marginTop-marginBottom)/my_num_ch*2*bars[c*numBars+i]/abs(ampThreshold);
            h > gfx_h/my_num_ch*2 ? h=gfx_h/my_num_ch*2;
            gfx_rectto(gfx_x+barWidth-barSpacing,gfx_y-h);

            gfx_x=x;
         //gfx_y=ceil(gfx_h/my_num_ch*2*(c+1)-1);
    //        gfx_y=marginTop+ceil((gfx_h-marginTop-marginBottom)/my_num_ch*2*(c+1));
    //        gfx_lineto(gfx_x+barWidth,gfx_y,1);

        
            x+=barWidth;
    	    i+=1;
        ); 
    ); // end of silence detection condition
c+=1;
);


) : (
    gfx_a=1;
    gfx_r=1;
    gfx_x=10;
    gfx_y=10;
    gfx_drawchar($'t');
    gfx_drawchar($'o');
    gfx_drawchar($'o');
    gfx_drawchar($' ');
    gfx_drawchar($'m');
    gfx_drawchar($'a');
    gfx_drawchar($'n');
    gfx_drawchar($'y');
    gfx_drawchar($' ');
    gfx_drawchar($'c');
    gfx_drawchar($'h');
    gfx_drawchar($'a');
    gfx_drawchar($'n');
    gfx_drawchar($'n');
    gfx_drawchar($'e');
    gfx_drawchar($'l');
    gfx_drawchar($'s');

);
);
) : (
    cpuReleaseCounter+=1;
);
);
With all the links dead ... is there are way to turn this 'code' into a usable plug ... I mean, for us NON-programmers !!


Thanks
RJHollins is offline   Reply With Quote
Old 02-05-2012, 04:19 AM   #87
Reaperto
Human being with feelings
 
Reaperto's Avatar
 
Join Date: Apr 2011
Location: Buenos Aires - Argentina
Posts: 561
Default

1- Select the Code text
2- Paste&Save to .txt archive (like NotePad, but without extension)
3- Save/Paste your '.txt' in Options > Show REAPER resource path in explorer/finder... > Effects
4- Shift+T (Add FX) > F5 (Scan for new plugins)
5- Insert on a Track
__________________
ReaLoaded!

Last edited by Reaperto; 03-12-2012 at 03:08 PM. Reason: Clarification
Reaperto is offline   Reply With Quote
Old 02-06-2012, 03:05 PM   #88
Seta
Human being with feelings
 
Seta's Avatar
 
Join Date: Dec 2010
Location: Montréal
Posts: 153
Default

looks interesting but the domain name ufo-scientific.com is unreachable, I will try again tomorrow.

Edit oups! I didn't read all the tread... Thanx Fabian RJHollins
Seta is offline   Reply With Quote
Old 02-07-2012, 04:53 AM   #89
Fabian
Human being with feelings
 
Fabian's Avatar
 
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
Default

Just a note to all that try the Multifreaq code I pasted above... Since I moved to W7x64 I have not gotten Multifreaq to work. If you know how to solve that problem, please let us all know, it definitely is a very useful plugin.
__________________
// MVHMF
I never always did the right thing, but all I did wasn't wrong...
Fabian is offline   Reply With Quote
Old 09-03-2012, 11:58 AM   #90
Sexan
Human being with feelings
 
Sexan's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 4,689
Default

don't know is it solved or not,but I'm on X64 windows and x64 reaper (and x32) and plugin works.
BUT..... it doesn't want to work on asio buffer lower than 256.Hope it helps
Sexan is offline   Reply With Quote
Old 09-03-2012, 12:23 PM   #91
Fabian
Human being with feelings
 
Fabian's Avatar
 
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
Default

Quote:
Originally Posted by Sexan View Post
don't know is it solved or not,but I'm on X64 windows and x64 reaper (and x32) and plugin works.
BUT..... it doesn't want to work on asio buffer lower than 256.Hope it helps
Holy cow! That's the trick!
Thanks for letting us know.
__________________
// MVHMF
I never always did the right thing, but all I did wasn't wrong...
Fabian is offline   Reply With Quote
Old 09-03-2012, 12:25 PM   #92
Sexan
Human being with feelings
 
Sexan's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 4,689
Default

can anyone JS smart see is there something in the code that is related to the problem?
Sexan is offline   Reply With Quote
Old 07-05-2013, 10:48 PM   #93
witti
Human being with feelings
 
witti's Avatar
 
Join Date: May 2012
Posts: 1,216
Default

I got it working for asio buffer sizes below 256!

Code:
slider1:-90<-140,-60,10>Floor
slider2:0<0,5,1>--CPU release
slider3:4<0,5,1{512,1024,2048,4096,8192,16384}>FFT size
slider4:2<0,5,0.1>Smoothing factor

@init
max_ch=14;
fftSize=8192;
maxFftSize=16384;
pcmBufferSize=200000;
pcmBuffer=0;
nextRecPosition=0;
lastBatchOfSamples=pcmBuffer;
windowType=0;
fftWorkspace = pcmBuffer+pcmBufferSize;
window=fftWorkspace+maxFftSize*2;
barWorkspace=window+maxFftSize;
barAutoReductionSpeed=7;
ampThreshold=-90;

//------------------------
// Grid-related constants
marginLeft=5;
marginRight=30;
hspacingFactor=8;
vspacingFactor=2;
marginTop=vspacingFactor*13;
marginBottom=vspacingFactor*13;
ampStep=10;
//------------------------

numBars=120;
f0=16;
k=1.062088578; // Taken from Maple sheet
bars=barWorkspace+numBars+1;

dWindowPos = $pi*2/(fftSize-1);
windowCreated=0;
gfx_flag=0;

cpuReleaseCounter=0;

@slider
ampThreshold=slider1;
cpuReleaseCounter=0;
fftSize=2^(slider3+9);
slider4==0? (barAutoReductionSpeed=0) : (barAutoReductionSpeed=5.01-slider4;);

@block
num_ch>max_ch ? my_num_ch=max_ch : my_num_ch=num_ch;

@sample
is=0;
loop(my_num_ch/2,
pcmBuffer[nextRecPosition]=(spl(is+is+1)+spl(is+is));
is+=1;
nextRecPosition+=1;
nextRecPosition==pcmBufferSize ? nextRecPosition=0;
);
lastBatchOfSamples=nextRecPosition-my_num_ch/2;

@gfx 515 300
cpuReleaseCounter==slider2? (
cpuReleaseCounter=0;

windowCreated==0? (
loop(fftSize,
window[i] = (
windowType==0 ? 0.35875 - 0.48829 * cos(windowPos) + 0.14128 * cos(2*windowPos) - 0.01168 * cos(6*windowPos) : 1)*1.5; // *0.5;
windowPos+=dWindowPos;
i+=1;
);
windowCreated=1;
);

gfx_flag<1 ? (
gfx_flag+=1;
):(

num_ch<=max_ch? (

my_num_ch=num_ch;
my_num_ch>max_ch ? my_num_ch=max_ch;

i=0;
gfx_r=1;
gfx_a=1;
i=lastBatchOfSamples;

// Draw grid
i=0;
spacingFlag=0;
vspacingFlag=0;
f=0;

gfx_r=1;
gfx_g=1;
gfx_b=1;	

barWidth=floor((gfx_w-marginLeft-marginRight)/numBars);

// Drawing border
gfx_a=0.9;
gfx_x=marginLeft-1;
gfx_y=marginTop;
gfx_lineto(gfx_x,gfx_h-marginBottom,1);

gfx_x=marginLeft-1;
gfx_y=marginTop;
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);

gfx_x=marginLeft-1;
gfx_y=gfx_h-marginBottom;
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);

gfx_x=marginLeft+barWidth*numBars;
gfx_y=marginTop;
gfx_lineto(gfx_x,gfx_h-marginBottom,1);

// Drawing decibel figures and lines
amp=0;
i=0;
gfx_y=marginTop;
loop(my_num_ch/2,
amp=0;
gfx_y=marginTop+(gfx_h-marginTop-marginBottom)/(my_num_ch/2)*i;
loop(-ampThreshold/ampStep,
gfx_a=0.8;
gfx_x=marginLeft+numBars*barWidth+2;
gfx_y-=gfx_texth/2;
gfx_drawnumber(amp,0);
gfx_y+=(gfx_h-marginTop-marginBottom)/(my_num_ch)*2/(-ampThreshold/ampStep);
gfx_y+=gfx_texth/2;

gfx_x=marginLeft;
gfx_a=0.1;
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);
amp-=ampStep;
);
i+=1;
);

c=1;
gfx_a=0.5;
loop(my_num_ch/2-1,
gfx_x=marginLeft;
gfx_y=ceil(marginTop+((gfx_h-marginTop-marginBottom)/(my_num_ch/2))*c);
gfx_lineto(gfx_x+numBars*barWidth,gfx_y,1);
c+=1;
);

// Drawing frequency grid
loop(numBars,
f!=0? f*=k : f=f0;
spacingFlag==0? (
gfx_a=0.8;
gfx_x=barWidth*(i+1)+2+marginLeft;
gfx_y=5+gfx_texth*1.3*vspacingFlag;
f<1000? gfx_drawnumber(f,0) : gfx_drawnumber(f/1000,1);
vspacingFlag+=1;
vspacingFlag==vspacingFactor? vspacingFlag=0;
gfx_a=0.1;
gfx_x=barWidth*(i+1)+marginLeft;
gfx_y=marginTop;
gfx_lineto(gfx_x,gfx_h-marginBottom,0);
gfx_a=0.8;
gfx_y=gfx_h-gfx_texth*1.3*(vspacingFlag+1);
f<1000? gfx_drawnumber(f,0) : gfx_drawnumber(f/1000,1);
);
i+=1;
spacingFlag+=1;
spacingFlag==hspacingFactor? spacingFlag=0;
);
c=0;
lbs=lastBatchOfSamples;
gfx_a=1; 
my_num_ch_div_2=my_num_ch/2;
loop (my_num_ch_div_2,

// Silence detection algorithm
i=lbs+c-fftSize*my_num_ch/2;
i < 0 ? i+=pcmBufferSize;
j=0; 
sum1=0;
silenceDetectionLength=5;
j=0; 
loop (silenceDetectionLength,
sum1+=abs(pcmBuffer[i]);
i+=my_num_ch_div_2*floor(fftSize/silenceDetectionLength);
i >= pcmBufferSize ? i-=pcmBufferSize;
);
sum1>=0.001? ( // if NOT silence
i=lbs+c-fftSize*my_num_ch/2;
i < 0 ? i+=pcmBufferSize;
j=0; 
j=0; 
loop (fftSize,
fftWorkspace[j+j]=pcmBuffer[i]*window[j];
fftWorkspace[j+j+1]=0;
i+=my_num_ch_div_2;
i >= pcmBufferSize ? i-=pcmBufferSize;
sum1+=abs(pcmBuffer[i]);
j+=1;
);

fft(fftWorkspace,fftSize);
fft_permute(fftWorkspace,fftSize);

i=0;
loop(numBars,
barWorkspace[i]=0;
i+=1;
);

fftWorkspace[fftSize]=100000;
g=(fftSize)/srate;
i=0;
f2=f0; // the high frequency for the bar zero
f1=0;  // the low frequency
loop(numBars,
j=floor(g*f1); // calculating corresponding element from fft results
sum=0;
num=ceil(g*f2)-floor(g*f1);
loop(ceil(g*f2)-floor(g*f1),
aa=fftWorkspace[j*2+2];
bb=fftWorkspace[j*2+3];
cc=sqrt(aa*aa+bb*bb);
sum+=cc;
j+=1;
);
num? ( 
barWorkspace[i]=sum/num/(fftSize/2)/2; // the last /2 because we do not devide PCM data in sample block
barWorkspace[i+1]=barWorkspace[i];
);
f1=f2;
f2=f2*k;
i+=1;
);

// applying vertical transform
i=0;
loop(numBars,
barWorkspace[i]=20*log(barWorkspace[i])/log(10)-ampThreshold;
barWorkspace[i]<0? barWorkspace[i]=0;
i+=1;
);

i=0;
loop(numBars,
barAutoReductionSpeed ? bars[c*numBars+i]-=barAutoReductionSpeed*(slider2+1) : bars[c*numBars+i]=0;
bars[c*numBars+i]<barWorkspace[i] ? bars[c*numBars+i]=barWorkspace[i];
i+=1;
);

i=0;
gfx_r=1;
gfx_g=0;
gfx_b=0;
x=marginLeft;
barWidth=floor((gfx_w-marginLeft-marginRight)/numBars);
barWidth>2? barSpacing=1 : barSpacing=0;

loop(numBars,
gfx_r-=1/numBars;
gfx_b+=1/numBars;
gfx_g+=1/numBars/1.5;

gfx_x=x;
gfx_y=marginTop+ceil((gfx_h-marginTop-marginBottom)/my_num_ch*2*(c+1)+1);

h=(gfx_h-marginTop-marginBottom)/my_num_ch*2*bars[c*numBars+i]/abs(ampThreshold);
h > gfx_h/my_num_ch*2 ? h=gfx_h/my_num_ch*2;
gfx_rectto(gfx_x+barWidth-barSpacing,gfx_y-h);

gfx_x=x;
x+=barWidth;
i+=1;
); 
); // end of silence detection condition
c+=1;
);

) : (
gfx_a=1;
gfx_r=1;
gfx_x=10;
gfx_y=10;
gfx_drawchar($'t');
gfx_drawchar($'o');
gfx_drawchar($'o');
gfx_drawchar($' ');
gfx_drawchar($'m');
gfx_drawchar($'a');
gfx_drawchar($'n');
gfx_drawchar($'y');
gfx_drawchar($' ');
gfx_drawchar($'c');
gfx_drawchar($'h');
gfx_drawchar($'a');
gfx_drawchar($'n');
gfx_drawchar($'n');
gfx_drawchar($'e');
gfx_drawchar($'l');
gfx_drawchar($'s');

);
);
) : (
cpuReleaseCounter+=1;
);

Last edited by witti; 04-11-2015 at 11:11 PM.
witti is offline   Reply With Quote
Old 11-29-2013, 04:23 AM   #94
Nixon
Human being with feelings
 
Nixon's Avatar
 
Join Date: Dec 2011
Posts: 407
Default

Great exactly what i searched for, reminds me of the rnd inspector analyzer, sweet
Nixon is online now   Reply With Quote
Old 12-23-2013, 02:15 PM   #95
Swamp Ape
Human being with feelings
 
Swamp Ape's Avatar
 
Join Date: Mar 2012
Location: Asheville NC
Posts: 1,335
Default

thanks witti this is great.
Swamp Ape is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:30 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.