From 636d9b2e7899df037ec28453db6aba91a0e3ff86 Mon Sep 17 00:00:00 2001 From: Ted Moore Date: Mon, 1 Nov 2021 11:18:13 +0000 Subject: [PATCH] FluidWaveform in alpha --- release-packaging/Classes/FluidWaveform.sc | 47 ++++++++++++++++++++++ test/FluidWaveform_test.scd | 14 +++++++ 2 files changed, 61 insertions(+) create mode 100644 release-packaging/Classes/FluidWaveform.sc create mode 100644 test/FluidWaveform_test.scd diff --git a/release-packaging/Classes/FluidWaveform.sc b/release-packaging/Classes/FluidWaveform.sc new file mode 100644 index 0000000..fe63c11 --- /dev/null +++ b/release-packaging/Classes/FluidWaveform.sc @@ -0,0 +1,47 @@ +FluidWaveform { + + *new { + arg audio_buf, slices_buf, bounds; + ^super.new.init(audio_buf,slices_buf, bounds); + } + + init { + arg audio_buf, slices_buf, bounds; + Task{ + var path = "%%_%_FluidWaveform.wav".format(PathName.tmp,Date.localtime.stamp,UniqueID.next); + var sfv, win, userView; + + bounds = bounds ? Rect(0,0,800,200); + win = Window("FluidWaveform",bounds); + audio_buf.write(path,"wav"); + + audio_buf.server.sync; + + sfv = SoundFileView(win,Rect(0,0,bounds.width,bounds.height)); + sfv.readFile(SoundFile(path)); + sfv.gridOn_(false); + + win.onClose_({ + File.delete(path) + }); + + slices_buf.loadToFloatArray(action:{ + arg slices_fa; + + userView = UserView(win,Rect(0,0,bounds.width,bounds.height)) + .drawFunc_({ + slices_fa.do{ + arg start_samp; + var x = start_samp.linlin(0,audio_buf.numFrames,0,bounds.width); + Pen.line(Point(x,0),Point(x,bounds.height)); + Pen.color_(Color.red); + Pen.stroke; + }; + }); + + win.front; + }); + }.play(AppClock); + } +} + diff --git a/test/FluidWaveform_test.scd b/test/FluidWaveform_test.scd new file mode 100644 index 0000000..93a5d55 --- /dev/null +++ b/test/FluidWaveform_test.scd @@ -0,0 +1,14 @@ +( +s.waitForBoot{ + + Task{ + var buf = Buffer.read(s,"/Users/macprocomputer/Desktop/_flucoma/code/flucoma-core-src/AudioFiles/Nicol-LoopE-M.wav"); + var slicepoints = Buffer(s); + + FluidBufAmpSlice.process(s,buf,indices:slicepoints,fastRampUp:10,fastRampDown:2205,slowRampUp:4410,slowRampDown:4410,onThreshold:10,offThreshold:5,floor:-40,minSliceLength:4410,highPassFreq:20,action:{ + FluidWaveform(buf,slicepoints,Rect(0,0,1600,400)); + }); + + }.play(AppClock); +} +) \ No newline at end of file