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
{
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 <typename T>
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 =

@ -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;

@ -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)
}
}

@ -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))
});
)

Loading…
Cancel
Save