From cc655a5d6c45321e99aac07d72b00516b7e26173 Mon Sep 17 00:00:00 2001 From: Pierre Alexandre Tremblay Date: Sun, 16 Sep 2018 09:41:40 +0100 Subject: [PATCH] FluidBufTransientSlice cleaned class definition, helpfile skeleton, and various test codes for other classes --- .../Classes/FluidBufTransientSlice.sc | 14 ++-- .../HelpSource/Classes/FluidBufCompose.schelp | 3 +- .../HelpSource/Classes/FluidBufHPSS.schelp | 3 +- .../HelpSource/Classes/FluidBufNMF.schelp | 3 +- .../HelpSource/Classes/FluidBufSines.schelp | 10 ++- .../Classes/FluidBufTransientSlice.schelp | 73 +++++++++++++++++-- .../Classes/FluidBufTransients.schelp | 3 +- .../HelpSource/Classes/FluidHPSS.schelp | 10 --- src/FluidBufHPSS/tests.scd | 10 +++ src/FluidBufSines/tests.scd | 2 +- src/FluidBufTransientSlice/tests.scd | 2 +- src/FluidBufTransients/tests.scd | 2 +- src/FluidSines/test.scd | 2 +- src/FluidTransientSlice/test.scd | 11 +++ src/FluidTransients/test.scd | 4 +- 15 files changed, 114 insertions(+), 38 deletions(-) create mode 100644 src/FluidTransientSlice/test.scd diff --git a/release-packaging/Classes/FluidBufTransientSlice.sc b/release-packaging/Classes/FluidBufTransientSlice.sc index ee9c481..18f4102 100644 --- a/release-packaging/Classes/FluidBufTransientSlice.sc +++ b/release-packaging/Classes/FluidBufTransientSlice.sc @@ -1,13 +1,11 @@ FluidBufTransientSlice{ - *process { arg server, src, offsetframes = 0, numframes = -1, offsetchans = 0, numchans = -1, transbuf, order = 200, blocksize = 2048, padding = 1024, skew = 0, threshfwd = 3, threshback = 1.1, windowsize = 14, debounce = 25; - - server = server ? Server.default -;if(src.bufnum.isNil) {Error("Invalid Buffer").format(thisMethod.name, this.class.name).throw}; - - server.sendMsg(\cmd, \BufTransientSlice, src.bufnum, offsetframes, numframes, offsetchans, numchans, -if( transbuf.isNil, -1, {transbuf.bufnum}), order, blocksize, padding, skew, threshfwd, threshback, windowsize, debounce); + *process { arg server, srcBufNum, startAt = 0, nFrames = -1, startChan = 0, nChans = -1, transBufNum, order = 200, blockSize = 2048, padding = 1024, skew = 0, threshFwd = 3, threshBack = 1.1, windowSize = 14, debounce = 25; + if(srcBufNum.isNil) { Error("Invalid buffer").format(thisMethod.name, this.class.name).throw}; + server = server ? Server.default; + transBufNum = transBufNum ? -1; + server.sendMsg(\cmd, \BufTransientSlice, srcBufNum, startAt, nFrames, startChan, nChans, transBufNum, order, blockSize, padding, skew, threshFwd, threshBack, windowSize, debounce); + } } -} \ No newline at end of file diff --git a/release-packaging/HelpSource/Classes/FluidBufCompose.schelp b/release-packaging/HelpSource/Classes/FluidBufCompose.schelp index d363ef3..2ca0aab 100644 --- a/release-packaging/HelpSource/Classes/FluidBufCompose.schelp +++ b/release-packaging/HelpSource/Classes/FluidBufCompose.schelp @@ -76,4 +76,5 @@ EXAMPLES:: code:: (some example code) -:: \ No newline at end of file +:: + \ No newline at end of file diff --git a/release-packaging/HelpSource/Classes/FluidBufHPSS.schelp b/release-packaging/HelpSource/Classes/FluidBufHPSS.schelp index 8b58a8b..b6edf97 100644 --- a/release-packaging/HelpSource/Classes/FluidBufHPSS.schelp +++ b/release-packaging/HelpSource/Classes/FluidBufHPSS.schelp @@ -60,4 +60,5 @@ EXAMPLES:: code:: b = Buffer.read(s,"../../../AudioFiles/01-mix.wav".resolveRelative); b.play -:: \ No newline at end of file +:: + \ No newline at end of file diff --git a/release-packaging/HelpSource/Classes/FluidBufNMF.schelp b/release-packaging/HelpSource/Classes/FluidBufNMF.schelp index ee74904..2a6da6b 100644 --- a/release-packaging/HelpSource/Classes/FluidBufNMF.schelp +++ b/release-packaging/HelpSource/Classes/FluidBufNMF.schelp @@ -94,4 +94,5 @@ EXAMPLES:: code:: b = Buffer.read(s,"../../../AudioFiles/01-mix.wav".resolveRelative); b.play -:: \ No newline at end of file +:: + \ No newline at end of file diff --git a/release-packaging/HelpSource/Classes/FluidBufSines.schelp b/release-packaging/HelpSource/Classes/FluidBufSines.schelp index d3d6e78..fe5ac86 100644 --- a/release-packaging/HelpSource/Classes/FluidBufSines.schelp +++ b/release-packaging/HelpSource/Classes/FluidBufSines.schelp @@ -60,11 +60,13 @@ ARGUMENT:: hopSize ARGUMENT:: fftSize (describe argument here) -returns:: (describe returnvalue here) - +returns:: + Nothing, as the various destination buffers are declared in the function call. EXAMPLES:: code:: -(some example code) -:: \ No newline at end of file + b = Buffer.read(s,"../../../AudioFiles/01-mix.wav".resolveRelative); + b.play +:: + \ No newline at end of file diff --git a/release-packaging/HelpSource/Classes/FluidBufTransientSlice.schelp b/release-packaging/HelpSource/Classes/FluidBufTransientSlice.schelp index ad4fee3..16001f8 100644 --- a/release-packaging/HelpSource/Classes/FluidBufTransientSlice.schelp +++ b/release-packaging/HelpSource/Classes/FluidBufTransientSlice.schelp @@ -1,7 +1,68 @@ -s.reboot -b = Buffer.read(s,"/Users/owen/Desktop/denoise_stn/sources/01-mix.wav",0,44100); -c = Buffer.new -FluidBufTransientSlice.process(s,b,0,-1,0,-1,c,20,1024,1024,0,3,1.1,14,25) -//Num frames => num transients, values = indices (in samps) -c.query +TITLE:: FluidBufTransientSlice +summary:: Buffer-Based Transient-Based Slicer +categories:: Libraries>FluidDecomposition +related:: Guides/FluCoMa, Guides/FluidDecomposition +DESCRIPTION:: +A non-real-time transient-based slice extractor implementing footnote::This was made possible thanks to the FluCoMa project (http://www.flucoma.org/) funded by the European Research Council (https://erc.europa.eu/) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 725899).:: + + +CLASSMETHODS:: + +METHOD:: process +(describe method here) + +ARGUMENT:: server +(describe argument here) + +ARGUMENT:: srcBufNum +(describe argument here) + +ARGUMENT:: startAt +(describe argument here) + +ARGUMENT:: nFrames +(describe argument here) + +ARGUMENT:: startChan +(describe argument here) + +ARGUMENT:: nChans +(describe argument here) + +ARGUMENT:: transBufNum +(describe argument here) + +ARGUMENT:: order +(describe argument here) + +ARGUMENT:: blockSize +(describe argument here) + +ARGUMENT:: padding +(describe argument here) + +ARGUMENT:: skew +(describe argument here) + +ARGUMENT:: threshFwd +(describe argument here) + +ARGUMENT:: threshBack +(describe argument here) + +ARGUMENT:: windowSize +(describe argument here) + +ARGUMENT:: debounce +(describe argument here) + +returns:: + Nothing, as the various destination buffers are declared in the function call. + +EXAMPLES:: + +code:: +(some example code) +:: + \ No newline at end of file diff --git a/release-packaging/HelpSource/Classes/FluidBufTransients.schelp b/release-packaging/HelpSource/Classes/FluidBufTransients.schelp index 865fa30..4dd47b6 100644 --- a/release-packaging/HelpSource/Classes/FluidBufTransients.schelp +++ b/release-packaging/HelpSource/Classes/FluidBufTransients.schelp @@ -66,4 +66,5 @@ EXAMPLES:: code:: (some example code) -:: \ No newline at end of file +:: + \ No newline at end of file diff --git a/release-packaging/HelpSource/Classes/FluidHPSS.schelp b/release-packaging/HelpSource/Classes/FluidHPSS.schelp index d0d6af4..078d710 100644 --- a/release-packaging/HelpSource/Classes/FluidHPSS.schelp +++ b/release-packaging/HelpSource/Classes/FluidHPSS.schelp @@ -59,15 +59,5 @@ returns:: (describe returnvalue here) EXAMPLES:: code:: -(some example code) - s.reboot -b = Buffer.cueSoundFile(s,"/Users/owen/Desktop/denoise_stn/sources/01-mix.wav",0,1) - -//The world's most expensive stereoizer -({ - var hpss = FluidHPSS.ar(DiskIn.ar(1,b.bufnum,loop:1),harmonicBinaryMask:1,percussiveBinaryMask:1, harmonicThreshAmp1:SinOsc.kr(1.5,mul:20,add:20),harmonicThreshAmp2:SinOsc.kr(3,mul:25,add:25), percussiveThreshAmp1:SinOsc.kr(1.6,0,mul:30,add:30),percussiveThreshAmp2:SinOsc.kr(1.7,0,mul:17,add:24)); - [hpss.at(2) + 0.5 * hpss.at(0),hpss.at(1) + 0.5 * hpss.at(0)]; -}.play;) - :: \ No newline at end of file diff --git a/src/FluidBufHPSS/tests.scd b/src/FluidBufHPSS/tests.scd index 9b695d7..04fd9d2 100644 --- a/src/FluidBufHPSS/tests.scd +++ b/src/FluidBufHPSS/tests.scd @@ -36,3 +36,13 @@ Routine{ (Main.elapsedTime - t).postln; }.play ); + + +// owen's sexy example (The world's most expensive stereoizer) + +( +{ + var hpss = FluidHPSS.ar(PlayBuf.ar(1,b.bufnum,loop:1),harmonicBinaryMask:1,percussiveBinaryMask:1, harmonicThreshAmp1:SinOsc.kr(1.5,mul:20,add:20),harmonicThreshAmp2:SinOsc.kr(3,mul:25,add:25), percussiveThreshAmp1:SinOsc.kr(1.6,0,mul:30,add:30),percussiveThreshAmp2:SinOsc.kr(1.7,0,mul:17,add:24)); + [hpss[2] + 0.5 * hpss[0], hpss[1] + 0.5 * hpss[0]]; +}.play; +) \ No newline at end of file diff --git a/src/FluidBufSines/tests.scd b/src/FluidBufSines/tests.scd index 05acb8c..69058da 100644 --- a/src/FluidBufSines/tests.scd +++ b/src/FluidBufSines/tests.scd @@ -31,7 +31,7 @@ d.play; ( Routine{ t = Main.elapsedTime; - FluidBufSines.process(s,b.bufnum, 44100, 44100, 0, 0, c.bufnum, d.bufnum, 50,0.2,5,0.2,0.9,2048,512,4096); // need to change these for something sensible + FluidBufSines.process(s,b.bufnum, 44100, 88200, 0, 0, c.bufnum, d.bufnum, 30,0.3,3,0.1,0.9,2048,512,4096); s.sync; (Main.elapsedTime - t).postln; }.play diff --git a/src/FluidBufTransientSlice/tests.scd b/src/FluidBufTransientSlice/tests.scd index aac7c76..3b3cdf1 100644 --- a/src/FluidBufTransientSlice/tests.scd +++ b/src/FluidBufTransientSlice/tests.scd @@ -12,7 +12,7 @@ d = Buffer.new(s); // without basic params Routine{ t = Main.elapsedTime; - FluidBufTransients.process(s,b.bufnum, transBufNum:c.bufnum, resBufNum:d.bufnum); + FluidBufTransientSlice.process(s,b.bufnum, transBufNum:c.bufnum, resBufNum:d.bufnum); s.sync; (Main.elapsedTime - t).postln; }.play diff --git a/src/FluidBufTransients/tests.scd b/src/FluidBufTransients/tests.scd index aac7c76..a4da738 100644 --- a/src/FluidBufTransients/tests.scd +++ b/src/FluidBufTransients/tests.scd @@ -31,7 +31,7 @@ d.play; ( Routine{ t = Main.elapsedTime; - FluidBufTransients.process(s,b.bufnum, 44100, 44100, 0, 0, c.bufnum, d.bufnum, 100, 512,256,1,2,1,12,20); + FluidBufTransients.process(s,b.bufnum, 0, 88200, 0, 0, c.bufnum, d.bufnum, 100, 512,256,1,2,1,12,20); s.sync; (Main.elapsedTime - t).postln; }.play diff --git a/src/FluidSines/test.scd b/src/FluidSines/test.scd index d7a2acd..7d4236f 100644 --- a/src/FluidSines/test.scd +++ b/src/FluidSines/test.scd @@ -7,7 +7,7 @@ b.play {FluidSines.ar(PlayBuf.ar(1,b.bufnum,loop:1))}.play // sexier params -{FluidSines.ar(PlayBuf.ar(1,b.bufnum,loop:1),threshold:MouseX.kr())}.play +{FluidSines.ar(PlayBuf.ar(1,b.bufnum,loop:1),30,MouseX.kr(),5)}.play // null test (the process add a latency of (( hopSize * minTrackLen) + windowSize) samples {var sig = PlayBuf.ar(1,b.bufnum,loop:1); [FluidSines.ar(sig).sum - DelayN.ar(sig, 1, ((( 512 * 15) + 2048)/ s.sampleRate))]}.play diff --git a/src/FluidTransientSlice/test.scd b/src/FluidTransientSlice/test.scd new file mode 100644 index 0000000..84e8f8c --- /dev/null +++ b/src/FluidTransientSlice/test.scd @@ -0,0 +1,11 @@ +s.reboot; + +b = Buffer.read(s,"/Users/pa/Documents/documents@hudd/research/projects/fluid corpus navigation/research/archives-2017-18/denoise_stn/sources/01-mix.wav"); + +// basic param +x = {FluidTransients.ar(PlayBuf.ar(1,b.bufnum,loop:1))}.play + +// sexier params +x = {FluidTransients.ar(PlayBuf.ar(1,b.bufnum,loop:1))}.play //change to something sensible + +// add null test \ No newline at end of file diff --git a/src/FluidTransients/test.scd b/src/FluidTransients/test.scd index 2026eac..431ba55 100644 --- a/src/FluidTransients/test.scd +++ b/src/FluidTransients/test.scd @@ -3,10 +3,10 @@ s.reboot; b = Buffer.read(s,"/Users/pa/Documents/documents@hudd/research/projects/fluid corpus navigation/research/archives-2017-18/denoise_stn/sources/01-mix.wav"); // basic param -x = {FluidTransients.ar(PlayBuf.ar(1,b.bufnum,loop:1))}.play +{FluidTransients.ar(PlayBuf.ar(1,b.bufnum,loop:1))}.play // sexier params -x = {FluidTransients.ar(PlayBuf.ar(1,b.bufnum,loop:1))}.play //change to something sensible +{FluidTransients.ar(PlayBuf.ar(1,b.bufnum,loop:1),80,threshFwd:MouseX.kr(0,5),threshBack:MouseY.kr(0,2))}.play // null test (the process add a latency of (blockSize + padding - order) samples {var sig = PlayBuf.ar(1,b.bufnum,loop:1); [FluidTransients.ar(sig).sum - DelayN.ar(sig, 1, ((256 + 128 - 20)/ s.sampleRate))]}.play \ No newline at end of file