test code for multiple overlays
parent
f46a236bd5
commit
94d47641ad
@ -0,0 +1,72 @@
|
|||||||
|
(
|
||||||
|
s.waitForBoot{
|
||||||
|
//var audio = Buffer.readChannel(s,FluidFilesPath("Tremblay-CEL-GlitchyMusicBoxMelo.wav"),channels:[0]);
|
||||||
|
// var audio = Buffer.readChannel(s,FluidFilesPath("Nicol-LoopE-M.wav"),channels:[0]);
|
||||||
|
var audio = Buffer.readChannel(s,FluidFilesPath("Harker-DS-TenOboeMultiphonics-M.wav"),channels:[0]);
|
||||||
|
|
||||||
|
var window = Window(bounds:Rect(0,0,1600,400));
|
||||||
|
var mels = Buffer(s);
|
||||||
|
var mags = Buffer(s);
|
||||||
|
var chroma = Buffer(s);
|
||||||
|
var mfccs = Buffer(s);
|
||||||
|
var addLayer = {
|
||||||
|
arg win, imageBuffer, color, imageAlpha, colorScaling;
|
||||||
|
imageBuffer.loadToFloatArray(action:{
|
||||||
|
arg vals;
|
||||||
|
fork({
|
||||||
|
var colors = CSVFileReader.readInterpret(FluidFilesPath("../Resources/color-schemes/%.csv".format(color))).collect{
|
||||||
|
arg row;
|
||||||
|
Color.fromArray(row);
|
||||||
|
};
|
||||||
|
var img = Image(imageBuffer.numFrames,imageBuffer.numChannels);
|
||||||
|
|
||||||
|
colorScaling.switch(
|
||||||
|
0,{
|
||||||
|
var minItem = vals.minItem;
|
||||||
|
vals = (vals - minItem) / (vals.maxItem - minItem);
|
||||||
|
vals = (vals * 255).asInteger;
|
||||||
|
},
|
||||||
|
1,{
|
||||||
|
vals = (vals + 1e-6).log;
|
||||||
|
vals = vals.linlin(vals.minItem,vals.maxItem,0.0,255.0).asInteger;
|
||||||
|
// vals.postln;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"% colorScaling argument % is invalid.".format(thisMethod,colorScaling).warn;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
vals.do{
|
||||||
|
arg val, index;
|
||||||
|
/* img.postln;
|
||||||
|
index.postln;
|
||||||
|
val.postln;*/
|
||||||
|
img.setColor(colors[val], index.div(imageBuffer.numChannels), imageBuffer.numChannels - 1 - index.mod(imageBuffer.numChannels));
|
||||||
|
};
|
||||||
|
|
||||||
|
UserView(win,Rect(0,0,win.bounds.width,win.bounds.height))
|
||||||
|
.drawFunc_{
|
||||||
|
img.drawInRect(Rect(0,0,win.bounds.width,win.bounds.height),fraction:imageAlpha);
|
||||||
|
};
|
||||||
|
},AppClock)
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
FluidBufMelBands.processBlocking(s,audio,features:mels);
|
||||||
|
FluidBufSTFT.processBlocking(s,audio,magnitude:mags);
|
||||||
|
FluidBufChroma.processBlocking(s,audio,features:chroma);
|
||||||
|
FluidBufMFCC.processBlocking(s,audio,features:mfccs);
|
||||||
|
|
||||||
|
s.sync;
|
||||||
|
|
||||||
|
"analysis done".postln;
|
||||||
|
|
||||||
|
// addLayer.(window,imageBuffer:mags,color:"CET-L02",imageAlpha:0.7,colorScaling:1);
|
||||||
|
addLayer.(window,imageBuffer:mels,color:"CET-L02",imageAlpha:1,colorScaling:1);
|
||||||
|
|
||||||
|
// addLayer.(window,imageBuffer:chroma,color:"CET-L16",imageAlpha:0.5,colorScaling:1);
|
||||||
|
addLayer.(window,imageBuffer:mfccs,color:"CET-L16",imageAlpha:0.3,colorScaling:0);
|
||||||
|
|
||||||
|
window.front;
|
||||||
|
};
|
||||||
|
)
|
||||||
Loading…
Reference in New Issue