diff --git a/test/FluidWaveform spectrogram scratch paper.scd b/test/FluidWaveform spectrogram scratch paper.scd index 1d86849..bbed7bc 100644 --- a/test/FluidWaveform spectrogram scratch paper.scd +++ b/test/FluidWaveform spectrogram scratch paper.scd @@ -2,84 +2,42 @@ ( s.waitForBoot{ - b = Buffer.read(s,FluidFilesPath("Tremblay-AaS-AcousticStrums-M.wav")); + // b = Buffer.read(s,FluidFilesPath("Tremblay-AaS-AcousticStrums-M.wav")); + b = Buffer.read(s,FluidFilesPath("Nicol-LoopE-M.wav")); m = Buffer(s); - ~csv_colors = CSVFileReader.readInterpret("/Users/macprocomputer/Desktop/_flucoma/CETperceptual_csv_0_1/CET-L08.csv"); - - // ~csv_colors.shape.postln; - // ~csv_colors[0].postln; + // https://colorcet.com/ + ~csv_colors = CSVFileReader.readInterpret(PathName(thisProcess.nowExecutingPath).pathOnly+/+"CETperceptual_csv_0_1/CET-L16.csv"); ~colors = ~csv_colors.collect{ arg row; Color.fromArray(row); }; - // ~colors[0].postln; - s.sync; FluidBufSTFT.processBlocking(s,b,magnitude:m); s.sync; - w = Window("spectrogram test",Rect(0,0,1600,900)); - w.background_(Color.white); m.loadToFloatArray(action:{ arg mags; - // var maxItem; - // var minItem; - - mags = mags / mags.maxItem; - mags = mags.log10 * 20; + mags.clump(m.numChannels)[105].plot; - "one thing: %".format(mags[100]).postln; + mags = (mags / mags.maxItem).ampdb.linlin(-120.0,0.0,0,255).asInteger; - mags = mags.clump(m.numChannels); - - mags = mags.collect{ - arg frame; - frame.resamp1(w.bounds.height); + [0,1,2].do{ + arg amt; + "# of %s in mags: %".format(amt,mags.count({arg val; val == amt})).postln; }; - mags = mags.flop.collect{ - arg row; - row.resamp1(w.bounds.width); - }.flop; - - mags.shape.postln; - - //maxItem = mags.collect(_.maxItem).maxItem; - // minItem = mags.collect(_.minItem).minItem; - - // maxItem.postln; - - mags = mags.collect{ - arg frame; - frame.collect{ - arg mag; - mag.linlin(-120.0,0.0,0.0,255.0).asInteger; - }; - }; - - 100.do{ - // mags[rrand(0,mags.size-1)].choose.postln; - }; + ~img = Image(m.numFrames,m.numChannels); - ~uv = UserView(w,w.bounds) - .drawFunc_{ - mags.do{ - arg frame, x; - frame.do{ - arg mag, y; - // mag.postln; - Pen.addRect(Rect(x,w.bounds.height - y,1,1)); - Pen.fillColor_(~colors[mag]); - Pen.fill; - } - } + mags.do{ + arg mag, index; + ~img.setColor(~colors[mag], index.div(m.numChannels), m.numChannels - 1 - index.mod(m.numChannels)); }; - w.front; + ~img.plot; }); }; ) \ No newline at end of file