|
|
|
09-19-2011, 12:18 PM
|
#81
|
Human being with feelings
Join Date: Sep 2011
Posts: 89
|
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
|
|
|
09-19-2011, 12:42 PM
|
#82
|
Human being with feelings
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
|
Quote:
Originally Posted by zillboe
|
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.
|
|
|
11-06-2011, 09:29 AM
|
#83
|
Human being with feelings
Join Date: Apr 2010
Posts: 27
|
Anyone got the js file?
[deleted]
Last edited by leetobin; 11-04-2021 at 07:16 AM.
|
|
|
11-06-2011, 09:48 AM
|
#84
|
Human being with feelings
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
|
Quote:
Originally Posted by leetobin
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...
|
|
|
11-10-2011, 03:58 PM
|
#85
|
Human being with feelings
Join Date: Apr 2010
Posts: 27
|
[deleted]
Last edited by leetobin; 11-04-2021 at 07:15 AM.
|
|
|
02-04-2012, 05:12 PM
|
#86
|
Human being with feelings
Join Date: Dec 2011
Posts: 2,167
|
Quote:
Originally Posted by Fabian
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
|
|
|
02-05-2012, 04:19 AM
|
#87
|
Human being with feelings
Join Date: Apr 2011
Location: Buenos Aires - Argentina
Posts: 561
|
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
|
|
|
02-06-2012, 03:05 PM
|
#88
|
Human being with feelings
Join Date: Dec 2010
Location: Montréal
Posts: 153
|
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
|
|
|
02-07-2012, 04:53 AM
|
#89
|
Human being with feelings
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
|
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...
|
|
|
09-03-2012, 11:58 AM
|
#90
|
Human being with feelings
Join Date: Jun 2009
Location: Croatia
Posts: 4,689
|
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
|
|
|
09-03-2012, 12:23 PM
|
#91
|
Human being with feelings
Join Date: Sep 2008
Location: Sweden
Posts: 7,432
|
Quote:
Originally Posted by Sexan
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...
|
|
|
09-03-2012, 12:25 PM
|
#92
|
Human being with feelings
Join Date: Jun 2009
Location: Croatia
Posts: 4,689
|
can anyone JS smart see is there something in the code that is related to the problem?
|
|
|
07-05-2013, 10:48 PM
|
#93
|
Human being with feelings
Join Date: May 2012
Posts: 1,216
|
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.
|
|
|
11-29-2013, 04:23 AM
|
#94
|
Human being with feelings
Join Date: Dec 2011
Posts: 407
|
Great exactly what i searched for, reminds me of the rnd inspector analyzer, sweet
|
|
|
12-23-2013, 02:15 PM
|
#95
|
Human being with feelings
Join Date: Mar 2012
Location: Asheville NC
Posts: 1,335
|
thanks witti this is great.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 01:30 AM.
|