Changes to FluidDataSetWr to take separate string prefix and integer counter for label making

nix
Owen Green 6 years ago
parent ce22e867db
commit 7d6d169de3

@ -23,23 +23,32 @@ namespace client {
class DataSetWriterClient : public FluidBaseClient, OfflineIn, OfflineOut class DataSetWriterClient : public FluidBaseClient, OfflineIn, OfflineOut
{ {
public: public:
FLUID_DECLARE_PARAMS(StringParam("label", "Label"), FLUID_DECLARE_PARAMS(
BufferParam("buf", "Data Buffer"), DataSetClientRef::makeParam("dataSet", "DataSet Name"),
DataSetClientRef::makeParam("dataSet", "DataSet Name")); StringParam("labelPrefix","Label Prefix"),
LongParam("labelOffset", "Label Counter Offset", 0),
BufferParam("buf", "Data Buffer")
);
DataSetWriterClient(ParamSetViewType& p) : mParams(p) {} DataSetWriterClient(ParamSetViewType& p) : mParams(p) {}
template <typename T> template <typename T>
Result process(FluidContext&) Result process(FluidContext&)
{ {
auto& idx = get<0>(); auto dataset = get<0>().get();
auto buf = get<1>();
auto dataset = get<2>().get();
if (auto datasetPtr = dataset.lock()) 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 else
return {Result::Status::kError, "No dataset"}; return {Result::Status::kError, "No dataset"};
} }
private:
index mCounter{0};
}; };
using NRTThreadedDataSetWriter = using NRTThreadedDataSetWriter =

@ -73,6 +73,7 @@ FluidSliceCorpus {
v = bufIdx[k]; v = bufIdx[k];
counter = counter + 1; counter = counter + 1;
idx = counter; idx = counter;
("Slicing" + counter ++ "/" ++ total).postln;
OSCFunc({ OSCFunc({
tmpIndices.loadToFloatArray(action:{ |a| tmpIndices.loadToFloatArray(action:{ |a|
var sliceindex = 1; var sliceindex = 1;
@ -82,13 +83,14 @@ FluidSliceCorpus {
var rawPoints = Array.newFrom(a).asInteger; var rawPoints = Array.newFrom(a).asInteger;
if(rawPoints[0] != [v[\bounds][0]]){rawPoints = [v[\bounds][0]] ++ rawPoints}; if(rawPoints[0] != [v[\bounds][0]]){rawPoints = [v[\bounds][0]] ++ rawPoints};
if(rawPoints.last != [v[\bounds][1]]){rawPoints=rawPoints ++ [v[\bounds][1]]}; if(rawPoints.last != [v[\bounds][1]]){rawPoints=rawPoints ++ [v[\bounds][1]]};
rawPoints.doAdjacentPairs{|a,b| rawPoints.doAdjacentPairs{|a,b|
var dict; var dict;
if ((b - a) >= 1){ if ((b - a) >= 1){
dict = IdentityDictionary(); dict = IdentityDictionary();
dict.putAll(v); dict.putAll(v);
dict[\bounds] = [a,b]; dict[\bounds] = [a,b];
dict[\prefix] = k;
dict[\index] = sliceindex;
index.add(((k ++ "-" ++sliceindex).asSymbol)->dict); index.add(((k ++ "-" ++sliceindex).asSymbol)->dict);
sliceindex = sliceindex + 1; sliceindex = sliceindex + 1;
} }
@ -137,8 +139,9 @@ FluidProcessSlices{
var idx,v, k = jobs.pop; var idx,v, k = jobs.pop;
v = bufIdx[k]; v = bufIdx[k];
counter = counter + 1; counter = counter + 1;
("Processing" + counter ++ "/" ++ total).postln;
idx = counter; idx = counter;
v[\index] = counter; v[\allindex] = counter;
v[\voice] = jobID; v[\voice] = jobID;
OSCFunc({ OSCFunc({
completed = completed + 1; completed = completed + 1;

@ -1,12 +1,12 @@
FluidDataSetWr : UGen { FluidDataSetWr : UGen {
*new1 { |rate,label,buf,dataset,trig,blocking| *new1 { |rate, dataset, labelPrefix = "", labelOffset = 0, buf, trig, blocking|
buf ?? {"No input buffer provided".error}; buf ?? {"No input buffer provided".error};
^super.new1(rate,*(FluidManipulationClient.prServerString(label.asSymbol) ^super.new1(rate,*(FluidManipulationClient.prServerString(dataset.asSymbol)
++buf.asUGenInput++FluidDataSet.asUGenInput(dataset.asSymbol)++trig++blocking)); ++ FluidDataSet.asUGenInput(labelPrefix.asSymbol) ++ labelOffset.asInteger.asUGenInput ++buf.asUGenInput ++ trig ++ blocking));
} }
*kr { |label, buf, dataset,trig=1| *kr { |dataset,labelPrefix = "", labelOffset = 0,buf, trig=1|
^this.new1(\control,label,buf,dataset,trig,1) ^this.new1(\control,dataset,labelPrefix,labelOffset, buf, trig,1)
} }
} }

@ -107,12 +107,13 @@ s.reboot;
//write pitch statistics into a dataset //write pitch statistics into a dataset
( (
~extractor = FluidProcessSlices({|src,start,num,data| ~extractor = FluidProcessSlices({|src,start,num,data|
var pitch, stats, label,i; var pitch, stats, labelPrefix, labelIndex, i;
i = data.value[\voice]; i = data.value[\voice];
label = data.key; labelPrefix = data.value[\prefix];
labelIndex = data.value[\index];
pitch = FluidBufPitch.kr(src,start,num,features:~pitchbufs[i]); pitch = FluidBufPitch.kr(src,start,num,features:~pitchbufs[i]);
stats = FluidBufStats.kr(~pitchbufs[i],stats:~statsbufs[i],trig:Done.kr(pitch)); 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))
}); });
) )

Loading…
Cancel
Save