From 7d6d169de37ccc5cdd294cd3ab3401408b85cde6 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Thu, 11 Jun 2020 11:42:33 +0100 Subject: [PATCH] Changes to FluidDataSetWr to take separate string prefix and integer counter for label making --- include/clients/rt/FluidDataSetWr.hpp | 23 +++++++++++++------ .../Classes/FluidCorpusBuilders.sc | 7 ++++-- release-packaging/Classes/FluidDataSetWr.sc | 10 ++++---- .../Classes/FluidProcessSlices.schelp | 7 +++--- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/include/clients/rt/FluidDataSetWr.hpp b/include/clients/rt/FluidDataSetWr.hpp index e700a4f..7058289 100644 --- a/include/clients/rt/FluidDataSetWr.hpp +++ b/include/clients/rt/FluidDataSetWr.hpp @@ -23,23 +23,32 @@ namespace client { class DataSetWriterClient : public FluidBaseClient, OfflineIn, OfflineOut { public: - FLUID_DECLARE_PARAMS(StringParam("label", "Label"), - BufferParam("buf", "Data Buffer"), - DataSetClientRef::makeParam("dataSet", "DataSet Name")); + FLUID_DECLARE_PARAMS( + DataSetClientRef::makeParam("dataSet", "DataSet Name"), + StringParam("labelPrefix","Label Prefix"), + LongParam("labelOffset", "Label Counter Offset", 0), + BufferParam("buf", "Data Buffer") + ); DataSetWriterClient(ParamSetViewType& p) : mParams(p) {} template Result process(FluidContext&) { - auto& idx = get<0>(); - auto buf = get<1>(); - auto dataset = get<2>().get(); + auto dataset = get<0>().get(); if (auto datasetPtr = dataset.lock()) - return datasetPtr->addPoint(idx, buf); + { + std::stringstream ss; + ss << get<1>() << get<2>() + (mCounter++); + auto buf = get<3>(); + return datasetPtr->addPoint(ss.str(), buf); + } else return {Result::Status::kError, "No dataset"}; } + + private: + index mCounter{0}; }; using NRTThreadedDataSetWriter = diff --git a/release-packaging/Classes/FluidCorpusBuilders.sc b/release-packaging/Classes/FluidCorpusBuilders.sc index 30f128d..0c6bf3b 100644 --- a/release-packaging/Classes/FluidCorpusBuilders.sc +++ b/release-packaging/Classes/FluidCorpusBuilders.sc @@ -73,6 +73,7 @@ FluidSliceCorpus { v = bufIdx[k]; counter = counter + 1; idx = counter; + ("Slicing" + counter ++ "/" ++ total).postln; OSCFunc({ tmpIndices.loadToFloatArray(action:{ |a| var sliceindex = 1; @@ -82,13 +83,14 @@ FluidSliceCorpus { var rawPoints = Array.newFrom(a).asInteger; if(rawPoints[0] != [v[\bounds][0]]){rawPoints = [v[\bounds][0]] ++ rawPoints}; if(rawPoints.last != [v[\bounds][1]]){rawPoints=rawPoints ++ [v[\bounds][1]]}; - rawPoints.doAdjacentPairs{|a,b| var dict; if ((b - a) >= 1){ dict = IdentityDictionary(); dict.putAll(v); dict[\bounds] = [a,b]; + dict[\prefix] = k; + dict[\index] = sliceindex; index.add(((k ++ "-" ++sliceindex).asSymbol)->dict); sliceindex = sliceindex + 1; } @@ -137,8 +139,9 @@ FluidProcessSlices{ var idx,v, k = jobs.pop; v = bufIdx[k]; counter = counter + 1; + ("Processing" + counter ++ "/" ++ total).postln; idx = counter; - v[\index] = counter; + v[\allindex] = counter; v[\voice] = jobID; OSCFunc({ completed = completed + 1; diff --git a/release-packaging/Classes/FluidDataSetWr.sc b/release-packaging/Classes/FluidDataSetWr.sc index 0787ed6..7b9aacc 100644 --- a/release-packaging/Classes/FluidDataSetWr.sc +++ b/release-packaging/Classes/FluidDataSetWr.sc @@ -1,12 +1,12 @@ FluidDataSetWr : UGen { - *new1 { |rate,label,buf,dataset,trig,blocking| + *new1 { |rate, dataset, labelPrefix = "", labelOffset = 0, buf, trig, blocking| buf ?? {"No input buffer provided".error}; - ^super.new1(rate,*(FluidManipulationClient.prServerString(label.asSymbol) - ++buf.asUGenInput++FluidDataSet.asUGenInput(dataset.asSymbol)++trig++blocking)); + ^super.new1(rate,*(FluidManipulationClient.prServerString(dataset.asSymbol) + ++ FluidDataSet.asUGenInput(labelPrefix.asSymbol) ++ labelOffset.asInteger.asUGenInput ++buf.asUGenInput ++ trig ++ blocking)); } - *kr { |label, buf, dataset,trig=1| - ^this.new1(\control,label,buf,dataset,trig,1) + *kr { |dataset,labelPrefix = "", labelOffset = 0,buf, trig=1| + ^this.new1(\control,dataset,labelPrefix,labelOffset, buf, trig,1) } } diff --git a/release-packaging/HelpSource/Classes/FluidProcessSlices.schelp b/release-packaging/HelpSource/Classes/FluidProcessSlices.schelp index a764c05..727a30a 100644 --- a/release-packaging/HelpSource/Classes/FluidProcessSlices.schelp +++ b/release-packaging/HelpSource/Classes/FluidProcessSlices.schelp @@ -107,12 +107,13 @@ s.reboot; //write pitch statistics into a dataset ( ~extractor = FluidProcessSlices({|src,start,num,data| - var pitch, stats, label,i; + var pitch, stats, labelPrefix, labelIndex, i; i = data.value[\voice]; - label = data.key; + labelPrefix = data.value[\prefix]; + labelIndex = data.value[\index]; pitch = FluidBufPitch.kr(src,start,num,features:~pitchbufs[i]); stats = FluidBufStats.kr(~pitchbufs[i],stats:~statsbufs[i],trig:Done.kr(pitch)); - FluidDataSetWr.kr(label,~statsbufs[i],~pitchdata,Done.kr(stats)) + FluidDataSetWr.kr(~pitchdata,labelPrefix,labelIndex,buf:~statsbufs[i],trig:Done.kr(stats)) }); )