From b2a295d8b33e62abcaf29011f18204e1cdf91b05 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Wed, 1 Jul 2020 11:39:53 +0100 Subject: [PATCH 1/7] Add support for LongArrayT params --- include/FluidSCWrapper.hpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index 6d16c28..af3c649 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -987,6 +987,24 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase ft->fRTFree(w,chunk); return res; } + + static auto fromArgs(Unit*, FloatControlsIter& args,typename LongArrayT::type&, int) + { + //first is array size, then items + + using Container = typename LongArrayT::type; + using Value = typename Container::type; + + index size = static_cast(args.next()); + + Container res(size); + + for (index i = 0; i < size; ++i) + res[i] = static_cast(args.next()); + + return res; + } + template static std::enable_if_t::value, T> From 2b71644d7bcfa11e0cd3cd37af4df5782526a809 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Wed, 1 Jul 2020 22:02:42 +0100 Subject: [PATCH 2/7] Refresh parameters before message invocation --- include/FluidSCWrapper.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index af3c649..eb42cee 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -1343,6 +1343,8 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase ForEach(args,[x,&inArgs](auto& arg){ arg = ParamReader::fromArgs(x, inArgs,arg,0); }); + + x->client().setParams(x->params()); ft->fDoAsynchronousCommand( x->mWorld, nullptr, getName(), msg, From 7c271fa525b85f7a1ec77783d29530d2d1720c89 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Mon, 6 Jul 2020 13:28:36 +0100 Subject: [PATCH 3/7] Assign server properly in FluidLoadFolder, resolves #59 --- release-packaging/Classes/FluidCorpusBuilders.sc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-packaging/Classes/FluidCorpusBuilders.sc b/release-packaging/Classes/FluidCorpusBuilders.sc index af7d58f..8a16df1 100644 --- a/release-packaging/Classes/FluidCorpusBuilders.sc +++ b/release-packaging/Classes/FluidCorpusBuilders.sc @@ -10,7 +10,7 @@ FluidLoadFolder { play { |server, action| var sizes,channels,maxChan, startEnd,counter; - server ?? server = Server.default; + server ?? {server = Server.default}; files = SoundFile.collect(path +/+ '*'); sizes = files.collect{|f|f.numFrames()}; channels = files.collect{|f| f.numChannels()}; From 7f6453be1854f406d99a9e7d3f4cba38cbccd3cc Mon Sep 17 00:00:00 2001 From: Owen Green Date: Mon, 6 Jul 2020 13:29:28 +0100 Subject: [PATCH 4/7] Enable .kr for FluidBufCompose, resolves #60 --- release-packaging/Classes/FluidBufCompose.sc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/release-packaging/Classes/FluidBufCompose.sc b/release-packaging/Classes/FluidBufCompose.sc index 47f323d..a9326aa 100644 --- a/release-packaging/Classes/FluidBufCompose.sc +++ b/release-packaging/Classes/FluidBufCompose.sc @@ -11,10 +11,9 @@ FluidBufCompose : UGen { ^super.new1(rate, source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, trig, blocking); } -/* *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, trig = 1| - - ^this.multiNew('control', source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, trig, blocking:1); - }*/ + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, trig = 1| + ^this.new1('control', source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, trig, 1); + } *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, action| From 36f0fca45348deea9090d549612b3a1cade865c0 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Mon, 6 Jul 2020 13:31:04 +0100 Subject: [PATCH 5/7] Make number of parallel tasks settable in FluidSliceCorpus, and manage small sets, resolves #61 --- release-packaging/Classes/FluidCorpusBuilders.sc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/release-packaging/Classes/FluidCorpusBuilders.sc b/release-packaging/Classes/FluidCorpusBuilders.sc index 8a16df1..e629743 100644 --- a/release-packaging/Classes/FluidCorpusBuilders.sc +++ b/release-packaging/Classes/FluidCorpusBuilders.sc @@ -56,7 +56,7 @@ FluidSliceCorpus { ^super.newCopyArgs(sliceFunc,labelFunc); } - play{ |server,sourceBuffer,bufIdx, action| + play{ |server,sourceBuffer,bufIdx, action, tasks = 4| var counter, tmpIndices,perf,jobs,total,uid, completed, pointstotal; uid = UniqueID.next; sourceBuffer ?? {"No buffer to slice".error; ^nil}; @@ -111,7 +111,8 @@ FluidSliceCorpus { FreeSelfWhenDone.kr(onsets); }.play; }; - 4.do{perf.value(Buffer.new)}; + tasks ?? {tasks = 4}; + tasks.asInteger.min(jobs.size).do{perf.value(Buffer.new)}; } } From f480d476b216ff6c9abf57204208113233a9de59 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Mon, 6 Jul 2020 13:49:19 +0100 Subject: [PATCH 6/7] Correct reading of UID from controls for ModelObjects, resolves #62 --- include/FluidSCWrapper.hpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index eb42cee..6c76610 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -343,8 +343,8 @@ class NonRealTime : public SCUnit using SharedState = std::shared_ptr>; public: - static index ControlOffset(Unit*) { return IsModel_t::value ? 1 : 0; } - static index ControlSize(Unit* unit) { return index(unit->mNumInputs) - unit->mSpecialIndex - 2; } + static index ControlOffset(Unit*) { return 0; } + static index ControlSize(Unit* unit) { return index(unit->mNumInputs) - unit->mSpecialIndex - 2 - (IsModel_t::value ? 1 : 0); } static void setup(InterfaceTable* ft, const char* name) { @@ -683,7 +683,8 @@ struct LifetimePolicy static void constructClass(Unit* unit) { - index uid = static_cast(unit->mInBuf[Wrapper::ControlOffset(unit)][0]); + index uid = static_cast(unit->mInBuf[Wrapper::ControlOffset(unit)+Wrapper::ControlSize(unit)][0]); + FloatControlsIter controlsReader{unit->mInBuf + Wrapper::ControlOffset(unit),Wrapper::ControlSize(unit)}; auto& entry = mRegistry[uid]; auto& client = entry.client; From 1923ba397745ff3527a767b30e8adc16ae5e6e4e Mon Sep 17 00:00:00 2001 From: Owen Green Date: Mon, 6 Jul 2020 13:50:41 +0100 Subject: [PATCH 7/7] Update order of args for FluidNormalize --- release-packaging/Classes/FluidNormalize.sc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-packaging/Classes/FluidNormalize.sc b/release-packaging/Classes/FluidNormalize.sc index 07b77a1..c8013e4 100644 --- a/release-packaging/Classes/FluidNormalize.sc +++ b/release-packaging/Classes/FluidNormalize.sc @@ -2,7 +2,7 @@ FluidNormalize : FluidManipulationClient { *new {|server, min = 0, max = 1| var uid = UniqueID.next; - ^super.new(server,uid,min,max)!?{|inst|inst.init(uid);inst} + ^super.new(server,min,max,uid)!?{|inst|inst.init(uid);inst} } init {|uid|