diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index 6b530dc..2c4c1e0 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -276,6 +276,7 @@ public: // we want to poll thread roughly every 20ms checkThreadInterval = static_cast(0.02 / controlDur()); set_calc_function(); + Wrapper::getInterfaceTable()->fClearUnitOutputs(this, 1); }; /// The calc function. Checks to see if we've cancelled, spits out progress, @@ -452,7 +453,7 @@ private: protected: ParamSetType mParams; Client mClient; - bool mSynchronous{true}; + bool mSynchronous{false}; bool mQueueEnabled{false}; bool mCheckingForDone{false}; // only write to this from RT thread kthx bool mCancelled{false}; @@ -604,9 +605,11 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase { // first is string size, then chars index size = static_cast(args.next()); + + auto ft = FluidSCWrapper::getInterfaceTable(); + char* chunk = - static_cast(FluidSCWrapper::getInterfaceTable()->fRTAlloc( - w, asUnsigned(size + 1))); + static_cast(ft->fRTAlloc(w, asUnsigned(size + 1))); if (!chunk) { @@ -619,8 +622,9 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase chunk[i] = static_cast(args.next()); chunk[size] = 0; // terminate string - - return std::string{chunk}; + auto res = std::string{chunk}; + ft->fRTFree(w,chunk); + return res; } diff --git a/include/SCBufferAdaptor.hpp b/include/SCBufferAdaptor.hpp index df85474..775c330 100644 --- a/include/SCBufferAdaptor.hpp +++ b/include/SCBufferAdaptor.hpp @@ -106,6 +106,21 @@ public: bool exists() const override { return mBuffer && mBuffer->data; } + FluidTensorView allFrames() override + { + + FluidTensorView v{mBuffer->data, 0, mBuffer->frames, + mBuffer->channels}; + return v.transpose(); + } + + FluidTensorView allFrames() const override + { + FluidTensorView v{mBuffer->data, 0, mBuffer->frames, + mBuffer->channels}; + return v.transpose(); + } + FluidTensorView samps(index channel) override { FluidTensorView v{mBuffer->data, 0, mBuffer->frames, diff --git a/release-packaging/Classes/FluidBufMFCC.sc b/release-packaging/Classes/FluidBufMFCC.sc index 458e327..5c336a4 100644 --- a/release-packaging/Classes/FluidBufMFCC.sc +++ b/release-packaging/Classes/FluidBufMFCC.sc @@ -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 | diff --git a/release-packaging/Classes/FluidDataSet.sc b/release-packaging/Classes/FluidDataSet.sc index dc1d074..7f7c6d3 100644 --- a/release-packaging/Classes/FluidDataSet.sc +++ b/release-packaging/Classes/FluidDataSet.sc @@ -2,6 +2,12 @@ FluidDataSet : FluidManipulationClient { var <>synth, <>server, <>id; + *asUGenInput { |input| + var ascii = input.asString.ascii; + ^[ascii.size].addAll(ascii) + } + + *kr{ |name| ^this.new1('control',name); } diff --git a/release-packaging/Classes/FluidLabelSet.sc b/release-packaging/Classes/FluidLabelSet.sc index 147c3a5..313f21a 100644 --- a/release-packaging/Classes/FluidLabelSet.sc +++ b/release-packaging/Classes/FluidLabelSet.sc @@ -21,6 +21,12 @@ FluidLabelSet : FluidManipulationClient { ^id.asString; } + + *asUGenInput { |input| + var ascii = input.asString.ascii; + ^[ascii.size].addAll(ascii) + } + addLabel{|id, label, action| this.pr_sendMsg(\addLabel,[id.asString, label.asString],action); } @@ -52,4 +58,4 @@ FluidLabelSet : FluidManipulationClient { clear { |action| this.pr_sendMsg(\clear,[],action); } -} \ No newline at end of file +}