Merge branch 'clients/inter_client_comms' into features/sc-object-persist

nix
Owen Green 6 years ago
commit c6540c051e

@ -276,6 +276,7 @@ public:
// we want to poll thread roughly every 20ms
checkThreadInterval = static_cast<index>(0.02 / controlDur());
set_calc_function<NonRealTime, &NonRealTime::poll>();
Wrapper::getInterfaceTable()->fClearUnitOutputs(this, 1);
};
/// The calc function. Checks to see if we've cancelled, spits out progress,
@ -313,7 +314,7 @@ public:
}
w->mClient.setSynchronous(w->mSynchronous);
w->mClient.enqueue(w->mParams);
w->mClient.process();
w->mResult = w->mClient.process();
}
/// Check result and report if bad
@ -323,6 +324,8 @@ public:
Result r;
ProcessState s = w->mClient.checkProgress(r);
if(w->mSynchronous) r = w->mResult;
if ((s == ProcessState::kDone || s == ProcessState::kDoneStillProcessing) ||
(w->mSynchronous &&
s == ProcessState::kNoProcess)) // I think this hinges on the fact that
@ -456,6 +459,7 @@ protected:
bool mCancelled{false};
private:
Wrapper* mWrapper{static_cast<Wrapper*>(this)};
Result mResult;
};
////////////////////////////////////////////////////////////////////////////////
@ -829,9 +833,11 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase<C>
{
// first is string size, then chars
index size = static_cast<index>(args.next());
auto ft = FluidSCWrapper::getInterfaceTable();
char* chunk =
static_cast<char*>(FluidSCWrapper::getInterfaceTable()->fRTAlloc(
x->mWorld, asUnsigned(size + 1)));
static_cast<char*>(ft->fRTAlloc(w, asUnsigned(size + 1)));
if (!chunk)
{
@ -844,9 +850,9 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase<C>
chunk[i] = static_cast<char>(args.next());
chunk[size] = 0; // terminate string
//todo: Did I check that this is getting cleaned up somewhere? It doesn't
//look like it is
return std::string{chunk};
auto res = std::string{chunk};
ft->fRTFree(w,chunk);
return res;
}
template <typename T>

@ -110,6 +110,21 @@ public:
bool exists() const override { return mBuffer && mBuffer->data; }
FluidTensorView<float, 2> allFrames() override
{
FluidTensorView<float, 2> v{mBuffer->data, 0, mBuffer->frames,
mBuffer->channels};
return v.transpose();
}
FluidTensorView<const float, 2> allFrames() const override
{
FluidTensorView<const float, 2> v{mBuffer->data, 0, mBuffer->frames,
mBuffer->channels};
return v.transpose();
}
FluidTensorView<float, 1> samps(index channel) override
{
FluidTensorView<float, 2> v{mBuffer->data, 0, mBuffer->frames,

@ -16,7 +16,7 @@ FluidBufMFCC : UGen{
}
*kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, doneAction = 0|
^this.multiNew(\control, source, startFrame, numFrames, startChan, numChans, features, numCoeffs, numBands, minFreq, maxFreq, numCoeffs, windowSize, hopSize, fftSize, doneAction);
^this.multiNew(\control, source, startFrame, numFrames, startChan, numChans, features, numCoeffs, numBands, minFreq, maxFreq, windowSize, hopSize, fftSize, doneAction);
}
*process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, action |

@ -31,16 +31,18 @@ FluidDataSet : FluidManipulationClient {
cache {
serverCaches.initCache(server);
serverCaches.put(server,id,this);
}
}
*asUGenInput { |input|
var ascii = input.asString.ascii;
^[ascii.size].addAll(ascii)
}
asString {
^"FluidDataSet(%)".format(id).asString;
}
asUGenInput {
^id.asString;
}
addPoint{|label, buffer, action|
this.prSendMsg(\addPoint,[label.asString,buffer.asUGenInput],action);
}

@ -35,9 +35,11 @@ FluidLabelSet : FluidManipulationClient {
^"FluidLabelSet(%)".format(id).asString;
}
asUGenInput{
^id.asString;
}
*asUGenInput { |input|
var ascii = input.asString.ascii;
^[ascii.size].addAll(ascii)
}
addLabel{|id, label, action|
this.prSendMsg(\addLabel,[id.asString, label.asString],action);

@ -0,0 +1,17 @@
FluidMDS : FluidManipulationClient {
var id;
*new {|server|
var uid = UniqueID.next;
^super.new(server,uid).init(uid);
}
init {|uid|
id = uid;
}
fitTransform{|sourceDataset, k, dist, destDataset, action|
this.pr_sendMsg(\fitTransform,[sourceDataset.asString, k, dist, destDataset.asString],action);
}
}

@ -9,6 +9,7 @@
#include <clients/nrt/NormalizeClient.hpp>
#include <clients/nrt/StandardizeClient.hpp>
#include <clients/nrt/PCAClient.hpp>
#include <clients/nrt/MDSClient.hpp>
#include <clients/rt/AudioTransportClient.hpp>
#include <FluidSCWrapper.hpp>
@ -26,6 +27,7 @@ PluginLoad(FluidSTFTUGen)
makeSCWrapper<NRTThreadedNormalizeClient>("FluidNormalize",ft);
makeSCWrapper<NRTThreadedStandardizeClient>("FluidStandardize",ft);
makeSCWrapper<NRTThreadedPCAClient>("FluidPCA",ft);
makeSCWrapper<NRTThreadedMDSClient>("FluidMDS",ft);
makeSCWrapper<RTAudioTransportClient>("FluidAudioTransport",ft);
makeSCWrapper<NRTThreadedAudioTransportClient>("FluidBufAudioTransport",ft);
}

Loading…
Cancel
Save