Merge branch 'clients/inter_client_comms' of https://bitbucket.org/flucoma/flucoma-supercollider into clients/inter_client_comms

nix
Gerard 6 years ago
commit d09d1ee6d4

@ -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,
@ -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<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(
w, asUnsigned(size + 1)));
static_cast<char*>(ft->fRTAlloc(w, asUnsigned(size + 1)));
if (!chunk)
{
@ -619,8 +622,9 @@ class FluidSCWrapper : public impl::FluidSCWrapperBase<C>
chunk[i] = static_cast<char>(args.next());
chunk[size] = 0; // terminate string
return std::string{chunk};
auto res = std::string{chunk};
ft->fRTFree(w,chunk);
return res;
}

@ -106,6 +106,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 |

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

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

Loading…
Cancel
Save