diff --git a/release-packaging/Classes/FluidDataSet.sc b/release-packaging/Classes/FluidDataSet.sc index cccfdd7..6d1dea1 100644 --- a/release-packaging/Classes/FluidDataSet.sc +++ b/release-packaging/Classes/FluidDataSet.sc @@ -48,15 +48,18 @@ FluidDataSet : FluidManipulationClient { } addPoint{|label, buffer, action| - this.prSendMsg(\addPoint,[label.asSymbol,buffer.asUGenInput],action); + buffer = this.prEncodeBuffer(buffer); + this.prSendMsg(\addPoint,[label.asSymbol,buffer],action); } getPoint{|label, buffer, action| - this.prSendMsg(\getPoint,[label.asSymbol,buffer.asUGenInput],action); + buffer = this.prEncodeBuffer(buffer); + this.prSendMsg(\getPoint,[label.asSymbol,buffer],action,outputBuffers:[buffer]); } updatePoint{|label, buffer, action| - this.prSendMsg(\updatePoint,[label.asSymbol,buffer.asUGenInput],action); + buffer = this.prEncodeBuffer(buffer); + this.prSendMsg(\updatePoint,[label.asSymbol,buffer],action,outputBuffers:[buffer]); } deletePoint{|label, action| diff --git a/release-packaging/Classes/FluidKMeans.sc b/release-packaging/Classes/FluidKMeans.sc index fba3e2d..da2a5ed 100644 --- a/release-packaging/Classes/FluidKMeans.sc +++ b/release-packaging/Classes/FluidKMeans.sc @@ -26,9 +26,10 @@ FluidKMeans : FluidRTDataClient { } predictPoint { |buffer, action| + buffer = this.prEncodeBuffer(buffer); this.prSendMsg(\predictPoint, - [buffer.asUGenInput], action, - [number(FluidMessageResponse,_,_)] + [buffer], action, + [number(FluidMessageResponse,_,_)],outputBuffers:[buffer] ); } } diff --git a/release-packaging/Classes/FluidKNNClassifier.sc b/release-packaging/Classes/FluidKNNClassifier.sc index 89e54d8..8d845b8 100644 --- a/release-packaging/Classes/FluidKNNClassifier.sc +++ b/release-packaging/Classes/FluidKNNClassifier.sc @@ -15,9 +15,10 @@ FluidKNNClassifier : FluidRTDataClient { } predictPoint {|buffer, action| + buffer = this.prEncodeBuffer(buffer); this.prSendMsg(\predictPoint, [buffer.asUGenInput], action, - [string(FluidMessageResponse,_,_)] + [string(FluidMessageResponse,_,_)],outputBuffers:[buffer] ); } } diff --git a/release-packaging/Classes/FluidKNNRegressor.sc b/release-packaging/Classes/FluidKNNRegressor.sc index befb11d..c4fd6d4 100644 --- a/release-packaging/Classes/FluidKNNRegressor.sc +++ b/release-packaging/Classes/FluidKNNRegressor.sc @@ -18,7 +18,8 @@ FluidKNNRegressor : FluidRTDataClient { } predictPoint { |buffer, action| - this.prSendMsg(\predictPoint, [buffer.asUGenInput], action, - [number(FluidMessageResponse,_,_)]); + buffer = this.prEncodeBuffer(buffer); + this.prSendMsg(\predictPoint, [buffer], action, + [number(FluidMessageResponse,_,_)],outputBuffers:[buffer]); } } diff --git a/release-packaging/Classes/FluidMLP.sc b/release-packaging/Classes/FluidMLP.sc index a981e5b..16a262b 100644 --- a/release-packaging/Classes/FluidMLP.sc +++ b/release-packaging/Classes/FluidMLP.sc @@ -44,8 +44,10 @@ FluidMLPRegressor : FluidRTDataClient { } predictPoint { |sourceBuffer, targetBuffer, action| + sourceBuffer = this.prEncodeBuffer(sourceBuffer); + targetBuffer = this.prEncodeBuffer(targetBuffer); this.prSendMsg(\predictPoint, - [sourceBuffer.asUGenInput, targetBuffer.asUGenInput], action); + [sourceBuffer.asUGenInput, targetBuffer.asUGenInput], action,outputBuffers:[targetBuffer]); } } @@ -94,7 +96,8 @@ FluidMLPClassifier : FluidRTDataClient { } predictPoint { |sourceBuffer, action| + sourceBuffer = this.prEncodeBuffer(sourceBuffer); this.prSendMsg(\predictPoint, - [sourceBuffer.asUGenInput], action, string(FluidMessageResponse,_,_)); + [sourceBuffer], action, string(FluidMessageResponse,_,_)); } } diff --git a/release-packaging/Classes/FluidManipulationClient.sc b/release-packaging/Classes/FluidManipulationClient.sc index 5449e07..82ee858 100644 --- a/release-packaging/Classes/FluidManipulationClient.sc +++ b/release-packaging/Classes/FluidManipulationClient.sc @@ -116,7 +116,9 @@ FluidManipulationClient { this.prSendMsg(\size,[],action,[numbers(FluidMessageResponse,_,1,_)]); } - prSendMsg { |msg, args, action,parser| + prEncodeBuffer { |buf| buf !? {^buf.asUGenInput} ?? {^-1} } + + prSendMsg { |msg, args, action,parser,outputBuffers| if(this.server.serverRunning.not,{(this.asString + "– server not running").error; ^nil}); forkIfNeeded{ synth ?? {onSynthFree.value; server.sync}; @@ -125,7 +127,16 @@ FluidManipulationClient { defer{ var result; result = FluidMessageResponse.collectArgs(parser,msg.drop(3)); - if(action.notNil){action.value(result)}{action.value}; + if(outputBuffers.notNil) { + forkIfNeeded { + outputBuffers.collectInPlace{ |b| + server.cachedBufferAt(b) !? {|x| x.updateInfo} + }; + server.sync; + if(action.notNil){action.value(*(outputBuffers++result))}{action.value}; + }; + } + {if(action.notNil){action.value(result)}{action.value};} } },'/'++msg, server.addr, nil,[synth.nodeID]).oneShot; server.listSendMsg(['/u_cmd', synth.nodeID, ugen.synthIndex, msg].addAll(args)); diff --git a/release-packaging/Classes/FluidNormalize.sc b/release-packaging/Classes/FluidNormalize.sc index 2962d5d..8881930 100644 --- a/release-packaging/Classes/FluidNormalize.sc +++ b/release-packaging/Classes/FluidNormalize.sc @@ -21,8 +21,11 @@ FluidNormalize : FluidRTDataClient { } transformPoint{|sourceBuffer, destBuffer, action| + sourceBuffer = this.prEncodeBuffer(sourceBuffer); + destBuffer = this.prEncodeBuffer(destBuffer); this.prSendMsg(\transformPoint, - [sourceBuffer.asUGenInput, destBuffer.asUGenInput], action + [sourceBuffer, destBuffer], action, + outputBuffers:[destBuffer] ); } } diff --git a/release-packaging/Classes/FluidPCA.sc b/release-packaging/Classes/FluidPCA.sc index 45dcd47..899d6e0 100644 --- a/release-packaging/Classes/FluidPCA.sc +++ b/release-packaging/Classes/FluidPCA.sc @@ -17,6 +17,8 @@ FluidPCA : FluidRTDataClient { } transformPoint{|sourceBuffer, destBuffer, action| - this.prSendMsg(\transformPoint,[sourceBuffer.asUGenInput, destBuffer.asUGenInput], action); + sourceBuffer = this.prEncodeBuffer(sourceBuffer); + destBuffer = this.prEncodeBuffer(destBuffer); + this.prSendMsg(\transformPoint,[sourceBuffer, destBuffer], action, outputBuffers:[destBuffer]); } } diff --git a/release-packaging/Classes/FluidStandardize.sc b/release-packaging/Classes/FluidStandardize.sc index 010c2ef..a01c643 100644 --- a/release-packaging/Classes/FluidStandardize.sc +++ b/release-packaging/Classes/FluidStandardize.sc @@ -20,8 +20,10 @@ FluidStandardize : FluidRTDataClient { } transformPoint{|sourceBuffer, destBuffer, action| + sourceBuffer = this.prEncodeBuffer(sourceBuffer); + destBuffer = this.prEncodeBuffer(destBuffer); this.prSendMsg(\transformPoint, - [sourceBuffer.asUGenInput, destBuffer.asUGenInput], action + [sourceBuffer, destBuffer], action, outputBuffers:[destBuffer] ); } }