From 267817366193e4f54ce3bf51025f373f5c06b140 Mon Sep 17 00:00:00 2001 From: Ted Moore Date: Mon, 8 Aug 2022 16:18:09 +0100 Subject: [PATCH 1/4] fix for issue #120 --- release-packaging/Classes/FluidBufLoudness.sc | 12 ++++++------ release-packaging/Classes/FluidBufSTFT.sc | 7 ------- release-packaging/Classes/FluidBufTransientSlice.sc | 12 ++++++------ 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/release-packaging/Classes/FluidBufLoudness.sc b/release-packaging/Classes/FluidBufLoudness.sc index 6b95a20..611c228 100644 --- a/release-packaging/Classes/FluidBufLoudness.sc +++ b/release-packaging/Classes/FluidBufLoudness.sc @@ -29,8 +29,8 @@ FluidBufLoudness : FluidBufProcessor{ source = source.asUGenInput; features = features.asUGenInput; - source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; - features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^FluidProxyUgen.kr(\FluidBufLoudnessTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, kWeighting, truePeak, windowSize, hopSize, maxwindowSize, trig, blocking); } @@ -44,8 +44,8 @@ FluidBufLoudness : FluidBufProcessor{ source = source.asUGenInput; features = features.asUGenInput; - source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; - features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^this.new( server, nil, [features] @@ -63,8 +63,8 @@ FluidBufLoudness : FluidBufProcessor{ source = source.asUGenInput; features = features.asUGenInput; - source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; - features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^this.new( server, nil, [features] diff --git a/release-packaging/Classes/FluidBufSTFT.sc b/release-packaging/Classes/FluidBufSTFT.sc index 67245a0..0c2aa7b 100644 --- a/release-packaging/Classes/FluidBufSTFT.sc +++ b/release-packaging/Classes/FluidBufSTFT.sc @@ -2,9 +2,6 @@ FluidBufSTFT : FluidBufProcessor { *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0,windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 1| - // source = source.asUGenInput; - - // source.isNil.if {"FluidBufScale: Invalid source buffer".throw}; source = source ? -1; magnitude = magnitude ? -1; phase = phase ? -1; @@ -15,9 +12,6 @@ FluidBufSTFT : FluidBufProcessor { *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - // source = source.asUGenInput; - - // source.isNil.if {"FluidBufSTFT: Invalid source buffer".throw}; source = source ? -1; magnitude = magnitude ? -1; phase = phase ? -1; @@ -32,7 +26,6 @@ FluidBufSTFT : FluidBufProcessor { *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1,freeWhenDone = true, action| - // source = source.asUGenInput; source = source ? -1; magnitude = magnitude ? -1; phase = phase ? -1; diff --git a/release-packaging/Classes/FluidBufTransientSlice.sc b/release-packaging/Classes/FluidBufTransientSlice.sc index 81bff0c..201637e 100644 --- a/release-packaging/Classes/FluidBufTransientSlice.sc +++ b/release-packaging/Classes/FluidBufTransientSlice.sc @@ -5,8 +5,8 @@ FluidBufTransientSlice : FluidBufProcessor { source = source.asUGenInput; indices = indices.asUGenInput; - source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw}; + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + indices.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^FluidProxyUgen.kr(this.objectClassName++\Trigger, -1, source, startFrame, numFrames, startChan, numChans, indices, order, blockSize, padSize, skew, threshFwd, threshBack, windowSize, clumpLength, minSliceLength, trig, blocking); } @@ -16,8 +16,8 @@ FluidBufTransientSlice : FluidBufProcessor { source = source.asUGenInput; indices = indices.asUGenInput; - source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw}; + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + indices.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^this.new( server, nil,[indices] @@ -30,8 +30,8 @@ FluidBufTransientSlice : FluidBufProcessor { source = source.asUGenInput; indices = indices.asUGenInput; - source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw}; + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + indices.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^this.new( server, nil,[indices] From 17067137fdd3f399c18675f288e2ec90ba1512e0 Mon Sep 17 00:00:00 2001 From: gianlucaelia Date: Fri, 12 Aug 2022 12:21:58 +0100 Subject: [PATCH 2/4] Classes: uniform sc default indentation (#134) SuperCollider code defaults to indentation using tab. All sc codebase is formatted like this. Here I just opened every .sc file in scide, selected all code, and automatically indent it pressing Tab. --- release-packaging/Classes/FluidAmpGate.sc | 2 +- .../Classes/FluidAudioTransport.sc | 12 +- .../Classes/FluidBufAmpFeature.sc | 40 +- release-packaging/Classes/FluidBufAmpGate.sc | 42 +- release-packaging/Classes/FluidBufAmpSlice.sc | 40 +- .../Classes/FluidBufAudioTransport.sc | 44 +- release-packaging/Classes/FluidBufChroma.sc | 40 +- release-packaging/Classes/FluidBufCompose.sc | 48 +- release-packaging/Classes/FluidBufFlatten.sc | 46 +- release-packaging/Classes/FluidBufHPSS.sc | 50 +- release-packaging/Classes/FluidBufLoudness.sc | 114 ++-- release-packaging/Classes/FluidBufMFCC.sc | 48 +- release-packaging/Classes/FluidBufMelBands.sc | 40 +- release-packaging/Classes/FluidBufNMF.sc | 50 +- release-packaging/Classes/FluidBufNMFCross.sc | 46 +- release-packaging/Classes/FluidBufNMFSeed.sc | 38 +- .../Classes/FluidBufNoveltyFeature.sc | 28 +- .../Classes/FluidBufNoveltySlice.sc | 46 +- .../Classes/FluidBufOnsetFeature.sc | 64 +- .../Classes/FluidBufOnsetSlice.sc | 64 +- release-packaging/Classes/FluidBufPitch.sc | 84 +-- release-packaging/Classes/FluidBufSTFT.sc | 38 +- release-packaging/Classes/FluidBufScale.sc | 38 +- release-packaging/Classes/FluidBufSelect.sc | 64 +- .../Classes/FluidBufSelectEvery.sc | 38 +- release-packaging/Classes/FluidBufSines.sc | 36 +- .../Classes/FluidBufSpectralShape.sc | 16 +- release-packaging/Classes/FluidBufStats.sc | 84 +-- .../Classes/FluidBufThreadDemo.sc | 20 +- release-packaging/Classes/FluidBufThresh.sc | 54 +- .../Classes/FluidBufTransientSlice.sc | 44 +- .../Classes/FluidBufTransients.sc | 44 +- release-packaging/Classes/FluidChroma.sc | 6 +- release-packaging/Classes/FluidDataSet.sc | 108 +-- .../Classes/FluidDataSetQuery.sc | 87 ++- release-packaging/Classes/FluidDataSetWr.sc | 16 +- release-packaging/Classes/FluidGrid.sc | 16 +- release-packaging/Classes/FluidHPSS.sc | 16 +- release-packaging/Classes/FluidKDTree.sc | 74 +-- release-packaging/Classes/FluidKMeans.sc | 34 +- .../Classes/FluidKNNClassifier.sc | 58 +- .../Classes/FluidKNNRegressor.sc | 56 +- release-packaging/Classes/FluidLabelSet.sc | 54 +- release-packaging/Classes/FluidLoudness.sc | 48 +- release-packaging/Classes/FluidMDS.sc | 20 +- release-packaging/Classes/FluidMFCC.sc | 6 +- release-packaging/Classes/FluidMLP.sc | 262 ++++---- .../Classes/FluidManipulationJSON.sc | 16 +- release-packaging/Classes/FluidMelBands.sc | 6 +- .../Classes/FluidMessageResponse.sc | 64 +- release-packaging/Classes/FluidNMFFilter.sc | 8 +- release-packaging/Classes/FluidNMFMatch.sc | 8 +- release-packaging/Classes/FluidNRTProcess.sc | 36 +- release-packaging/Classes/FluidNormalize.sc | 104 +-- .../Classes/FluidNoveltyFeature.sc | 18 +- .../Classes/FluidNoveltySlice.sc | 18 +- .../Classes/FluidOnsetFeature.sc | 4 +- release-packaging/Classes/FluidOnsetSlice.sc | 4 +- release-packaging/Classes/FluidPCA.sc | 112 ++-- release-packaging/Classes/FluidPitch.sc | 46 +- release-packaging/Classes/FluidRobustScale.sc | 94 +-- release-packaging/Classes/FluidSKMeans.sc | 34 +- release-packaging/Classes/FluidSTFTPass.sc | 2 +- release-packaging/Classes/FluidServerCache.sc | 54 +- .../Classes/FluidServerObject.sc | 618 +++++++++--------- release-packaging/Classes/FluidSines.sc | 2 +- .../Classes/FluidSpectralShape.sc | 46 +- release-packaging/Classes/FluidStandardize.sc | 84 +-- release-packaging/Classes/FluidStats.sc | 26 +- release-packaging/Classes/FluidUMAP.sc | 106 +-- release-packaging/Classes/FluidWaveform.sc | 2 +- 71 files changed, 1917 insertions(+), 1918 deletions(-) diff --git a/release-packaging/Classes/FluidAmpGate.sc b/release-packaging/Classes/FluidAmpGate.sc index a751bb0..84a00fa 100644 --- a/release-packaging/Classes/FluidAmpGate.sc +++ b/release-packaging/Classes/FluidAmpGate.sc @@ -5,7 +5,7 @@ FluidAmpGate : FluidRTUGen { checkInputs { if(inputs.at(12).rate != 'scalar') { ^(": maxSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidAudioTransport.sc b/release-packaging/Classes/FluidAudioTransport.sc index 49a3357..0b8cf64 100644 --- a/release-packaging/Classes/FluidAudioTransport.sc +++ b/release-packaging/Classes/FluidAudioTransport.sc @@ -1,11 +1,11 @@ FluidAudioTransport : FluidRTUGen { - init { |...theInputs| - theInputs; - inputs = theInputs; - this.specialIndex = 1; //two audio inputs - // ^this.initOutputs(1,rate); - } + init { |...theInputs| + theInputs; + inputs = theInputs; + this.specialIndex = 1; //two audio inputs + // ^this.initOutputs(1,rate); + } *ar { arg in = 0, in2 = 0, interpolation = 0.0, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1; ^this.multiNew('audio', in.asAudioRateInput, in2, interpolation, windowSize, hopSize, fftSize, maxFFTSize) diff --git a/release-packaging/Classes/FluidBufAmpFeature.sc b/release-packaging/Classes/FluidBufAmpFeature.sc index b0b3eaf..92be7e2 100644 --- a/release-packaging/Classes/FluidBufAmpFeature.sc +++ b/release-packaging/Classes/FluidBufAmpFeature.sc @@ -1,38 +1,38 @@ FluidBufAmpFeature : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, floor = -144, highPassFreq = 85, trig = 1, blocking = 0| - - source = source.asUGenInput; - features = features.asUGenInput; - - source.isNil.if {"FluidBufAmpFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufAmpFeature: Invalid features buffer".throw}; - + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, floor = -144, highPassFreq = 85, trig = 1, blocking = 0| + + source = source.asUGenInput; + features = features.asUGenInput; + + source.isNil.if {"FluidBufAmpFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufAmpFeature: Invalid features buffer".throw}; + ^FluidProxyUgen.kr(\FluidBufAmpFeatureTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, fastRampUp, fastRampDown, slowRampUp, slowRampDown, floor, highPassFreq, trig, blocking); } - *process { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, floor = -144, highPassFreq = 85, freeWhenDone = true, action | + *process { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, floor = -144, highPassFreq = 85, freeWhenDone = true, action | - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufAmpFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufAmpFeature: Invalid features buffer".throw}; + source.isNil.if {"FluidBufAmpFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufAmpFeature: Invalid features buffer".throw}; - ^this.new(server, nil, [features]).processList( + ^this.new(server, nil, [features]).processList( [source, startFrame, numFrames, startChan, numChans, features, fastRampUp, fastRampDown, slowRampUp, slowRampDown, floor, highPassFreq,0],freeWhenDone, action ); } - *processBlocking { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, floor = -144, highPassFreq = 85, freeWhenDone = true, action | + *processBlocking { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, floor = -144, highPassFreq = 85, freeWhenDone = true, action | - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufAmpFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufAmpFeature: Invalid features buffer".throw}; + source.isNil.if {"FluidBufAmpFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufAmpFeature: Invalid features buffer".throw}; - ^this.new(server, nil, [features]).processList( + ^this.new(server, nil, [features]).processList( [source, startFrame, numFrames, startChan, numChans, features, fastRampUp, fastRampDown, slowRampUp, slowRampDown, floor, highPassFreq,1],freeWhenDone, action ); } diff --git a/release-packaging/Classes/FluidBufAmpGate.sc b/release-packaging/Classes/FluidBufAmpGate.sc index c644b8d..f0cb6f0 100644 --- a/release-packaging/Classes/FluidBufAmpGate.sc +++ b/release-packaging/Classes/FluidBufAmpGate.sc @@ -1,44 +1,44 @@ FluidBufAmpGate : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, rampUp = 10, rampDown = 10, onThreshold = -90, offThreshold = -90, minSliceLength = 1, minSilenceLength = 1, minLengthAbove = 1, minLengthBelow = 1, lookBack = 0, lookAhead = 0, highPassFreq = 85, trig = 1, blocking = 0| - - var maxSize = max(minLengthAbove + lookBack, max(minLengthBelow,lookAhead)); + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, rampUp = 10, rampDown = 10, onThreshold = -90, offThreshold = -90, minSliceLength = 1, minSilenceLength = 1, minLengthAbove = 1, minLengthBelow = 1, lookBack = 0, lookAhead = 0, highPassFreq = 85, trig = 1, blocking = 0| + + var maxSize = max(minLengthAbove + lookBack, max(minLengthBelow,lookAhead)); + + source = source.asUGenInput; + indices = indices.asUGenInput; - source = source.asUGenInput; - indices = indices.asUGenInput; - ^FluidProxyUgen.kr(\FluidBufAmpGateTrigger,-1, source, startFrame, numFrames, startChan, numChans, indices, rampUp, rampDown, onThreshold, offThreshold, minSliceLength, minSilenceLength, minLengthAbove, minLengthBelow, lookBack, lookAhead, highPassFreq,maxSize, trig, blocking); } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, rampUp = 10, rampDown = 10, onThreshold = -90, offThreshold = -90, minSliceLength = 1, minSilenceLength = 1, minLengthAbove = 1, minLengthBelow = 1, lookBack = 0, lookAhead = 0, highPassFreq = 85, freeWhenDone = true, action | + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, rampUp = 10, rampDown = 10, onThreshold = -90, offThreshold = -90, minSliceLength = 1, minSilenceLength = 1, minLengthAbove = 1, minLengthBelow = 1, lookBack = 0, lookAhead = 0, highPassFreq = 85, freeWhenDone = true, action | - var maxSize = max(minLengthAbove + lookBack, max(minLengthBelow,lookAhead)); + var maxSize = max(minLengthAbove + lookBack, max(minLengthBelow,lookAhead)); source = source ? -1; - indices = indices ? -1; + indices = indices ? -1; ^this.new( server, nil, [indices] ).processList( [source, startFrame, numFrames, startChan, numChans, indices, rampUp, rampDown, onThreshold, offThreshold, minSliceLength, minSilenceLength, minLengthAbove, minLengthBelow, lookBack, lookAhead, highPassFreq, maxSize, 0],freeWhenDone,action - ); + ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, rampUp = 10, rampDown = 10, onThreshold = -90, offThreshold = -90, minSliceLength = 1, minSilenceLength = 1, minLengthAbove = 1, minLengthBelow = 1, lookBack = 0, lookAhead = 0, highPassFreq = 85, freeWhenDone = true, action | + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, rampUp = 10, rampDown = 10, onThreshold = -90, offThreshold = -90, minSliceLength = 1, minSilenceLength = 1, minLengthAbove = 1, minLengthBelow = 1, lookBack = 0, lookAhead = 0, highPassFreq = 85, freeWhenDone = true, action | - var maxSize = max(minLengthAbove + lookBack, max(minLengthBelow,lookAhead)); + var maxSize = max(minLengthAbove + lookBack, max(minLengthBelow,lookAhead)); + + source = source ? -1; + indices = indices ? -1; - source = source ? -1; - indices = indices ? -1; + ^this.new( + server, nil, [indices] + ).processList( + [source, startFrame, numFrames, startChan, numChans, indices, rampUp, rampDown, onThreshold, offThreshold, minSliceLength, minSilenceLength, minLengthAbove, minLengthBelow, lookBack, lookAhead, highPassFreq, maxSize, 1],freeWhenDone,action + ); + } - ^this.new( - server, nil, [indices] - ).processList( - [source, startFrame, numFrames, startChan, numChans, indices, rampUp, rampDown, onThreshold, offThreshold, minSliceLength, minSilenceLength, minLengthAbove, minLengthBelow, lookBack, lookAhead, highPassFreq, maxSize, 1],freeWhenDone,action - ); - } - } FluidBufAmpGateTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufAmpSlice.sc b/release-packaging/Classes/FluidBufAmpSlice.sc index 2787176..8fc2778 100644 --- a/release-packaging/Classes/FluidBufAmpSlice.sc +++ b/release-packaging/Classes/FluidBufAmpSlice.sc @@ -1,38 +1,38 @@ FluidBufAmpSlice : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, onThreshold = -144, offThreshold = -144, floor = -144, minSliceLength = 2, highPassFreq = 85, trig = 1, blocking = 0| - - source = source.asUGenInput; - indices = indices.asUGenInput; - - source.isNil.if {"FluidBufAmpSlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufAmpSlice: Invalid features buffer".throw}; - + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, onThreshold = -144, offThreshold = -144, floor = -144, minSliceLength = 2, highPassFreq = 85, trig = 1, blocking = 0| + + source = source.asUGenInput; + indices = indices.asUGenInput; + + source.isNil.if {"FluidBufAmpSlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufAmpSlice: Invalid features buffer".throw}; + ^FluidProxyUgen.kr(\FluidBufAmpSliceTrigger, -1, source, startFrame, numFrames, startChan, numChans, indices, fastRampUp, fastRampDown, slowRampUp, slowRampDown, onThreshold, offThreshold, floor, minSliceLength, highPassFreq, trig, blocking); } - *process { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, onThreshold = -144, offThreshold = -144, floor = -144, minSliceLength = 2, highPassFreq = 85, freeWhenDone = true, action | + *process { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, onThreshold = -144, offThreshold = -144, floor = -144, minSliceLength = 2, highPassFreq = 85, freeWhenDone = true, action | - source = source.asUGenInput; - indices = indices.asUGenInput; + source = source.asUGenInput; + indices = indices.asUGenInput; - source.isNil.if {"FluidBufAmpSlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufAmpSlice: Invalid features buffer".throw}; + source.isNil.if {"FluidBufAmpSlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufAmpSlice: Invalid features buffer".throw}; - ^this.new(server, nil, [indices]).processList( + ^this.new(server, nil, [indices]).processList( [source, startFrame, numFrames, startChan, numChans, indices, fastRampUp, fastRampDown, slowRampUp, slowRampDown, onThreshold, offThreshold, floor, minSliceLength, highPassFreq,0],freeWhenDone, action ); } - *processBlocking { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, onThreshold = -144, offThreshold = -144, floor = -144, minSliceLength = 2, highPassFreq = 85, freeWhenDone = true, action | + *processBlocking { |server,source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, fastRampUp = 1, fastRampDown = 1, slowRampUp = 100, slowRampDown = 100, onThreshold = -144, offThreshold = -144, floor = -144, minSliceLength = 2, highPassFreq = 85, freeWhenDone = true, action | - source = source.asUGenInput; - indices = indices.asUGenInput; + source = source.asUGenInput; + indices = indices.asUGenInput; - source.isNil.if {"FluidBufAmpSlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufAmpSlice: Invalid features buffer".throw}; + source.isNil.if {"FluidBufAmpSlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufAmpSlice: Invalid features buffer".throw}; - ^this.new(server, nil, [indices]).processList( + ^this.new(server, nil, [indices]).processList( [source, startFrame, numFrames, startChan, numChans, indices, fastRampUp, fastRampDown, slowRampUp, slowRampDown, onThreshold, offThreshold, floor, minSliceLength, highPassFreq,1],freeWhenDone, action ); } diff --git a/release-packaging/Classes/FluidBufAudioTransport.sc b/release-packaging/Classes/FluidBufAudioTransport.sc index 33a4477..a061051 100644 --- a/release-packaging/Classes/FluidBufAudioTransport.sc +++ b/release-packaging/Classes/FluidBufAudioTransport.sc @@ -2,14 +2,14 @@ FluidBufAudioTransport : FluidBufProcessor { *kr { |sourceA, startFrameA = 0, numFramesA = -1, startChanA = 0, numChansA = -1, sourceB, startFrameB = 0, numFramesB = -1, startChanB = 0, numChansB = -1, destination, interpolation = 0.0, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - sourceA.isNil.if {"FluidAudioTransport: Invalid source 1 buffer".throw}; - sourceB.isNil.if {"FluidAudioTransport: Invalid source 2 buffer".throw}; - sourceA = sourceA.asUGenInput; - sourceB = sourceB.asUGenInput; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + sourceA.isNil.if {"FluidAudioTransport: Invalid source 1 buffer".throw}; + sourceB.isNil.if {"FluidAudioTransport: Invalid source 2 buffer".throw}; + sourceA = sourceA.asUGenInput; + sourceB = sourceB.asUGenInput; - destination.isNil.if {"FluidAudioTransport: Invalid destination buffer".throw}; - destination = destination.asUGenInput; + destination.isNil.if {"FluidAudioTransport: Invalid destination buffer".throw}; + destination = destination.asUGenInput; ^FluidProxyUgen.kr(this.objectClassName++\Trigger,-1, sourceA, startFrameA, numFramesA, startChanA, numChansA, sourceB, startFrameA, numFramesA, startChanB, numChansB, destination, interpolation, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); @@ -18,14 +18,14 @@ FluidBufAudioTransport : FluidBufProcessor { *process { |server, sourceA, startFrameA = 0, numFramesA = -1, startChanA = 0, numChansA = -1, sourceB, startFrameB = 0, numFramesB = -1, startChanB = 0, numChansB = -1, destination, interpolation=0.0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - sourceA.isNil.if {"FluidAudioTransport: Invalid source 1 buffer".throw}; - sourceB.isNil.if {"FluidAudioTransport: Invalid source 2 buffer".throw}; - sourceA = sourceA.asUGenInput; - sourceB = sourceB.asUGenInput; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + sourceA.isNil.if {"FluidAudioTransport: Invalid source 1 buffer".throw}; + sourceB.isNil.if {"FluidAudioTransport: Invalid source 2 buffer".throw}; + sourceA = sourceA.asUGenInput; + sourceB = sourceB.asUGenInput; - destination.isNil.if {"FluidAudioTransport: Invalid destination buffer".throw}; - destination = destination.asUGenInput; + destination.isNil.if {"FluidAudioTransport: Invalid destination buffer".throw}; + destination = destination.asUGenInput; ^this.new( server, nil, [destination] @@ -34,16 +34,16 @@ FluidBufAudioTransport : FluidBufProcessor { ) } - *processBlocking { |server, sourceA, startFrameA = 0, numFramesA = -1, startChanA = 0, numChansA = -1, sourceB, startFrameB = 0, numFramesB = -1, startChanB = 0, numChansB = -1, destination, interpolation=0.0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *processBlocking { |server, sourceA, startFrameA = 0, numFramesA = -1, startChanA = 0, numChansA = -1, sourceB, startFrameB = 0, numFramesB = -1, startChanB = 0, numChansB = -1, destination, interpolation=0.0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - sourceA.isNil.if {"FluidAudioTransport: Invalid source 1 buffer".throw}; - sourceB.isNil.if {"FluidAudioTransport: Invalid source 2 buffer".throw}; - sourceA = sourceA.asUGenInput; - sourceB = sourceB.asUGenInput; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + sourceA.isNil.if {"FluidAudioTransport: Invalid source 1 buffer".throw}; + sourceB.isNil.if {"FluidAudioTransport: Invalid source 2 buffer".throw}; + sourceA = sourceA.asUGenInput; + sourceB = sourceB.asUGenInput; - destination.isNil.if {"FluidAudioTransport: Invalid destination buffer".throw}; - destination = destination.asUGenInput; + destination.isNil.if {"FluidAudioTransport: Invalid destination buffer".throw}; + destination = destination.asUGenInput; ^this.new( server, nil, [destination] diff --git a/release-packaging/Classes/FluidBufChroma.sc b/release-packaging/Classes/FluidBufChroma.sc index 14cbf16..34c9e42 100644 --- a/release-packaging/Classes/FluidBufChroma.sc +++ b/release-packaging/Classes/FluidBufChroma.sc @@ -1,49 +1,49 @@ FluidBufChroma : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numChroma = 12, ref = 440, normalize = 0,minFreq = 0,maxFreq = -1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numChroma = 12, ref = 440, normalize = 0,minFreq = 0,maxFreq = -1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufChroma: Invalid source buffer".throw}; - features.isNil.if {"FluidBufChroma: Invalid features buffer".throw}; + source.isNil.if {"FluidBufChroma: Invalid source buffer".throw}; + features.isNil.if {"FluidBufChroma: Invalid features buffer".throw}; ^FluidProxyUgen.kr(\FluidBufChromaTrigger,-1, source, startFrame, numFrames, startChan, numChans, features, padding, numChroma, numChroma, ref, normalize, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numChroma = 12, ref = 440, normalize = 0,minFreq = 0,maxFreq = -1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numChroma = 12, ref = 440, normalize = 0,minFreq = 0,maxFreq = -1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufChroma: Invalid source buffer".throw}; - features.isNil.if {"FluidBufChroma: Invalid features buffer".throw}; + source.isNil.if {"FluidBufChroma: Invalid source buffer".throw}; + features.isNil.if {"FluidBufChroma: Invalid features buffer".throw}; ^this.new( server, nil, [features] ).processList( [source, startFrame, numFrames, startChan, numChans, features, padding, numChroma, numChroma, ref, normalize, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize, 0],freeWhenDone,action - ); + ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numChroma = 12, ref = 440, normalize = 0,minFreq = 0,maxFreq = -1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numChroma = 12, ref = 440, normalize = 0,minFreq = 0,maxFreq = -1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufChroma: Invalid source buffer".throw}; - features.isNil.if {"FluidBufChroma: Invalid features buffer".throw}; + source.isNil.if {"FluidBufChroma: Invalid source buffer".throw}; + features.isNil.if {"FluidBufChroma: Invalid features buffer".throw}; ^this.new( server, nil, [features] ).processList( [source, startFrame, numFrames, startChan, numChans, features, padding, numChroma, numChroma, ref, normalize, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize, 1],freeWhenDone,action - ); + ); } } FluidBufChromaTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufCompose.sc b/release-packaging/Classes/FluidBufCompose.sc index d5d8cc5..c4f904a 100644 --- a/release-packaging/Classes/FluidBufCompose.sc +++ b/release-packaging/Classes/FluidBufCompose.sc @@ -1,39 +1,39 @@ FluidBufCompose : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, trig = 1, blocking = 1| - - source = source.asUGenInput; - destination = destination.asUGenInput; + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, trig = 1, blocking = 1| - source.isNil.if {"FluidBufCompose: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufCompose: Invalid destination buffer".throw}; + source = source.asUGenInput; + destination = destination.asUGenInput; - ^FluidProxyUgen.kr(\FluidBufComposeTrigger,-1, source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, trig, blocking); + source.isNil.if {"FluidBufCompose: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufCompose: Invalid destination buffer".throw}; + + ^FluidProxyUgen.kr(\FluidBufComposeTrigger,-1, source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, trig, blocking); } *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, freeWhenDone = true, action| - - source = source.asUGenInput; - destination = destination.asUGenInput; - - source.isNil.if {"FluidBufCompose: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufCompose: Invalid destination buffer".throw}; - - ^this.new( server, nil, [destination]).processList([source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, 1], freeWhenDone, action);//NB always blocking + + source = source.asUGenInput; + destination = destination.asUGenInput; + + source.isNil.if {"FluidBufCompose: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufCompose: Invalid destination buffer".throw}; + + ^this.new( server, nil, [destination]).processList([source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, 1], freeWhenDone, action);//NB always blocking } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, gain = 1, destination, destStartFrame = 0, destStartChan = 0, destGain = 0, freeWhenDone = true, action| + + source = source.asUGenInput; + destination = destination.asUGenInput; - source = source.asUGenInput; - destination = destination.asUGenInput; + source.isNil.if {"FluidBufCompose: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufCompose: Invalid destination buffer".throw}; - source.isNil.if {"FluidBufCompose: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufCompose: Invalid destination buffer".throw}; - - ^this.new( - server, nil, [destination] - ).processList([source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, 1], freeWhenDone, action); + ^this.new( + server, nil, [destination] + ).processList([source, startFrame, numFrames, startChan, numChans, gain, destination, destStartFrame, destStartChan, destGain, 1], freeWhenDone, action); } } FluidBufComposeTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufFlatten.sc b/release-packaging/Classes/FluidBufFlatten.sc index e204ac1..e2bab6d 100644 --- a/release-packaging/Classes/FluidBufFlatten.sc +++ b/release-packaging/Classes/FluidBufFlatten.sc @@ -1,47 +1,47 @@ FluidBufFlatten : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, axis = 1, trig = 1, blocking = 1| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, axis = 1, trig = 1, blocking = 1| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufFlatten: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufFlatten: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufFlatten: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufFlatten: Invalid destination buffer".throw}; - ^FluidProxyUgen.kr(\FluidBufFlattenTrigger,-1, source, startFrame, numFrames, startChan, numChans, destination, axis, trig, blocking); + ^FluidProxyUgen.kr(\FluidBufFlattenTrigger,-1, source, startFrame, numFrames, startChan, numChans, destination, axis, trig, blocking); } *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, axis = 1, freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufFlatten: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufFlatten: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufFlatten: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufFlatten: Invalid destination buffer".throw}; - ^this.new( - server, nil, [destination], + ^this.new( + server, nil, [destination], ).processList( [source, startFrame, numFrames, startChan, numChans, destination, axis,0],freeWhenDone,action ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, axis = 1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, axis = 1, freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufFlatten: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufFlatten: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufFlatten: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufFlatten: Invalid destination buffer".throw}; - ^this.new( - server, nil, [destination], - ).processList( - [source, startFrame, numFrames, startChan, numChans, destination, axis,1],freeWhenDone,action - ); + ^this.new( + server, nil, [destination], + ).processList( + [source, startFrame, numFrames, startChan, numChans, destination, axis,1],freeWhenDone,action + ); - } + } } FluidBufFlattenTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufHPSS.sc b/release-packaging/Classes/FluidBufHPSS.sc index 5ec4f9d..1799d15 100644 --- a/release-packaging/Classes/FluidBufHPSS.sc +++ b/release-packaging/Classes/FluidBufHPSS.sc @@ -2,25 +2,25 @@ FluidBufHPSS : FluidBufProcessor { *kr {|source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, harmonic = -1, percussive = -1, residual = -1, harmFilterSize = 17, percFilterSize = 31, maskingMode = 0, harmThreshFreq1 = 0.1, harmThreshAmp1 = 0, harmThreshFreq2 = 0.5, harmThreshAmp2 = 0, percThreshFreq1 = 0.1, percThreshAmp1 = 0, percThreshFreq2 = 0.5, percThreshAmp2 = 0, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - harmonic = harmonic ? -1; - percussive = percussive ? -1; - residual = residual ? -1; - source.isNil.if {"FluidBufHPSS: Invalid source buffer".throw}; + harmonic = harmonic ? -1; + percussive = percussive ? -1; + residual = residual ? -1; + source.isNil.if {"FluidBufHPSS: Invalid source buffer".throw}; - ^FluidProxyUgen.kr(\FluidBufHPSSTrigger, -1, source, startFrame, numFrames, startChan, numChans, harmonic, percussive, residual, harmFilterSize, harmFilterSize, percFilterSize, percFilterSize, maskingMode, harmThreshFreq1, harmThreshAmp1, harmThreshFreq2, harmThreshAmp2, percThreshFreq1, percThreshAmp1, percThreshFreq2, percThreshAmp2, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking - ); + ^FluidProxyUgen.kr(\FluidBufHPSSTrigger, -1, source, startFrame, numFrames, startChan, numChans, harmonic, percussive, residual, harmFilterSize, harmFilterSize, percFilterSize, percFilterSize, maskingMode, harmThreshFreq1, harmThreshAmp1, harmThreshFreq2, harmThreshAmp2, percThreshFreq1, percThreshAmp1, percThreshFreq2, percThreshAmp2, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking + ); } - *process {|server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, harmonic = -1, percussive = -1, residual = -1, harmFilterSize = 17, percFilterSize = 31, maskingMode = 0, harmThreshFreq1 = 0.1, harmThreshAmp1 = 0, harmThreshFreq2 = 0.5, harmThreshAmp2 = 0, percThreshFreq1 = 0.1, percThreshAmp1 = 0, percThreshFreq2 = 0.5, percThreshAmp2 = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone=true, action| + *process {|server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, harmonic = -1, percussive = -1, residual = -1, harmFilterSize = 17, percFilterSize = 31, maskingMode = 0, harmThreshFreq1 = 0.1, harmThreshAmp1 = 0, harmThreshFreq2 = 0.5, harmThreshAmp2 = 0, percThreshFreq1 = 0.1, percThreshAmp1 = 0, percThreshFreq2 = 0.5, percThreshAmp2 = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone=true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - harmonic = harmonic ? -1; - percussive = percussive ? -1; - residual = residual ? -1; - source.isNil.if {"FluidBufHPSS: Invalid source buffer".throw}; + harmonic = harmonic ? -1; + percussive = percussive ? -1; + residual = residual ? -1; + source.isNil.if {"FluidBufHPSS: Invalid source buffer".throw}; ^this.new( @@ -31,22 +31,22 @@ FluidBufHPSS : FluidBufProcessor { } - *processBlocking {|server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, harmonic = -1, percussive = -1, residual = -1, harmFilterSize = 17, percFilterSize = 31, maskingMode = 0, harmThreshFreq1 = 0.1, harmThreshAmp1 = 0, harmThreshFreq2 = 0.5, harmThreshAmp2 = 0, percThreshFreq1 = 0.1, percThreshAmp1 = 0, percThreshFreq2 = 0.5, percThreshAmp2 = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone=true, action| + *processBlocking {|server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, harmonic = -1, percussive = -1, residual = -1, harmFilterSize = 17, percFilterSize = 31, maskingMode = 0, harmThreshFreq1 = 0.1, harmThreshAmp1 = 0, harmThreshFreq2 = 0.5, harmThreshAmp2 = 0, percThreshFreq1 = 0.1, percThreshAmp1 = 0, percThreshFreq2 = 0.5, percThreshAmp2 = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone=true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - harmonic = harmonic ? -1; - percussive = percussive ? -1; - residual = residual ? -1; - source.isNil.if {"FluidBufHPSS: Invalid source buffer".throw}; + harmonic = harmonic ? -1; + percussive = percussive ? -1; + residual = residual ? -1; + source.isNil.if {"FluidBufHPSS: Invalid source buffer".throw}; - ^this.new( - server, nil, [harmonic, percussive, residual].select{|x| x!= -1} - ).processList( - [source, startFrame, numFrames, startChan, numChans, harmonic, percussive, residual, harmFilterSize, harmFilterSize, percFilterSize, percFilterSize, maskingMode, harmThreshFreq1, harmThreshAmp1, harmThreshFreq2, harmThreshAmp2, percThreshFreq1, percThreshAmp1, percThreshFreq2, percThreshAmp2, windowSize, hopSize, fftSize, maxFFTSize, 1], freeWhenDone,action - ); + ^this.new( + server, nil, [harmonic, percussive, residual].select{|x| x!= -1} + ).processList( + [source, startFrame, numFrames, startChan, numChans, harmonic, percussive, residual, harmFilterSize, harmFilterSize, percFilterSize, percFilterSize, maskingMode, harmThreshFreq1, harmThreshAmp1, harmThreshFreq2, harmThreshAmp2, percThreshFreq1, percThreshAmp1, percThreshFreq2, percThreshAmp2, windowSize, hopSize, fftSize, maxFFTSize, 1], freeWhenDone,action + ); - } + } } FluidBufHPSSTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufLoudness.sc b/release-packaging/Classes/FluidBufLoudness.sc index 611c228..2b1bd19 100644 --- a/release-packaging/Classes/FluidBufLoudness.sc +++ b/release-packaging/Classes/FluidBufLoudness.sc @@ -1,76 +1,76 @@ FluidBufLoudness : FluidBufProcessor{ - - const (1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; - }; - bits = a.collect{ |sym| - (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) - }.reduce{|x,y| x | y}; - ^bits - } - - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, kWeighting = 1, truePeak = 1, windowSize = 1024, hopSize = 512, padding = 1, trig = 1, blocking = 0| - - var maxwindowSize = windowSize.nextPowerOfTwo; - - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - - source = source.asUGenInput; - features = features.asUGenInput; - - source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; - features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; - - ^FluidProxyUgen.kr(\FluidBufLoudnessTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, kWeighting, truePeak, windowSize, hopSize, maxwindowSize, trig, blocking); - } - - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, kWeighting = 1, truePeak = 1, windowSize = 1024, hopSize = 512, padding = 1, freeWhenDone = true, action| - - var maxwindowSize = windowSize.nextPowerOfTwo; - - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - - source = source.asUGenInput; - features = features.asUGenInput; - - source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; - features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; + + const (1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; + }; + bits = a.collect{ |sym| + (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) + }.reduce{|x,y| x | y}; + ^bits + } + + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, kWeighting = 1, truePeak = 1, windowSize = 1024, hopSize = 512, padding = 1, trig = 1, blocking = 0| + + var maxwindowSize = windowSize.nextPowerOfTwo; + + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + + source = source.asUGenInput; + features = features.asUGenInput; + + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; + + ^FluidProxyUgen.kr(\FluidBufLoudnessTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, kWeighting, truePeak, windowSize, hopSize, maxwindowSize, trig, blocking); + } + + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, kWeighting = 1, truePeak = 1, windowSize = 1024, hopSize = 512, padding = 1, freeWhenDone = true, action| + + var maxwindowSize = windowSize.nextPowerOfTwo; + + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + + source = source.asUGenInput; + features = features.asUGenInput; + + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^this.new( server, nil, [features] ).processList( [source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, kWeighting, truePeak, windowSize, hopSize, maxwindowSize,0],freeWhenDone,action ); - } + } + + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, kWeighting = 1, truePeak = 1, windowSize = 1024, hopSize = 512, padding = 1, freeWhenDone = true, action| - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, kWeighting = 1, truePeak = 1, windowSize = 1024, hopSize = 512, padding = 1, freeWhenDone = true, action| + var maxwindowSize = windowSize.nextPowerOfTwo; - var maxwindowSize = windowSize.nextPowerOfTwo; - - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; - features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; + source.isNil.if {"%: Invalid source buffer".format(this.class.name).throw}; + features.isNil.if {"%: Invalid features buffer".format(this.class.name).throw}; ^this.new( server, nil, [features] ).processList( [source, startFrame, numFrames, startChan, numChans, features,padding, selectbits, kWeighting, truePeak, windowSize, hopSize, maxwindowSize,1],freeWhenDone,action ); - } + } } FluidBufLoudnessTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufMFCC.sc b/release-packaging/Classes/FluidBufMFCC.sc index 6ab8fb1..a3791d9 100644 --- a/release-packaging/Classes/FluidBufMFCC.sc +++ b/release-packaging/Classes/FluidBufMFCC.sc @@ -1,46 +1,46 @@ FluidBufMFCC : FluidBufProcessor{ - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw}; - features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw}; + source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw}; + features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw}; - ^FluidProxyUgen.kr(\FluidBufMFCCTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numCoeffs, numBands, numBands, startCoeff, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize,trig, blocking); - } + ^FluidProxyUgen.kr(\FluidBufMFCCTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numCoeffs, numBands, numBands, startCoeff, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize,trig, blocking); + } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone=true, action | + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone=true, action | - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw}; - features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw}; + source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw}; + features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw}; ^this.new( server, nil,[features] ).processList( - [source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numCoeffs, numBands, numBands, startCoeff, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize,0],freeWhenDone,action + [source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numCoeffs, numBands, numBands, startCoeff, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize,0],freeWhenDone,action ); - } + } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone=true, action | + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone=true, action | - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw}; - features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw}; + source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw}; + features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw}; ^this.new( server, nil,[features] ).processList( - [source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numCoeffs, numBands, numBands, startCoeff, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize,1],freeWhenDone,action + [source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numCoeffs, numBands, numBands, startCoeff, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize,1],freeWhenDone,action ); - } + } } FluidBufMFCCTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufMelBands.sc b/release-packaging/Classes/FluidBufMelBands.sc index 1d2f8d9..f8618a7 100644 --- a/release-packaging/Classes/FluidBufMelBands.sc +++ b/release-packaging/Classes/FluidBufMelBands.sc @@ -1,51 +1,51 @@ FluidBufMelBands : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numBands = 40, minFreq = 20, maxFreq = 20000, normalize = 1, scale = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numBands = 40, minFreq = 20, maxFreq = 20000, normalize = 1, scale = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufMelBands: Invalid source buffer".throw}; - features.isNil.if {"FluidBufMelBands: Invalid features buffer".throw}; + source.isNil.if {"FluidBufMelBands: Invalid source buffer".throw}; + features.isNil.if {"FluidBufMelBands: Invalid features buffer".throw}; ^FluidProxyUgen.kr(\FluidBufMelBandsTrigger,-1, source, startFrame, numFrames, startChan, numChans, features, padding, numBands, numBands, minFreq, maxFreq, normalize, scale, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numBands = 40, minFreq = 20, maxFreq = 20000, normalize = 1, scale = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numBands = 40, minFreq = 20, maxFreq = 20000, normalize = 1, scale = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufMelBands: Invalid source buffer".throw}; - features.isNil.if {"FluidBufMelBands: Invalid features buffer".throw}; + source.isNil.if {"FluidBufMelBands: Invalid source buffer".throw}; + features.isNil.if {"FluidBufMelBands: Invalid features buffer".throw}; ^this.new( server, nil, [features] ).processList( [source, startFrame, numFrames, startChan, numChans, features, padding, numBands, numBands, minFreq, maxFreq, normalize, scale, windowSize, hopSize, fftSize, maxFFTSize, 0],freeWhenDone,action - ); + ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numBands = 40, minFreq = 20, maxFreq = 20000, normalize = 1, scale = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numBands = 40, minFreq = 20, maxFreq = 20000, normalize = 1, scale = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufMelBands: Invalid source buffer".throw}; - features.isNil.if {"FluidBufMelBands: Invalid features buffer".throw}; + source.isNil.if {"FluidBufMelBands: Invalid source buffer".throw}; + features.isNil.if {"FluidBufMelBands: Invalid features buffer".throw}; ^this.new( server, nil, [features] ).processList( [source, startFrame, numFrames, startChan, numChans, features, padding, numBands, numBands, minFreq, maxFreq, normalize, scale, windowSize, hopSize, fftSize, maxFFTSize, 1],freeWhenDone,action - ); + ); } } FluidBufMelBandsTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufNMF.sc b/release-packaging/Classes/FluidBufNMF.sc index 3ff00a2..746620a 100644 --- a/release-packaging/Classes/FluidBufNMF.sc +++ b/release-packaging/Classes/FluidBufNMF.sc @@ -1,37 +1,37 @@ FluidBufNMF : FluidBufProcessor { - *kr {|source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, resynth, resynthMode = 0, bases, basesMode = 0, activations, actMode = 0, components = 1, iterations = 100, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| + *kr {|source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, resynth, resynthMode = 0, bases, basesMode = 0, activations, actMode = 0, components = 1, iterations = 100, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| - source.isNil.if {"FluidBufNMF: Invalid source buffer".throw}; - resynth = resynth ? -1; - bases = bases ? -1; - activations = activations ? -1; + source.isNil.if {"FluidBufNMF: Invalid source buffer".throw}; + resynth = resynth ? -1; + bases = bases ? -1; + activations = activations ? -1; - ^FluidProxyUgen.kr(\FluidBufNMFTrigger,-1,source.asUGenInput, startFrame, numFrames, startChan, numChans, resynth.asUGenInput, resynthMode, bases.asUGenInput, basesMode, activations.asUGenInput, actMode, components, iterations, windowSize, hopSize, fftSize, fftSize, trig, blocking); - } + ^FluidProxyUgen.kr(\FluidBufNMFTrigger,-1,source.asUGenInput, startFrame, numFrames, startChan, numChans, resynth.asUGenInput, resynthMode, bases.asUGenInput, basesMode, activations.asUGenInput, actMode, components, iterations, windowSize, hopSize, fftSize, fftSize, trig, blocking); + } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, resynth = -1, resynthMode = 0, bases = -1, basesMode = 0, activations = -1, actMode = 0, components = 1, iterations = 100, windowSize = 1024, hopSize = -1, fftSize = -1,freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, resynth = -1, resynthMode = 0, bases = -1, basesMode = 0, activations = -1, actMode = 0, components = 1, iterations = 100, windowSize = 1024, hopSize = -1, fftSize = -1,freeWhenDone = true, action| - source.isNil.if {"FluidBufNMF: Invalid source buffer".throw}; - resynth = resynth ? -1; - bases = bases ? -1; - activations = activations ? -1; + source.isNil.if {"FluidBufNMF: Invalid source buffer".throw}; + resynth = resynth ? -1; + bases = bases ? -1; + activations = activations ? -1; - ^this.new( - server,nil,[resynth, bases, activations].select{|x| x!= -1} - ).processList([source, startFrame, numFrames, startChan, numChans, resynth, resynthMode, bases, basesMode, activations, actMode, components,iterations, windowSize, hopSize, fftSize, fftSize, 0],freeWhenDone,action); - } + ^this.new( + server,nil,[resynth, bases, activations].select{|x| x!= -1} + ).processList([source, startFrame, numFrames, startChan, numChans, resynth, resynthMode, bases, basesMode, activations, actMode, components,iterations, windowSize, hopSize, fftSize, fftSize, 0],freeWhenDone,action); + } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, resynth = -1, resynthMode = 0, bases = -1, basesMode = 0, activations = -1, actMode = 0, components = 1, iterations = 100, windowSize = 1024, hopSize = -1, fftSize = -1,freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, resynth = -1, resynthMode = 0, bases = -1, basesMode = 0, activations = -1, actMode = 0, components = 1, iterations = 100, windowSize = 1024, hopSize = -1, fftSize = -1,freeWhenDone = true, action| - source.isNil.if {"FluidBufNMF: Invalid source buffer".throw}; - resynth = resynth ? -1; - bases = bases ? -1; - activations = activations ? -1; + source.isNil.if {"FluidBufNMF: Invalid source buffer".throw}; + resynth = resynth ? -1; + bases = bases ? -1; + activations = activations ? -1; - ^this.new( - server,nil,[resynth, bases, activations].select{|x| x!= -1} - ).processList([source, startFrame, numFrames, startChan, numChans, resynth, resynthMode, bases, basesMode, activations, actMode, components,iterations, windowSize, hopSize, fftSize, fftSize, 1],freeWhenDone,action); - } + ^this.new( + server,nil,[resynth, bases, activations].select{|x| x!= -1} + ).processList([source, startFrame, numFrames, startChan, numChans, resynth, resynthMode, bases, basesMode, activations, actMode, components,iterations, windowSize, hopSize, fftSize, fftSize, 1],freeWhenDone,action); + } } FluidBufNMFTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufNMFCross.sc b/release-packaging/Classes/FluidBufNMFCross.sc index 2312f62..b9fa970 100644 --- a/release-packaging/Classes/FluidBufNMFCross.sc +++ b/release-packaging/Classes/FluidBufNMFCross.sc @@ -1,45 +1,45 @@ FluidBufNMFCross : FluidBufProcessor { - *kr { |source, target, output , timeSparsity = 7, polyphony = 10, continuity = 7, iterations = 50, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| + *kr { |source, target, output , timeSparsity = 7, polyphony = 10, continuity = 7, iterations = 50, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| - source = source.asUGenInput; - target = target.asUGenInput; - output = output.asUGenInput; - source.isNil.if {"FluidBufNMFCross: Invalid source buffer".throw}; - target.isNil.if {"FluidBufNMFCross: Invalid target buffer".throw}; - output.isNil.if {"FluidBufNMFCross: Invalid output buffer".throw}; + source = source.asUGenInput; + target = target.asUGenInput; + output = output.asUGenInput; + source.isNil.if {"FluidBufNMFCross: Invalid source buffer".throw}; + target.isNil.if {"FluidBufNMFCross: Invalid target buffer".throw}; + output.isNil.if {"FluidBufNMFCross: Invalid output buffer".throw}; ^FluidProxyUgen.kr(\FluidBufNMFCrossTrigger, -1, source, target, output, timeSparsity, polyphony, continuity, iterations, windowSize, hopSize, fftSize, fftSize, trig, blocking); } - *process { |server, source, target, output , timeSparsity = 7, polyphony = 10, continuity = 7, iterations = 50, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *process { |server, source, target, output , timeSparsity = 7, polyphony = 10, continuity = 7, iterations = 50, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - source = source.asUGenInput; - target = target.asUGenInput; - output = output.asUGenInput; - source.isNil.if {"FluidBufNMFCross: Invalid source buffer".throw}; - target.isNil.if {"FluidBufNMFCross: Invalid target buffer".throw}; - output.isNil.if {"FluidBufNMFCross: Invalid output buffer".throw}; + source = source.asUGenInput; + target = target.asUGenInput; + output = output.asUGenInput; + source.isNil.if {"FluidBufNMFCross: Invalid source buffer".throw}; + target.isNil.if {"FluidBufNMFCross: Invalid target buffer".throw}; + output.isNil.if {"FluidBufNMFCross: Invalid output buffer".throw}; - ^this.new( + ^this.new( server, nil, [output] ).processList( [source, target, output, timeSparsity, polyphony, continuity, iterations, windowSize, hopSize, fftSize, fftSize, 0],freeWhenDone, action ); } - *processBlocking { |server, source, target, output , timeSparsity = 7, polyphony = 10, continuity = 7, iterations = 50, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *processBlocking { |server, source, target, output , timeSparsity = 7, polyphony = 10, continuity = 7, iterations = 50, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - source = source.asUGenInput; - target = target.asUGenInput; - output = output.asUGenInput; - source.isNil.if {"FluidBufNMFCross: Invalid source buffer".throw}; - target.isNil.if {"FluidBufNMFCross: Invalid target buffer".throw}; - output.isNil.if {"FluidBufNMFCross: Invalid output buffer".throw}; + source = source.asUGenInput; + target = target.asUGenInput; + output = output.asUGenInput; + source.isNil.if {"FluidBufNMFCross: Invalid source buffer".throw}; + target.isNil.if {"FluidBufNMFCross: Invalid target buffer".throw}; + output.isNil.if {"FluidBufNMFCross: Invalid output buffer".throw}; - ^this.new( + ^this.new( server, nil, [output] ).processList( [source, target, output, timeSparsity, polyphony, continuity, iterations, windowSize, hopSize, fftSize, fftSize, 1],freeWhenDone, action diff --git a/release-packaging/Classes/FluidBufNMFSeed.sc b/release-packaging/Classes/FluidBufNMFSeed.sc index dca1fcd..177b4cb 100644 --- a/release-packaging/Classes/FluidBufNMFSeed.sc +++ b/release-packaging/Classes/FluidBufNMFSeed.sc @@ -2,12 +2,12 @@ FluidBufNMFSeed : FluidBufProcessor{ *kr { |source, bases, activations, minComponents = 1, maxComponents = 200, coverage = 0.5, method = 0, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| - source.isNil.if {"FluidBufNMFSeed: Invalid source buffer".throw}; - bases.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; - activations.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; - source = source.asUGenInput; - bases = bases.asUGenInput; - activations = activations.asUGenInput; + source.isNil.if {"FluidBufNMFSeed: Invalid source buffer".throw}; + bases.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; + activations.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; + source = source.asUGenInput; + bases = bases.asUGenInput; + activations = activations.asUGenInput; ^FluidProxyUgen.kr1(\FluidBufNMFSeedTrigger, -1, source, bases, activations, minComponents, maxComponents, coverage, method, windowSize, hopSize, fftSize, fftSize, trig, blocking); } @@ -15,12 +15,12 @@ FluidBufNMFSeed : FluidBufProcessor{ *process { |server, source, bases, activations, minComponents = 1, maxComponents = 200, coverage = 0.5, method = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - source.isNil.if {"FluidBufNMFSeed: Invalid source buffer".throw}; - bases.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; - activations.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; - source = source.asUGenInput; - bases = bases.asUGenInput; - activations = activations.asUGenInput; + source.isNil.if {"FluidBufNMFSeed: Invalid source buffer".throw}; + bases.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; + activations.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; + source = source.asUGenInput; + bases = bases.asUGenInput; + activations = activations.asUGenInput; ^this.new( server, nil, [bases,activations] @@ -29,14 +29,14 @@ FluidBufNMFSeed : FluidBufProcessor{ ) } - *processBlocking { |server, source, bases, activations, minComponents = 1, maxComponents = 200, coverage = 0.5, method = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *processBlocking { |server, source, bases, activations, minComponents = 1, maxComponents = 200, coverage = 0.5, method = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - source.isNil.if {"FluidBufNMFSeed: Invalid source buffer".throw}; - bases.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; - activations.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; - source = source.asUGenInput; - bases = bases.asUGenInput; - activations = activations.asUGenInput; + source.isNil.if {"FluidBufNMFSeed: Invalid source buffer".throw}; + bases.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; + activations.isNil.if {"FluidBufNMFSeed: Invalid bases buffer".throw}; + source = source.asUGenInput; + bases = bases.asUGenInput; + activations = activations.asUGenInput; ^this.new( server, nil, [bases,activations] diff --git a/release-packaging/Classes/FluidBufNoveltyFeature.sc b/release-packaging/Classes/FluidBufNoveltyFeature.sc index 1fca9ac..413ebd7 100644 --- a/release-packaging/Classes/FluidBufNoveltyFeature.sc +++ b/release-packaging/Classes/FluidBufNoveltyFeature.sc @@ -1,8 +1,8 @@ FluidBufNoveltyFeature : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, algorithm = 0, kernelSize = 3, filterSize = 1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, algorithm = 0, kernelSize = 3, filterSize = 1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; source = source.asUGenInput; features = features.asUGenInput; @@ -18,20 +18,20 @@ FluidBufNoveltyFeature : FluidBufProcessor { } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, algorithm= 0, kernelSize = 3, filterSize = 1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action | + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, algorithm= 0, kernelSize = 3, filterSize = 1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action | - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm); if (algorithm.isNil or: algorithm.isUGen) { ("FluidBufNoveltySlice: % is not a recognised algorithm") .format(algorithm).throw; }; - source.isNil.if {"FluidBufNoveltyFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufNoveltyFeature: Invalid features buffer".throw}; + source.isNil.if {"FluidBufNoveltyFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufNoveltyFeature: Invalid features buffer".throw}; ^this.new( server, nil, [features] @@ -40,15 +40,15 @@ FluidBufNoveltyFeature : FluidBufProcessor { ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, algorithm= 0, kernelSize = 3, filterSize = 1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action | + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, algorithm= 0, kernelSize = 3, filterSize = 1, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action | - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufNoveltyFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufNoveltyFeature: Invalid features buffer".throw}; + source.isNil.if {"FluidBufNoveltyFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufNoveltyFeature: Invalid features buffer".throw}; algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm); if (algorithm.isNil or: algorithm.isUGen) { ("FluidBufNoveltySlice: % is not a recognised algorithm") diff --git a/release-packaging/Classes/FluidBufNoveltySlice.sc b/release-packaging/Classes/FluidBufNoveltySlice.sc index 82952fe..050241e 100644 --- a/release-packaging/Classes/FluidBufNoveltySlice.sc +++ b/release-packaging/Classes/FluidBufNoveltySlice.sc @@ -2,7 +2,7 @@ FluidBufNoveltySlice : FluidBufProcessor { *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm = 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1 , blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; source = source.asUGenInput; indices = indices.asUGenInput; @@ -18,20 +18,20 @@ FluidBufNoveltySlice : FluidBufProcessor { } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm= 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action | + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm= 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action | - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - indices = indices.asUGenInput; - algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm); - if (algorithm.isNil or: algorithm.isUGen) { - ("FluidBufNoveltySlice: % is not a recognised algorithm") - .format(algorithm).throw; - }; + source = source.asUGenInput; + indices = indices.asUGenInput; + algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm); + if (algorithm.isNil or: algorithm.isUGen) { + ("FluidBufNoveltySlice: % is not a recognised algorithm") + .format(algorithm).throw; + }; - source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw}; + source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw}; ^this.new( server, nil, [indices] @@ -40,20 +40,20 @@ FluidBufNoveltySlice : FluidBufProcessor { ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm= 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action | + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm= 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action | - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - indices = indices.asUGenInput; - algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm); - if (algorithm.isNil or: algorithm.isUGen) { - ("FluidBufNoveltySlice: % is not a recognised algorithm") - .format(algorithm).throw; - }; + source = source.asUGenInput; + indices = indices.asUGenInput; + algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm); + if (algorithm.isNil or: algorithm.isUGen) { + ("FluidBufNoveltySlice: % is not a recognised algorithm") + .format(algorithm).throw; + }; - source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw}; + source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw}; ^this.new( server, nil, [indices] diff --git a/release-packaging/Classes/FluidBufOnsetFeature.sc b/release-packaging/Classes/FluidBufOnsetFeature.sc index 1b3235c..f8217bf 100644 --- a/release-packaging/Classes/FluidBufOnsetFeature.sc +++ b/release-packaging/Classes/FluidBufOnsetFeature.sc @@ -1,35 +1,35 @@ FluidBufOnsetFeature : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, metric = 0, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, metric = 0, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; - metric = FluidOnsetSlice.prSelectMetric(metric) ?? { - ("FluidBufOnsetSlice: % is not a recognised metric") - .format(metric).throw; - }; + source = source.asUGenInput; + features = features.asUGenInput; + metric = FluidOnsetSlice.prSelectMetric(metric) ?? { + ("FluidBufOnsetSlice: % is not a recognised metric") + .format(metric).throw; + }; - source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw}; + source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw}; ^FluidProxyUgen.kr(\FluidBufOnsetFeatureTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, metric, filterSize, frameDelta, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, metric = 0, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, metric = 0, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; - metric = FluidOnsetSlice.prSelectMetric(metric); - if (metric.isNil or: metric.isUGen) { - ("FluidBufOnsetSlice: % is not a recognised metric") - .format(metric).throw; - }; + source = source.asUGenInput; + features = features.asUGenInput; + metric = FluidOnsetSlice.prSelectMetric(metric); + if (metric.isNil or: metric.isUGen) { + ("FluidBufOnsetSlice: % is not a recognised metric") + .format(metric).throw; + }; - source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw}; + source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw}; ^this.new( server, nil, [features] @@ -38,20 +38,20 @@ FluidBufOnsetFeature : FluidBufProcessor { ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, metric = 0, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1,padding = 1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, metric = 0, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1,padding = 1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - features = features.asUGenInput; - metric = FluidOnsetSlice.prSelectMetric(metric); - if (metric.isNil or: metric.isUGen) { - ("FluidBufOnsetSlice: % is not a recognised metric") - .format(metric).throw; - }; + source = source.asUGenInput; + features = features.asUGenInput; + metric = FluidOnsetSlice.prSelectMetric(metric); + if (metric.isNil or: metric.isUGen) { + ("FluidBufOnsetSlice: % is not a recognised metric") + .format(metric).throw; + }; - source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw}; - features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw}; + source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw}; + features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw}; ^this.new( server, nil, [features] diff --git a/release-packaging/Classes/FluidBufOnsetSlice.sc b/release-packaging/Classes/FluidBufOnsetSlice.sc index 0a3f6d7..992f6e5 100644 --- a/release-packaging/Classes/FluidBufOnsetSlice.sc +++ b/release-packaging/Classes/FluidBufOnsetSlice.sc @@ -1,36 +1,36 @@ FluidBufOnsetSlice : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - indices = indices.asUGenInput; - metric = FluidOnsetSlice.prSelectMetric(metric) ?? { - ("FluidBufOnsetSlice: % is not a recognised metric") - .format(metric).throw; - }; + source = source.asUGenInput; + indices = indices.asUGenInput; + metric = FluidOnsetSlice.prSelectMetric(metric) ?? { + ("FluidBufOnsetSlice: % is not a recognised metric") + .format(metric).throw; + }; - source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw}; + source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw}; ^FluidProxyUgen.kr(\FluidBufOnsetSliceTrigger, -1, source, startFrame, numFrames, startChan, numChans, indices, metric, threshold, minSliceLength, filterSize, frameDelta, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - indices = indices.asUGenInput; - metric = FluidOnsetSlice.prSelectMetric(metric); - if (metric.isNil or: metric.isUGen) { - ("FluidBufOnsetSlice: % is not a recognised metric") - .format(metric).throw; - }; + source = source.asUGenInput; + indices = indices.asUGenInput; + metric = FluidOnsetSlice.prSelectMetric(metric); + if (metric.isNil or: metric.isUGen) { + ("FluidBufOnsetSlice: % is not a recognised metric") + .format(metric).throw; + }; - source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw}; + source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw}; ^this.new( server, nil, [indices] @@ -39,20 +39,20 @@ FluidBufOnsetSlice : FluidBufProcessor { ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - indices = indices.asUGenInput; - metric = FluidOnsetSlice.prSelectMetric(metric); - if (metric.isNil or: metric.isUGen) { - ("FluidBufOnsetSlice: % is not a recognised metric") - .format(metric).throw; - }; + source = source.asUGenInput; + indices = indices.asUGenInput; + metric = FluidOnsetSlice.prSelectMetric(metric); + if (metric.isNil or: metric.isUGen) { + ("FluidBufOnsetSlice: % is not a recognised metric") + .format(metric).throw; + }; - source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw}; - indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw}; + source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw}; + indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw}; ^this.new( server, nil, [indices] diff --git a/release-packaging/Classes/FluidBufPitch.sc b/release-packaging/Classes/FluidBufPitch.sc index 86a0cb1..329ecb4 100644 --- a/release-packaging/Classes/FluidBufPitch.sc +++ b/release-packaging/Classes/FluidBufPitch.sc @@ -1,52 +1,52 @@ FluidBufPitch : FluidBufProcessor{ - const (1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; - }; - bits = a.collect{ |sym| - (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) - }.reduce{|x,y| x | y}; - ^bits - } + const (1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; + }; + bits = a.collect{ |sym| + (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) + }.reduce{|x,y| x | y}; + ^bits + } *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, algorithm = 2, minFreq = 20, maxFreq = 10000, unit = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; - features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; + source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; + features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; - ^FluidProxyUgen.kr(\FluidBufPitchTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, algorithm, minFreq, maxFreq, unit, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); + ^FluidProxyUgen.kr(\FluidBufPitchTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, algorithm, minFreq, maxFreq, unit, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, algorithm = 2, minFreq = 20, maxFreq = 10000, unit = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, algorithm = 2, minFreq = 20, maxFreq = 10000, unit = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; - features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; + source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; + features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; ^this.new( server, nil, [features] @@ -55,17 +55,17 @@ FluidBufPitch : FluidBufProcessor{ ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, algorithm = 2, minFreq = 20, maxFreq = 10000, unit = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, algorithm = 2, minFreq = 20, maxFreq = 10000, unit = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - source = source.asUGenInput; - features = features.asUGenInput; + source = source.asUGenInput; + features = features.asUGenInput; - source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; - features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; + source.isNil.if {"FluidBufPitch: Invalid source buffer".throw}; + features.isNil.if {"FluidBufPitch: Invalid features buffer".throw}; ^this.new( server, nil, [features] diff --git a/release-packaging/Classes/FluidBufSTFT.sc b/release-packaging/Classes/FluidBufSTFT.sc index 0c2aa7b..7216dee 100644 --- a/release-packaging/Classes/FluidBufSTFT.sc +++ b/release-packaging/Classes/FluidBufSTFT.sc @@ -1,38 +1,38 @@ FluidBufSTFT : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0,windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 1| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0,windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 1| - source = source ? -1; - magnitude = magnitude ? -1; - phase = phase ? -1; - resynth = resynth ? - 1; + source = source ? -1; + magnitude = magnitude ? -1; + phase = phase ? -1; + resynth = resynth ? - 1; - ^FluidProxyUgen.kr(\FluidBufSTFTTrigger, -1, source, startFrame, numFrames, startChan, magnitude, phase, resynth, inverse, padding, windowSize, hopSize, fftSize, -1, trig, blocking); + ^FluidProxyUgen.kr(\FluidBufSTFTTrigger, -1, source, startFrame, numFrames, startChan, magnitude, phase, resynth, inverse, padding, windowSize, hopSize, fftSize, -1, trig, blocking); } *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| - source = source ? -1; - magnitude = magnitude ? -1; - phase = phase ? -1; - resynth = resynth ? - 1; + source = source ? -1; + magnitude = magnitude ? -1; + phase = phase ? -1; + resynth = resynth ? - 1; - ^this.new( - server, nil, [magnitude,phase,resynth].select{|b| b != -1} + ^this.new( + server, nil, [magnitude,phase,resynth].select{|b| b != -1} ).processList( [source, startFrame, numFrames, startChan, magnitude, phase, resynth, inverse, padding, windowSize, hopSize, fftSize, -1, 0], freeWhenDone, action ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1,freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, magnitude, phase, resynth, inverse = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1,freeWhenDone = true, action| - source = source ? -1; - magnitude = magnitude ? -1; - phase = phase ? -1; - resynth = resynth ? - 1; + source = source ? -1; + magnitude = magnitude ? -1; + phase = phase ? -1; + resynth = resynth ? - 1; - ^this.new( - server, nil, [magnitude,phase,resynth].select{|b| b != -1} + ^this.new( + server, nil, [magnitude,phase,resynth].select{|b| b != -1} ).processList( [source, startFrame, numFrames, startChan, magnitude, phase, resynth, inverse, padding, windowSize, hopSize, fftSize, -1, 1], freeWhenDone, action ); diff --git a/release-packaging/Classes/FluidBufScale.sc b/release-packaging/Classes/FluidBufScale.sc index 7c9f449..9b3035f 100644 --- a/release-packaging/Classes/FluidBufScale.sc +++ b/release-packaging/Classes/FluidBufScale.sc @@ -1,41 +1,41 @@ FluidBufScale : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, inputLow = 0, inputHigh = 1, outputLow = 0, outputHigh = 1, clipping = 0, trig = 1, blocking = 1| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, inputLow = 0, inputHigh = 1, outputLow = 0, outputHigh = 1, clipping = 0, trig = 1, blocking = 1| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufScale: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufScale: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufScale: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufScale: Invalid destination buffer".throw}; - ^FluidProxyUgen.kr(\FluidBufScaleTrigger, -1, source, startFrame, numFrames, startChan, numChans, destination, inputLow, inputHigh, outputLow, outputHigh, clipping, trig, blocking); + ^FluidProxyUgen.kr(\FluidBufScaleTrigger, -1, source, startFrame, numFrames, startChan, numChans, destination, inputLow, inputHigh, outputLow, outputHigh, clipping, trig, blocking); } *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, inputLow = 0, inputHigh = 1, outputLow = 0, outputHigh = 1, clipping = 0, freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufScale: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufScale: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufScale: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufScale: Invalid destination buffer".throw}; - ^this.new( - server, nil, [destination] + ^this.new( + server, nil, [destination] ).processList( [source, startFrame, numFrames, startChan, numChans, destination, inputLow, inputHigh, outputLow, outputHigh, clipping, 0], freeWhenDone, action ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, inputLow = 0, inputHigh = 1, outputLow = 0, outputHigh = 1, clipping = 0, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, inputLow = 0, inputHigh = 1, outputLow = 0, outputHigh = 1, clipping = 0, freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufScale: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufScale: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufScale: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufScale: Invalid destination buffer".throw}; - ^this.new( - server, nil, [destination] + ^this.new( + server, nil, [destination] ).processList( [source, startFrame, numFrames, startChan, numChans, destination, inputLow, inputHigh, outputLow, outputHigh, clipping, 1], freeWhenDone, action ); diff --git a/release-packaging/Classes/FluidBufSelect.sc b/release-packaging/Classes/FluidBufSelect.sc index ff0a9d7..c918155 100644 --- a/release-packaging/Classes/FluidBufSelect.sc +++ b/release-packaging/Classes/FluidBufSelect.sc @@ -1,62 +1,62 @@ FluidBufSelect : FluidBufProcessor { - *kr { |source, destination, indices=#[-1], channels=#[-1], trig = 1, blocking = 1| + *kr { |source, destination, indices=#[-1], channels=#[-1], trig = 1, blocking = 1| - var params; + var params; - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - indices = indices.asArray; - channels = channels.asArray; + indices = indices.asArray; + channels = channels.asArray; - indices = [indices.size] ++ indices; - channels = [channels.size] ++ channels; + indices = [indices.size] ++ indices; + channels = [channels.size] ++ channels; - source.isNil.if {"FluidBufSelect: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufSelect: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufSelect: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufSelect: Invalid destination buffer".throw}; - params = indices ++ channels ++ [trig, blocking] + params = indices ++ channels ++ [trig, blocking] - ^FluidProxyUgen.kr(\FluidBufSelectTrigger,-1, source, destination, *params); + ^FluidProxyUgen.kr(\FluidBufSelectTrigger,-1, source, destination, *params); } *process { |server, source, destination, indices=#[-1], channels=#[-1], freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufSelect: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufSelect: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufSelect: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufSelect: Invalid destination buffer".throw}; - indices = indices.asArray; - channels = channels.asArray; + indices = indices.asArray; + channels = channels.asArray; indices = [indices.size] ++ indices; - channels = [channels.size] ++ channels; + channels = [channels.size] ++ channels; - ^this.new(server, nil, [destination]).processList([source, destination]++ indices ++ channels ++ [1], freeWhenDone, action);//NB always blocking + ^this.new(server, nil, [destination]).processList([source, destination]++ indices ++ channels ++ [1], freeWhenDone, action);//NB always blocking } - *processBlocking { |server, source, destination, indices=#[-1], channels=#[-1], freeWhenDone = true, action| + *processBlocking { |server, source, destination, indices=#[-1], channels=#[-1], freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufSelect: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufSelect: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufSelect: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufSelect: Invalid destination buffer".throw}; - indices = indices.asArray; - channels = channels.asArray; + indices = indices.asArray; + channels = channels.asArray; - indices = [indices.size] ++ indices; - channels = [channels.size] ++ channels; + indices = [indices.size] ++ indices; + channels = [channels.size] ++ channels; - ^this.new( - server, nil, [destination] - ).processList([source, destination]++ indices ++ channels ++ [1], freeWhenDone, action);//NB always blocking + ^this.new( + server, nil, [destination] + ).processList([source, destination]++ indices ++ channels ++ [1], freeWhenDone, action);//NB always blocking } } FluidBufSelectTrigger : FluidProxyUgen {} diff --git a/release-packaging/Classes/FluidBufSelectEvery.sc b/release-packaging/Classes/FluidBufSelectEvery.sc index 1c12f60..3dfbb2a 100644 --- a/release-packaging/Classes/FluidBufSelectEvery.sc +++ b/release-packaging/Classes/FluidBufSelectEvery.sc @@ -1,41 +1,41 @@ FluidBufSelectEvery : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, frameHop = 1, chanHop = 1, trig = 1, blocking = 1| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, frameHop = 1, chanHop = 1, trig = 1, blocking = 1| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufSelectEvery: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufSelectEvery: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufSelectEvery: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufSelectEvery: Invalid destination buffer".throw}; - ^FluidProxyUgen.kr(\FluidBufSelectEveryTrigger, -1, source, startFrame, numFrames, startChan, numChans, destination, frameHop, chanHop, trig, blocking); + ^FluidProxyUgen.kr(\FluidBufSelectEveryTrigger, -1, source, startFrame, numFrames, startChan, numChans, destination, frameHop, chanHop, trig, blocking); } *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, frameHop = 1, chanHop = 1, freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufSelectEvery: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufSelectEvery: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufSelectEvery: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufSelectEvery: Invalid destination buffer".throw}; - ^this.new( - server, nil, [destination] + ^this.new( + server, nil, [destination] ).processList( [source, startFrame, numFrames, startChan, numChans, destination, frameHop, chanHop, 0], freeWhenDone, action ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, frameHop = 1, chanHop = 1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, destination, frameHop = 1, chanHop = 1, freeWhenDone = true, action| - source = source.asUGenInput; - destination = destination.asUGenInput; + source = source.asUGenInput; + destination = destination.asUGenInput; - source.isNil.if {"FluidBufSelectEvery: Invalid source buffer".throw}; - destination.isNil.if {"FluidBufSelectEvery: Invalid destination buffer".throw}; + source.isNil.if {"FluidBufSelectEvery: Invalid source buffer".throw}; + destination.isNil.if {"FluidBufSelectEvery: Invalid destination buffer".throw}; - ^this.new( - server, nil, [destination] + ^this.new( + server, nil, [destination] ).processList( [source, startFrame, numFrames, startChan, numChans, destination, frameHop, chanHop, 1], freeWhenDone, action ); diff --git a/release-packaging/Classes/FluidBufSines.sc b/release-packaging/Classes/FluidBufSines.sc index 781ed64..9fa48e1 100644 --- a/release-packaging/Classes/FluidBufSines.sc +++ b/release-packaging/Classes/FluidBufSines.sc @@ -1,27 +1,27 @@ FluidBufSines : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, sines = -1, residual = -1, bandwidth = 76, detectionThreshold = -96, birthLowThreshold = -24, birthHighThreshold = -60, minTrackLen = 15, trackingMethod = 0, trackMagRange = 15, trackFreqRange = 50, trackProb = 0.5, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, sines = -1, residual = -1, bandwidth = 76, detectionThreshold = -96, birthLowThreshold = -24, birthHighThreshold = -60, minTrackLen = 15, trackingMethod = 0, trackMagRange = 15, trackFreqRange = 50, trackProb = 0.5, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - sines = sines !? {sines.asUGenInput} ?? {-1}; - residual = residual !? {residual.asUGenInput} ?? {-1}; + source = source.asUGenInput; + sines = sines !? {sines.asUGenInput} ?? {-1}; + residual = residual !? {residual.asUGenInput} ?? {-1}; - source.isNil.if {"FluidBufSines: Invalid source buffer".throw}; + source.isNil.if {"FluidBufSines: Invalid source buffer".throw}; ^FluidProxyUgen.multiNew(\FluidBufSinesTrigger, -1, source, startFrame, numFrames, startChan, numChans, sines, residual, bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackingMethod, trackMagRange, trackFreqRange, trackProb, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking); } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, sines = -1, residual = -1, bandwidth = 76, detectionThreshold = -96, birthLowThreshold = -24, birthHighThreshold = -60, minTrackLen = 15, trackingMethod = 0, trackMagRange = 15, trackFreqRange = 50, trackProb = 0.5, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, sines = -1, residual = -1, bandwidth = 76, detectionThreshold = -96, birthLowThreshold = -24, birthHighThreshold = -60, minTrackLen = 15, trackingMethod = 0, trackMagRange = 15, trackFreqRange = 50, trackProb = 0.5, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - sines = sines !? {sines.asUGenInput} ?? {-1}; - residual = residual !? {residual.asUGenInput} ?? {-1}; + source = source.asUGenInput; + sines = sines !? {sines.asUGenInput} ?? {-1}; + residual = residual !? {residual.asUGenInput} ?? {-1}; - source.isNil.if {"FluidBufSines: Invalid source buffer".throw}; + source.isNil.if {"FluidBufSines: Invalid source buffer".throw}; ^this.new( server, nil, [sines, residual].select{|x| x!= -1} @@ -30,15 +30,15 @@ FluidBufSines : FluidBufProcessor { ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, sines = -1, residual = -1, bandwidth = 76, detectionThreshold = -96, birthLowThreshold = -24, birthHighThreshold = -60, minTrackLen = 15, trackingMethod = 0, trackMagRange = 15, trackFreqRange = 50, trackProb = 0.5, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, sines = -1, residual = -1, bandwidth = 76, detectionThreshold = -96, birthLowThreshold = -24, birthHighThreshold = -60, minTrackLen = 15, trackingMethod = 0, trackMagRange = 15, trackFreqRange = 50, trackProb = 0.5, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action| - var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; + var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - source = source.asUGenInput; - sines = sines !? {sines.asUGenInput} ?? {-1}; - residual = residual !? {residual.asUGenInput} ?? {-1}; + source = source.asUGenInput; + sines = sines !? {sines.asUGenInput} ?? {-1}; + residual = residual !? {residual.asUGenInput} ?? {-1}; - source.isNil.if {"FluidBufSines: Invalid source buffer".throw}; + source.isNil.if {"FluidBufSines: Invalid source buffer".throw}; ^this.new( server, nil, [sines, residual].select{|x| x!= -1} diff --git a/release-packaging/Classes/FluidBufSpectralShape.sc b/release-packaging/Classes/FluidBufSpectralShape.sc index 6ef0b68..5942387 100644 --- a/release-packaging/Classes/FluidBufSpectralShape.sc +++ b/release-packaging/Classes/FluidBufSpectralShape.sc @@ -1,9 +1,9 @@ FluidBufSpectralShape : FluidBufProcessor { - *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| + *kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, trig = 1, blocking = 0| var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - var selectbits = select !? {FluidSpectralShape.prProcessSelect(select)} ?? {FluidSpectralShape.prProcessSelect(FluidSpectralShape.features)}; + var selectbits = select !? {FluidSpectralShape.prProcessSelect(select)} ?? {FluidSpectralShape.prProcessSelect(FluidSpectralShape.features)}; source = source.asUGenInput; features = features.asUGenInput; @@ -16,10 +16,10 @@ FluidBufSpectralShape : FluidBufProcessor { } - *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - var selectbits = select !? {FluidSpectralShape.prProcessSelect(select)} ?? {FluidSpectralShape.prProcessSelect(FluidSpectralShape.features)}; + var selectbits = select !? {FluidSpectralShape.prProcessSelect(select)} ?? {FluidSpectralShape.prProcessSelect(FluidSpectralShape.features)}; source = source.asUGenInput; features = features.asUGenInput; @@ -30,14 +30,14 @@ FluidBufSpectralShape : FluidBufProcessor { ^this.new( server, nil, [features] ).processList( - [source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, minFreq, maxFreq, rolloffPercent, unit, power, windowSize, hopSize, fftSize, maxFFTSize, 0], freeWhenDone, action + [source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, minFreq, maxFreq, rolloffPercent, unit, power, windowSize, hopSize, fftSize, maxFFTSize, 0], freeWhenDone, action ); } - *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| + *processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, padding = 1, freeWhenDone = true, action| var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize}; - var selectbits = select !? {FluidSpectralShape.prProcessSelect(select)} ?? {FluidSpectralShape.prProcessSelect(FluidSpectralShape.features)}; + var selectbits = select !? {FluidSpectralShape.prProcessSelect(select)} ?? {FluidSpectralShape.prProcessSelect(FluidSpectralShape.features)}; source = source.asUGenInput; features = features.asUGenInput; @@ -48,7 +48,7 @@ FluidBufSpectralShape : FluidBufProcessor { ^this.new( server, nil, [features] ).processList( - [source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, minFreq, maxFreq, rolloffPercent, unit, power, windowSize, hopSize, fftSize, maxFFTSize, 1], freeWhenDone, action + [source, startFrame, numFrames, startChan, numChans, features, padding, selectbits, minFreq, maxFreq, rolloffPercent, unit, power, windowSize, hopSize, fftSize, maxFFTSize, 1], freeWhenDone, action ); } } diff --git a/release-packaging/Classes/FluidBufStats.sc b/release-packaging/Classes/FluidBufStats.sc index e0875fb..5db6176 100644 --- a/release-packaging/Classes/FluidBufStats.sc +++ b/release-packaging/Classes/FluidBufStats.sc @@ -1,49 +1,49 @@ FluidBufStats : FluidBufProcessor { - const 1) { ("Option '" ++ item ++ "' is repeated").warn}; - }; - bits = a.collect{ |sym| - (statslookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) - }.reduce{|x,y| x | y}; - ^bits - } - - *initClass { - statslookup = Dictionary.with(*this.stats.collect{|x,i| x->(1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; + }; + bits = a.collect{ |sym| + (statslookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) + }.reduce{|x,y| x | y}; + ^bits + } + + *initClass { + statslookup = Dictionary.with(*this.stats.collect{|x,i| x->(1<oversample, <>extent, <>axis; *new {|server, oversample = 1, extent = 0, axis = 0| ^super.new(server,[oversample, extent, axis]) - .oversample_(oversample).extent_(extent).axis_(axis); + .oversample_(oversample).extent_(extent).axis_(axis); } - prGetParams{ - ^[this.oversample, this.extent, this.axis]; - } + prGetParams{ + ^[this.oversample, this.extent, this.axis]; + } fitTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\fitTransform,id, sourceDataSet.id, destDataSet.id); - } + ^this.prMakeMsg(\fitTransform,id, sourceDataSet.id, destDataSet.id); + } fitTransform{|sourceDataSet, destDataSet, action| - actions[\fitTransform] = [nil,action]; - this.fitTransformMsg(sourceDataSet,destDataSet); + actions[\fitTransform] = [nil,action]; + this.fitTransformMsg(sourceDataSet,destDataSet); this.prSendMsg(this.fitTransformMsg(sourceDataSet,destDataSet)); } diff --git a/release-packaging/Classes/FluidHPSS.sc b/release-packaging/Classes/FluidHPSS.sc index a2960e5..64cf83b 100644 --- a/release-packaging/Classes/FluidHPSS.sc +++ b/release-packaging/Classes/FluidHPSS.sc @@ -1,9 +1,9 @@ FluidHPSS : FluidRTMultiOutUGen { *ar { arg in = 0, harmFilterSize=17, percFilterSize = 31, maskingMode=0, harmThreshFreq1 = 0.1, harmThreshAmp1 = 0, harmThreshFreq2 = 0.5, harmThreshAmp2 = 0, percThreshFreq1 = 0.1, percThreshAmp1 = 0, percThreshFreq2 = 0.5, percThreshAmp2 = 0, windowSize= 1024, hopSize= -1, fftSize= -1, maxFFTSize = -1, maxHarmFilterSize, maxPercFilterSize; - - maxHarmFilterSize = maxHarmFilterSize ? harmFilterSize; - maxPercFilterSize = maxPercFilterSize ? percFilterSize; - + + maxHarmFilterSize = maxHarmFilterSize ? harmFilterSize; + maxPercFilterSize = maxPercFilterSize ? percFilterSize; + ^this.multiNew('audio', in.asAudioRateInput(this), harmFilterSize, maxHarmFilterSize, percFilterSize, maxPercFilterSize, maskingMode, harmThreshFreq1, harmThreshAmp1, harmThreshFreq2, harmThreshAmp2, percThreshFreq1, percThreshAmp1, percThreshFreq2, percThreshAmp2, windowSize, hopSize, fftSize, maxFFTSize) } init { arg ... theInputs; @@ -15,16 +15,16 @@ FluidHPSS : FluidRTMultiOutUGen { ]; ^channels } - checkInputs { + checkInputs { if(inputs.at(17).rate != 'scalar') { ^(": maxFFTSize cannot be modulated."); - }; + }; if(inputs.at(2).rate != 'scalar') { ^(": maxHarmFilterSize cannot be modulated."); - }; + }; if(inputs.at(4).rate != 'scalar') { ^(": maxPercFilterSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidKDTree.sc b/release-packaging/Classes/FluidKDTree.sc index 3dc3c04..2f688a7 100644 --- a/release-packaging/Classes/FluidKDTree.sc +++ b/release-packaging/Classes/FluidKDTree.sc @@ -1,69 +1,69 @@ FluidKDTree : FluidModelObject - { +{ - var neighbours,radius; + var neighbours,radius; - *new{ |server, numNeighbours = 1, radius = 0| - ^super.new(server,[numNeighbours,radius ? -1]) - .numNeighbours_(numNeighbours) - .radius_(radius); - } + *new{ |server, numNeighbours = 1, radius = 0| + ^super.new(server,[numNeighbours,radius ? -1]) + .numNeighbours_(numNeighbours) + .radius_(radius); + } - numNeighbours_{|k|neighbours = k.asInteger; } - numNeighbours{ ^neighbours; } + numNeighbours_{|k|neighbours = k.asInteger; } + numNeighbours{ ^neighbours; } - radius_{|r| radius = r.asUGenInput;} - radius{ ^radius; } + radius_{|r| radius = r.asUGenInput;} + radius{ ^radius; } - prGetParams{^[this.id, this.numNeighbours,this.radius];} + prGetParams{^[this.id, this.numNeighbours,this.radius];} - fitMsg{ |dataSet| ^this.prMakeMsg(\fit,this.id,dataSet.id);} + fitMsg{ |dataSet| ^this.prMakeMsg(\fit,this.id,dataSet.id);} fit{|dataSet,action| - actions[\fit] = [nil,action]; + actions[\fit] = [nil,action]; this.prSendMsg(this.fitMsg(dataSet)); } - kNearestMsg{|buffer,k| - k !? - {^this.prMakeMsg(\kNearest,id,this.prEncodeBuffer(buffer),k);} - ?? - {^this.prMakeMsg(\kNearest,id,this.prEncodeBuffer(buffer));} - } + kNearestMsg{|buffer,k| + k !? + {^this.prMakeMsg(\kNearest,id,this.prEncodeBuffer(buffer),k);} + ?? + {^this.prMakeMsg(\kNearest,id,this.prEncodeBuffer(buffer));} + } kNearest{ |buffer, k, action| - actions[\kNearest] = [strings(FluidMessageResponse,_,_),action]; + actions[\kNearest] = [strings(FluidMessageResponse,_,_),action]; this.prSendMsg(this.kNearestMsg(buffer,k)); } - kNearestDistMsg {|buffer| - ^this.prMakeMsg(\kNearestDist,id,this.prEncodeBuffer(buffer)); - } + kNearestDistMsg {|buffer| + ^this.prMakeMsg(\kNearestDist,id,this.prEncodeBuffer(buffer)); + } kNearestDist { |buffer, action| - actions[\kNearestDist] = [numbers(FluidMessageResponse,_,nil,_),action]; + actions[\kNearestDist] = [numbers(FluidMessageResponse,_,nil,_),action]; this.prSendMsg(this.kNearestDistMsg(buffer)); } - kr{|trig, inputBuffer,outputBuffer, numNeighbours = 1, lookupDataSet| -/* this.numNeighbours_(numNeighbours); - lookupDataSet = lookupDataSet ? -1; - this.lookupDataSet_(lookupDataSet);*/ + kr{|trig, inputBuffer,outputBuffer, numNeighbours = 1, lookupDataSet| + /* this.numNeighbours_(numNeighbours); + lookupDataSet = lookupDataSet ? -1; + this.lookupDataSet_(lookupDataSet);*/ - ^FluidKDTreeQuery.kr(trig, - this, numNeighbours, this.radius,lookupDataSet.asUGenInput, - inputBuffer,outputBuffer); - } + ^FluidKDTreeQuery.kr(trig, + this, numNeighbours, this.radius,lookupDataSet.asUGenInput, + inputBuffer,outputBuffer); + } } FluidKDTreeQuery : FluidRTMultiOutUGen { - *kr{ |trig, tree, numNeighbours, radius,lookupDataSet, inputBuffer, outputBuffer | - ^this.multiNew('control',trig, tree.asUGenInput, numNeighbours, radius,lookupDataSet!?(_.asUGenInput)??{-1}, inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, tree, numNeighbours, radius,lookupDataSet, inputBuffer, outputBuffer | + ^this.multiNew('control',trig, tree.asUGenInput, numNeighbours, radius,lookupDataSet!?(_.asUGenInput)??{-1}, inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidKMeans.sc b/release-packaging/Classes/FluidKMeans.sc index ca0a828..008fe99 100644 --- a/release-packaging/Classes/FluidKMeans.sc +++ b/release-packaging/Classes/FluidKMeans.sc @@ -80,9 +80,9 @@ FluidKMeans : FluidModelObject { transformPointMsg{ |sourceBuffer, targetBuffer| ^this.prMakeMsg(\transformPoint, id, this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(targetBuffer), - ["/b_query", targetBuffer.asUGenInput]); - } + this.prEncodeBuffer(targetBuffer), + ["/b_query", targetBuffer.asUGenInput]); + } transformPoint { |sourceBuffer, targetBuffer, action| actions[\transformPoint] = [nil,{action.value(targetBuffer)}]; @@ -91,40 +91,40 @@ FluidKMeans : FluidModelObject { getMeansMsg{|dataSet| ^this.prMakeMsg(\getMeans, id, dataSet.asUGenInput) } - getMeans{ |dataSet, action| - actions[\getMeans] = [nil, action]; + getMeans{ |dataSet, action| + actions[\getMeans] = [nil, action]; this.prSendMsg(this.getMeansMsg(dataSet)); } setMeansMsg{|dataSet| ^this.prMakeMsg(\setMeans, id, dataSet.asUGenInput) } - setMeans{ |dataSet, action| - actions[\setMeans] = [nil, action]; + setMeans{ |dataSet, action| + actions[\setMeans] = [nil, action]; this.prSendMsg(this.setMeansMsg(dataSet)); } clearMsg{ ^this.prMakeMsg(\clear, id) } - clear{ |action| - actions[\clear] = [nil, action]; + clear{ |action| + actions[\clear] = [nil, action]; this.prSendMsg(this.clearMsg); } kr{|trig, inputBuffer,outputBuffer| - ^FluidKMeansQuery.kr(trig, - this, - this.prEncodeBuffer(inputBuffer), - this.prEncodeBuffer(outputBuffer)); + ^FluidKMeansQuery.kr(trig, + this, + this.prEncodeBuffer(inputBuffer), + this.prEncodeBuffer(outputBuffer)); } } FluidKMeansQuery : FluidRTMultiOutUGen { - *kr{ |trig, model,inputBuffer, outputBuffer | - ^this.multiNew('control',trig, model.asUGenInput,inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model,inputBuffer, outputBuffer | + ^this.multiNew('control',trig, model.asUGenInput,inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidKNNClassifier.sc b/release-packaging/Classes/FluidKNNClassifier.sc index 19f8767..b41b738 100644 --- a/release-packaging/Classes/FluidKNNClassifier.sc +++ b/release-packaging/Classes/FluidKNNClassifier.sc @@ -1,60 +1,60 @@ FluidKNNClassifier : FluidModelObject { - var <>numNeighbours, <>weight; + var <>numNeighbours, <>weight; *new {|server, numNeighbours = 3, weight = 1| ^super.new(server,[numNeighbours,weight]) - .numNeighbours_(numNeighbours) - .weight_(weight); + .numNeighbours_(numNeighbours) + .weight_(weight); } - prGetParams{^[this.id,this.numNeighbours,this.weight];} + prGetParams{^[this.id,this.numNeighbours,this.weight];} - fitMsg{|dataSet, labelSet| - ^this.prMakeMsg(\fit, id, dataSet.id, labelSet.id) - } + fitMsg{|dataSet, labelSet| + ^this.prMakeMsg(\fit, id, dataSet.id, labelSet.id) + } fit{|dataSet, labelSet, action| - actions[\fit] = [nil,action]; - this.prSendMsg(this.fitMsg(dataSet, labelSet)); + actions[\fit] = [nil,action]; + this.prSendMsg(this.fitMsg(dataSet, labelSet)); } - predictMsg{|dataSet, labelSet| - ^this.prMakeMsg(\predict, id, dataSet.id, labelSet.id) - } + predictMsg{|dataSet, labelSet| + ^this.prMakeMsg(\predict, id, dataSet.id, labelSet.id) + } - predict{|dataSet, labelSet, action| - actions[\predict] = [nil, action]; + predict{|dataSet, labelSet, action| + actions[\predict] = [nil, action]; this.prSendMsg(this.predictMsg(dataSet, labelSet)); } - predictPointMsg{|buffer| - ^this.prMakeMsg(\predictPoint, id, this.prEncodeBuffer(buffer)) - } + predictPointMsg{|buffer| + ^this.prMakeMsg(\predictPoint, id, this.prEncodeBuffer(buffer)) + } predictPoint {|buffer, action| actions[\predictPoint] = [string(FluidMessageResponse,_,_),action]; this.prSendMsg(this.predictPointMsg(buffer)); } - kr{|trig, inputBuffer,outputBuffer| - ^FluidKNNClassifierQuery.kr(trig, - this, this.numNeighbours, this.weight, - this.prEncodeBuffer(inputBuffer), - this.prEncodeBuffer(outputBuffer)); - } + kr{|trig, inputBuffer,outputBuffer| + ^FluidKNNClassifierQuery.kr(trig, + this, this.numNeighbours, this.weight, + this.prEncodeBuffer(inputBuffer), + this.prEncodeBuffer(outputBuffer)); + } } FluidKNNClassifierQuery : FluidRTMultiOutUGen { - *kr{ |trig, model,numNeighbours = 3, weight = 1,inputBuffer, outputBuffer | - ^this.multiNew('control',trig, model.asUGenInput, - numNeighbours,weight, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model,numNeighbours = 3, weight = 1,inputBuffer, outputBuffer | + ^this.multiNew('control',trig, model.asUGenInput, + numNeighbours,weight, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidKNNRegressor.sc b/release-packaging/Classes/FluidKNNRegressor.sc index b386e2e..992b67e 100644 --- a/release-packaging/Classes/FluidKNNRegressor.sc +++ b/release-packaging/Classes/FluidKNNRegressor.sc @@ -1,59 +1,59 @@ FluidKNNRegressor : FluidModelObject { - var <>numNeighbours, <>weight; + var <>numNeighbours, <>weight; *new {|server, numNeighbours = 3, weight = 1| ^super.new(server,[numNeighbours,weight]) - .numNeighbours_(numNeighbours) - .weight_(weight); + .numNeighbours_(numNeighbours) + .weight_(weight); } - prGetParams{^[this.id,this.numNeighbours,this.weight,-1,-1];} + prGetParams{^[this.id,this.numNeighbours,this.weight,-1,-1];} - fitMsg{|sourceDataSet, targetDataSet| - ^this.prMakeMsg(\fit,this.id,sourceDataSet.id,targetDataSet.id) - } + fitMsg{|sourceDataSet, targetDataSet| + ^this.prMakeMsg(\fit,this.id,sourceDataSet.id,targetDataSet.id) + } fit{|sourceDataSet, targetDataSet, action| - actions[\fit] = [nil,action]; - this.prSendMsg(this.fitMsg(sourceDataSet, targetDataSet)); + actions[\fit] = [nil,action]; + this.prSendMsg(this.fitMsg(sourceDataSet, targetDataSet)); } - predictMsg{ |sourceDataSet, targetDataSet| - ^this.prMakeMsg(\predict,this.id,sourceDataSet.id,targetDataSet.id) - } + predictMsg{ |sourceDataSet, targetDataSet| + ^this.prMakeMsg(\predict,this.id,sourceDataSet.id,targetDataSet.id) + } predict{ |sourceDataSet, targetDataSet,action| - actions[\predict] = [nil, action]; + actions[\predict] = [nil, action]; this.prSendMsg(this.predictMsg(sourceDataSet, targetDataSet)); } - predictPointMsg { |buffer| - ^this.prMakeMsg(\predictPoint,id, this.prEncodeBuffer(buffer)); - } + predictPointMsg { |buffer| + ^this.prMakeMsg(\predictPoint,id, this.prEncodeBuffer(buffer)); + } predictPoint { |buffer, action| actions[\predictPoint] = [number(FluidMessageResponse,_,_),action]; this.prSendMsg(this.predictPointMsg(buffer)); } - kr{|trig, inputBuffer,outputBuffer| - ^FluidKNNRegressorQuery.kr(K2A.ar(trig), - this, this.numNeighbours, this.weight, - this.prEncodeBuffer(inputBuffer), - this.prEncodeBuffer(outputBuffer)); - } + kr{|trig, inputBuffer,outputBuffer| + ^FluidKNNRegressorQuery.kr(K2A.ar(trig), + this, this.numNeighbours, this.weight, + this.prEncodeBuffer(inputBuffer), + this.prEncodeBuffer(outputBuffer)); + } } FluidKNNRegressorQuery : FluidRTMultiOutUGen { - *kr{ |trig, model,numNeighbours = 3, weight = 1,inputBuffer, outputBuffer | - ^this.multiNew('control',trig, model.asUGenInput, - numNeighbours,weight, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model,numNeighbours = 3, weight = 1,inputBuffer, outputBuffer | + ^this.multiNew('control',trig, model.asUGenInput, + numNeighbours,weight, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidLabelSet.sc b/release-packaging/Classes/FluidLabelSet.sc index c30cce8..c0e7064 100644 --- a/release-packaging/Classes/FluidLabelSet.sc +++ b/release-packaging/Classes/FluidLabelSet.sc @@ -1,19 +1,19 @@ FluidLabelSet : FluidDataObject { - *new{|server| ^super.new(server) } + *new{|server| ^super.new(server) } - addLabelMsg{|identifier,label| - ^this.prMakeMsg(\addLabel,id,identifier.asSymbol,label.asSymbol); - } + addLabelMsg{|identifier,label| + ^this.prMakeMsg(\addLabel,id,identifier.asSymbol,label.asSymbol); + } addLabel{|identifier, label, action| - actions[\addLabel] = [nil, action]; + actions[\addLabel] = [nil, action]; this.prSendMsg(this.addLabelMsg(identifier,label)); } - updateLabelMsg{|identifier, label| - ^this.prMakeMsg(\updateLabel, id, identifier.asSymbol, label.asSymbol); - } + updateLabelMsg{|identifier, label| + ^this.prMakeMsg(\updateLabel, id, identifier.asSymbol, label.asSymbol); + } setLabelMsg{|identifier,label| ^this.prMakeMsg(\setLabel,id,identifier.asSymbol,label.asSymbol); @@ -25,36 +25,36 @@ FluidLabelSet : FluidDataObject { } updateLabel{|identifier, label, action| - actions[\updateLabel] = [nil,action]; + actions[\updateLabel] = [nil,action]; this.prSendMsg(this.updateLabelMsg(identifier,label)); } - getLabelMsg{|identifier| - ^this.prMakeMsg(\getLabel, id, identifier.asSymbol); - } + getLabelMsg{|identifier| + ^this.prMakeMsg(\getLabel, id, identifier.asSymbol); + } getLabel{|identifier, action| - actions[\getLabel] = [string(FluidMessageResponse,_,_),action]; + actions[\getLabel] = [string(FluidMessageResponse,_,_),action]; this.prSendMsg(this.getLabelMsg(identifier)); } - deleteLabelMsg{|identifier, action| - ^this.prMakeMsg(\deleteLabel, id, identifier.asSymbol); - } + deleteLabelMsg{|identifier, action| + ^this.prMakeMsg(\deleteLabel, id, identifier.asSymbol); + } deleteLabel{|identifier, action| - actions[\deleteLabel] = [nil, action]; + actions[\deleteLabel] = [nil, action]; this.prSendMsg(this.deleteLabelMsg(identifier)); } - clearMsg { ^this.prMakeMsg(\clear,id); } + clearMsg { ^this.prMakeMsg(\clear,id); } - clear { |action| - actions[\clear] = [nil,action]; - this.prSendMsg(this.clearMsg); - } + clear { |action| + actions[\clear] = [nil,action]; + this.prSendMsg(this.clearMsg); + } - printMsg { ^this.prMakeMsg(\print,id); } + printMsg { ^this.prMakeMsg(\print,id); } print { |action=(postResponse)| actions[\print] = [string(FluidMessageResponse,_,_),action]; @@ -62,11 +62,11 @@ FluidLabelSet : FluidDataObject { } getIdsMsg{|labelSet| - ^this.prMakeMsg(\getIds, id, labelSet.asUGenInput); - } + ^this.prMakeMsg(\getIds, id, labelSet.asUGenInput); + } getIds{|labelSet, action| - actions[\getIds] = [nil,action]; - this.prSendMsg(this.getIdsMsg(labelSet)); + actions[\getIds] = [nil,action]; + this.prSendMsg(this.getIdsMsg(labelSet)); } } diff --git a/release-packaging/Classes/FluidLoudness.sc b/release-packaging/Classes/FluidLoudness.sc index 4018dc9..1fa8128 100644 --- a/release-packaging/Classes/FluidLoudness.sc +++ b/release-packaging/Classes/FluidLoudness.sc @@ -1,43 +1,43 @@ FluidLoudness : FluidRTMultiOutUGen { - const (1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; - }; - bits = a.collect{ |sym| - (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) - }.reduce{|x,y| x | y}; - ^bits - } + const (1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; + }; + bits = a.collect{ |sym| + (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) + }.reduce{|x,y| x | y}; + ^bits + } *kr { arg in = 0, select, kWeighting = 1, truePeak = 1, windowSize = 1024, hopSize = 512, maxWindowSize = 16384; - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; ^this.multiNew('control', in.asAudioRateInput(this), selectbits, kWeighting, truePeak, windowSize, hopSize, maxWindowSize); } - init {arg ...theInputs; - var numChannels; + init {arg ...theInputs; + var numChannels; inputs = theInputs; - numChannels = inputs.at(1).asBinaryDigits.sum; + numChannels = inputs.at(1).asBinaryDigits.sum; ^this.initOutputs(numChannels,rate); } checkInputs { if(inputs.at(6).rate != 'scalar') { ^(": maxwindowSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidMDS.sc b/release-packaging/Classes/FluidMDS.sc index 234f415..bba4133 100644 --- a/release-packaging/Classes/FluidMDS.sc +++ b/release-packaging/Classes/FluidMDS.sc @@ -7,25 +7,25 @@ FluidMDS : FluidModelObject { classvar < kl = 5; classvar < cosine = 5; - var <>numDimensions, <>distanceMetric; + var <>numDimensions, <>distanceMetric; *new {|server,numDimensions = 2, distanceMetric = 1| ^super.new(server,[numDimensions, distanceMetric]) - .numDimensions_(numDimensions) - .distanceMetric_(distanceMetric); + .numDimensions_(numDimensions) + .distanceMetric_(distanceMetric); } - prGetParams{ - ^[this.numDimensions, this.distanceMetric]; - } + prGetParams{ + ^[this.numDimensions, this.distanceMetric]; + } fitTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\fitTransform,id, sourceDataSet.id, destDataSet.id); - } + ^this.prMakeMsg(\fitTransform,id, sourceDataSet.id, destDataSet.id); + } fitTransform{|sourceDataSet, destDataSet, action| - actions[\fitTransform] = [nil,action]; - this.fitTransformMsg(sourceDataSet,destDataSet); + actions[\fitTransform] = [nil,action]; + this.fitTransformMsg(sourceDataSet,destDataSet); this.prSendMsg(this.fitTransformMsg(sourceDataSet,destDataSet)); } diff --git a/release-packaging/Classes/FluidMFCC.sc b/release-packaging/Classes/FluidMFCC.sc index e42cace..ccf2e36 100644 --- a/release-packaging/Classes/FluidMFCC.sc +++ b/release-packaging/Classes/FluidMFCC.sc @@ -2,8 +2,8 @@ FluidMFCC : FluidRTMultiOutUGen { *kr { arg in = 0, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1, maxNumCoeffs = nil, maxNumBands = nil; - maxNumCoeffs = maxNumCoeffs ? numCoeffs; - maxNumBands = maxNumBands ? numBands; + maxNumCoeffs = maxNumCoeffs ? numCoeffs; + maxNumBands = maxNumBands ? numBands; ^this.multiNew('control', in.asAudioRateInput(this), numCoeffs, maxNumCoeffs, numBands, maxNumBands, startCoeff, minFreq, maxFreq, windowSize, hopSize, fftSize, maxFFTSize); } @@ -19,7 +19,7 @@ FluidMFCC : FluidRTMultiOutUGen { if(inputs.at(2).rate != 'scalar') { ^(": maxNumCoeffs cannot be modulated."); }; - if(inputs.at(4).rate != 'scalar') { + if(inputs.at(4).rate != 'scalar') { ^(": maxNumBands cannot be modulated."); }; if(inputs.at(10).rate != 'scalar') { diff --git a/release-packaging/Classes/FluidMLP.sc b/release-packaging/Classes/FluidMLP.sc index 7939f75..fc948e9 100644 --- a/release-packaging/Classes/FluidMLP.sc +++ b/release-packaging/Classes/FluidMLP.sc @@ -5,109 +5,109 @@ FluidMLPRegressor : FluidModelObject { const hiddenLayers, <>activation, <>outputActivation, <>tapIn, <>tapOut, <>maxIter, <>learnRate, <>momentum, <>batchSize, <>validation; + var <>hiddenLayers, <>activation, <>outputActivation, <>tapIn, <>tapOut, <>maxIter, <>learnRate, <>momentum, <>batchSize, <>validation; *new {|server, hiddenLayers = #[3,3] , activation = 2, outputActivation = 0, tapIn = 0, tapOut = -1,maxIter = 1000, learnRate = 0.0001, momentum = 0.9, batchSize = 50, validation = 0.2| ^super.new(server, [hiddenLayers.size] ++ hiddenLayers ++ [activation, outputActivation, tapIn, tapOut, maxIter, learnRate, momentum, batchSize, validation]) - .hiddenLayers_(hiddenLayers) - .activation_(activation) - .outputActivation_(outputActivation) - .tapIn_(tapIn) - .tapOut_(tapOut) - .maxIter_(maxIter) - .learnRate_(learnRate) - .momentum_(momentum) - .batchSize_(batchSize) - .validation_(validation); - } - - prGetParams{ - ^[this.id, this.hiddenLayers.size] ++ this.hiddenLayers ++ [this.activation, this.outputActivation, this.tapIn, this.tapOut, this.maxIter, this.learnRate, this.momentum, this.batchSize, this.validation] - } - - clearMsg{ ^this.prMakeMsg(\clear, id) } - - clear{ |action| - actions[\clear] = [nil, action]; + .hiddenLayers_(hiddenLayers) + .activation_(activation) + .outputActivation_(outputActivation) + .tapIn_(tapIn) + .tapOut_(tapOut) + .maxIter_(maxIter) + .learnRate_(learnRate) + .momentum_(momentum) + .batchSize_(batchSize) + .validation_(validation); + } + + prGetParams{ + ^[this.id, this.hiddenLayers.size] ++ this.hiddenLayers ++ [this.activation, this.outputActivation, this.tapIn, this.tapOut, this.maxIter, this.learnRate, this.momentum, this.batchSize, this.validation] + } + + clearMsg{ ^this.prMakeMsg(\clear, id) } + + clear{ |action| + actions[\clear] = [nil, action]; this.prSendMsg(this.clearMsg); } - fitMsg{|sourceDataSet, targetDataSet| - ^this.prMakeMsg(\fit,id,sourceDataSet.id, targetDataSet.id); - } + fitMsg{|sourceDataSet, targetDataSet| + ^this.prMakeMsg(\fit,id,sourceDataSet.id, targetDataSet.id); + } fit{|sourceDataSet, targetDataSet, action| - actions[\fit] = [numbers(FluidMessageResponse,_,1,_),action]; - this.prSendMsg(this.fitMsg(sourceDataSet,targetDataSet)); + actions[\fit] = [numbers(FluidMessageResponse,_,1,_),action]; + this.prSendMsg(this.fitMsg(sourceDataSet,targetDataSet)); } - predictMsg{|sourceDataSet, targetDataSet| - ^this.prMakeMsg(\predict,id,sourceDataSet.id, targetDataSet.id); - } + predictMsg{|sourceDataSet, targetDataSet| + ^this.prMakeMsg(\predict,id,sourceDataSet.id, targetDataSet.id); + } predict{|sourceDataSet, targetDataSet, action| - actions[\predict] = [nil,action]; - this.prSendMsg(this.predictMsg(sourceDataSet,targetDataSet)); + actions[\predict] = [nil,action]; + this.prSendMsg(this.predictMsg(sourceDataSet,targetDataSet)); } predictPointMsg { |sourceBuffer, targetBuffer| - ^this.prMakeMsg(\predictPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(targetBuffer), - ["/b_query", targetBuffer.asUGenInput]); - } + ^this.prMakeMsg(\predictPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(targetBuffer), + ["/b_query", targetBuffer.asUGenInput]); + } predictPoint { |sourceBuffer, targetBuffer, action| - actions[\predictPoint] = [nil,{action.value(targetBuffer)}]; - this.predictPointMsg(sourceBuffer, targetBuffer); + actions[\predictPoint] = [nil,{action.value(targetBuffer)}]; + this.predictPointMsg(sourceBuffer, targetBuffer); this.prSendMsg(this.predictPointMsg(sourceBuffer, targetBuffer)); } - read { |filename, action| - actions[\read] = [numbers(FluidMessageResponse,_,nil,_), { - |data| - this.prUpdateParams(data); - action.value; - }]; - this.prSendMsg(this.readMsg(filename)); - } - - kr{|trig, inputBuffer,outputBuffer, tapIn = 0, tapOut = -1| - var params; - tapIn = tapIn ? this.tapIn; - tapOut = tapOut ? this.tapOut; - - this.tapIn_(tapIn).tapOut_(tapOut); - - params = [this.prEncodeBuffer(inputBuffer), - this.prEncodeBuffer(outputBuffer),this.tapIn,this.tapOut]; - - ^FluidMLPRegressorQuery.kr(trig,this, *params); - } - - prUpdateParams{|data| - var rest = data.keep(-9); - this.hiddenLayers_(data.drop(1).drop(-9).copy); - [\activation_, \outputActivation_, - \tapIn_, \tapOut_, \maxIter_, - \learnRate_, \momentum_, - \batchSize_, \validation_] - .do{|prop,i| - this.performList(prop,rest[i]); - }; - } + read { |filename, action| + actions[\read] = [numbers(FluidMessageResponse,_,nil,_), { + |data| + this.prUpdateParams(data); + action.value; + }]; + this.prSendMsg(this.readMsg(filename)); + } + + kr{|trig, inputBuffer,outputBuffer, tapIn = 0, tapOut = -1| + var params; + tapIn = tapIn ? this.tapIn; + tapOut = tapOut ? this.tapOut; + + this.tapIn_(tapIn).tapOut_(tapOut); + + params = [this.prEncodeBuffer(inputBuffer), + this.prEncodeBuffer(outputBuffer),this.tapIn,this.tapOut]; + + ^FluidMLPRegressorQuery.kr(trig,this, *params); + } + + prUpdateParams{|data| + var rest = data.keep(-9); + this.hiddenLayers_(data.drop(1).drop(-9).copy); + [\activation_, \outputActivation_, + \tapIn_, \tapOut_, \maxIter_, + \learnRate_, \momentum_, + \batchSize_, \validation_] + .do{|prop,i| + this.performList(prop,rest[i]); + }; + } } FluidMLPRegressorQuery : FluidRTMultiOutUGen { - *kr{ |trig, model, inputBuffer,outputBuffer, tapIn = 0, tapOut = -1| - ^this.multiNew('control',trig, model.asUGenInput, - tapIn, tapOut, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model, inputBuffer,outputBuffer, tapIn = 0, tapOut = -1| + ^this.multiNew('control',trig, model.asUGenInput, + tapIn, tapOut, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } @@ -120,94 +120,94 @@ FluidMLPClassifier : FluidModelObject { const hiddenLayers, <>activation, <> maxIter, <>learnRate, <> momentum, <>batchSize, <>validation; + var <>hiddenLayers, <>activation, <> maxIter, <>learnRate, <> momentum, <>batchSize, <>validation; *new {|server, hiddenLayers = #[3,3] , activation = 2, maxIter = 1000, learnRate = 0.0001, momentum = 0.9, batchSize = 50, validation = 0.2| ^super.new(server,[hiddenLayers.size] ++ hiddenLayers ++ [activation, maxIter, learnRate, momentum, batchSize, validation]) - .hiddenLayers_(hiddenLayers) - .activation_(activation) - .maxIter_(maxIter) - .learnRate_(learnRate) - .momentum_(momentum) - .batchSize_(batchSize) - .validation_(validation); + .hiddenLayers_(hiddenLayers) + .activation_(activation) + .maxIter_(maxIter) + .learnRate_(learnRate) + .momentum_(momentum) + .batchSize_(batchSize) + .validation_(validation); } - prGetParams{ - ^[this.id, this.hiddenLayers.size] ++ this.hiddenLayers ++ [this.activation, this.maxIter, this.learnRate, this.momentum, this.batchSize, this.validation]; - } + prGetParams{ + ^[this.id, this.hiddenLayers.size] ++ this.hiddenLayers ++ [this.activation, this.maxIter, this.learnRate, this.momentum, this.batchSize, this.validation]; + } - clearMsg{ ^this.prMakeMsg(\clear,id) } + clearMsg{ ^this.prMakeMsg(\clear,id) } clear{ |action| - actions[\clear] = [nil,action]; + actions[\clear] = [nil,action]; this.prSendMsg(this.clearMsg); } - fitMsg{|sourceDataSet, targetLabelSet| - ^this.prMakeMsg(\fit,id,sourceDataSet.id, targetLabelSet.id); - } + fitMsg{|sourceDataSet, targetLabelSet| + ^this.prMakeMsg(\fit,id,sourceDataSet.id, targetLabelSet.id); + } fit{|sourceDataSet, targetLabelSet, action| - actions[\fit] = [numbers(FluidMessageResponse,_,1,_),action]; - this.prSendMsg(this.fitMsg(sourceDataSet,targetLabelSet)); + actions[\fit] = [numbers(FluidMessageResponse,_,1,_),action]; + this.prSendMsg(this.fitMsg(sourceDataSet,targetLabelSet)); } - predictMsg{|sourceDataSet, targetLabelSet| - ^this.prMakeMsg(\predict,id,sourceDataSet.id, targetLabelSet.id); - } + predictMsg{|sourceDataSet, targetLabelSet| + ^this.prMakeMsg(\predict,id,sourceDataSet.id, targetLabelSet.id); + } predict{ |sourceDataSet, targetLabelSet, action| - actions[\predict]=[nil,action]; + actions[\predict]=[nil,action]; this.prSendMsg(this.predictMsg(sourceDataSet,targetLabelSet)); } - predictPointMsg { |sourceBuffer| - ^this.prMakeMsg(\predictPoint,id,this.prEncodeBuffer(sourceBuffer)) - } + predictPointMsg { |sourceBuffer| + ^this.prMakeMsg(\predictPoint,id,this.prEncodeBuffer(sourceBuffer)) + } predictPoint { |sourceBuffer, action| - actions[\predictPoint] = [string(FluidMessageResponse,_,_),action]; + actions[\predictPoint] = [string(FluidMessageResponse,_,_),action]; this.prSendMsg(this.predictPointMsg(sourceBuffer)); } - read { |filename, action| - actions[\read] = [numbers(FluidMessageResponse,_,nil,_), { - |data| - this.prUpdateParams(data); - action.value; - }]; - this.prSendMsg(this.readMsg(filename)); - } + read { |filename, action| + actions[\read] = [numbers(FluidMessageResponse,_,nil,_), { + |data| + this.prUpdateParams(data); + action.value; + }]; + this.prSendMsg(this.readMsg(filename)); + } - prUpdateParams{|data| - var rest = data.keep(-6); - this.hiddenLayers_(data.drop(1).drop(-6).copy); - [\activation_, \maxIter_, - \learnRate_, \momentum_, - \batchSize_, \validation_] - .do{|prop,i| - this.performList(prop,rest[i]); - }; - } + prUpdateParams{|data| + var rest = data.keep(-6); + this.hiddenLayers_(data.drop(1).drop(-6).copy); + [\activation_, \maxIter_, + \learnRate_, \momentum_, + \batchSize_, \validation_] + .do{|prop,i| + this.performList(prop,rest[i]); + }; + } - kr{|trig, inputBuffer,outputBuffer| + kr{|trig, inputBuffer,outputBuffer| - var params = [this.prEncodeBuffer(inputBuffer), - this.prEncodeBuffer(outputBuffer)]; + var params = [this.prEncodeBuffer(inputBuffer), + this.prEncodeBuffer(outputBuffer)]; - ^FluidMLPClassifierQuery.kr(trig,this, *params); - } + ^FluidMLPClassifierQuery.kr(trig,this, *params); + } } FluidMLPClassifierQuery : FluidRTMultiOutUGen { - *kr{ |trig, model, inputBuffer,outputBuffer| - ^this.multiNew('control',trig, model.asUGenInput, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model, inputBuffer,outputBuffer| + ^this.multiNew('control',trig, model.asUGenInput, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidManipulationJSON.sc b/release-packaging/Classes/FluidManipulationJSON.sc index 875902b..3494299 100644 --- a/release-packaging/Classes/FluidManipulationJSON.sc +++ b/release-packaging/Classes/FluidManipulationJSON.sc @@ -8,17 +8,17 @@ var filename = this.tmpJSONFilename; action ?? {action = postResponse}; this.write(filename, { - action.value(this.parseJSON(File.readAllString(filename))); - File.delete(filename); - }); + action.value(this.parseJSON(File.readAllString(filename))); + File.delete(filename); + }); } load{|dict, action| var filename = this.tmpJSONFilename; File.use(filename, "wt", { |f| f.write(this.asJSON(dict));}); this.read(filename, { - action.notNil.if{ action.value; }; - File.delete(filename); + action.notNil.if{ action.value; }; + File.delete(filename); }); } @@ -55,9 +55,9 @@ if(d.isKindOf(Symbol)){^this.asJSON(d.asString)}; if(d.isKindOf(Dictionary)) { - ^"{" ++ ( - d.keys.asList.collect{|k| - k.asString.asCompileString ++ ":" + this.asJSON(d[k]) + ^"{" ++ ( + d.keys.asList.collect{|k| + k.asString.asCompileString ++ ":" + this.asJSON(d[k]) }).join(", ") ++ "}" }; if(d.isKindOf(SequenceableCollection)) diff --git a/release-packaging/Classes/FluidMelBands.sc b/release-packaging/Classes/FluidMelBands.sc index 486477f..1cbce09 100644 --- a/release-packaging/Classes/FluidMelBands.sc +++ b/release-packaging/Classes/FluidMelBands.sc @@ -1,9 +1,9 @@ FluidMelBands : FluidRTMultiOutUGen { *kr { arg in = 0, numBands = 40, minFreq = 20, maxFreq = 20000, normalize = 1, scale = 0, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1, maxNumBands; - - maxNumBands = maxNumBands ? numBands; - + + maxNumBands = maxNumBands ? numBands; + ^this.multiNew('control', in.asAudioRateInput(this), numBands, maxNumBands, minFreq, maxFreq, normalize, scale, windowSize, hopSize, fftSize, maxFFTSize); } diff --git a/release-packaging/Classes/FluidMessageResponse.sc b/release-packaging/Classes/FluidMessageResponse.sc index 0ebba79..ab34920 100644 --- a/release-packaging/Classes/FluidMessageResponse.sc +++ b/release-packaging/Classes/FluidMessageResponse.sc @@ -1,41 +1,41 @@ FluidMessageResponse : Object { - //selectors is an array of functions - //my cunning thought is that those that need extra data (e..g numbers()) can - //use partial applicaiton - *collectArgs{ |selectors,a| - var response = []; - var idx = 0; - selectors.do{ |selector| - var newThings; - # newThings,idx = selector.value(a, idx); - response = response ++ newThings; - }; + //selectors is an array of functions + //my cunning thought is that those that need extra data (e..g numbers()) can + //use partial applicaiton + *collectArgs{ |selectors,a| + var response = []; + var idx = 0; + selectors.do{ |selector| + var newThings; + # newThings,idx = selector.value(a, idx); + response = response ++ newThings; + }; - if(response.size == 1, - {^response[0]},{^response}) - } + if(response.size == 1, + {^response[0]},{^response}) + } - *string{ |a, offset| - ^[a] - } + *string{ |a, offset| + ^[a] + } - *strings {|a,offset| - //TODO add an n argument as with numbers() to make this less omnivorous - ^[a.drop(offset)]; - } + *strings {|a,offset| + //TODO add an n argument as with numbers() to make this less omnivorous + ^[a.drop(offset)]; + } - *numbers{ |a, n, offset| - n = n ? a.size - offset; //send n = nil to consume everything - ^[a.copyRange(offset, offset + n),offset + n] - } + *numbers{ |a, n, offset| + n = n ? a.size - offset; //send n = nil to consume everything + ^[a.copyRange(offset, offset + n),offset + n] + } - *number{ |a,offset| - ^[a[offset]]; - } + *number{ |a,offset| + ^[a[offset]]; + } - *buffer{ |a,server,offset| - server = server ? Server.default ; - ^[Buffer.cachedBufferAt(server, a[offset]), offset + 1] - } + *buffer{ |a,server,offset| + server = server ? Server.default ; + ^[Buffer.cachedBufferAt(server, a[offset]), offset + 1] + } } diff --git a/release-packaging/Classes/FluidNMFFilter.sc b/release-packaging/Classes/FluidNMFFilter.sc index 6c60c49..5b09dae 100644 --- a/release-packaging/Classes/FluidNMFFilter.sc +++ b/release-packaging/Classes/FluidNMFFilter.sc @@ -10,11 +10,11 @@ FluidNMFFilter : FluidRTMultiOutUGen { } checkInputs { - if(inputs.at(3).rate != 'scalar') { - ^(": maxComponents cannot be modulated."); + if(inputs.at(3).rate != 'scalar') { + ^(": maxComponents cannot be modulated."); }; - if(inputs.at(8).rate != 'scalar') { - ^(": maxFFTSize cannot be modulated."); + if(inputs.at(8).rate != 'scalar') { + ^(": maxFFTSize cannot be modulated."); }; ^this.checkValidInputs; } diff --git a/release-packaging/Classes/FluidNMFMatch.sc b/release-packaging/Classes/FluidNMFMatch.sc index a0904a6..e7009fc 100644 --- a/release-packaging/Classes/FluidNMFMatch.sc +++ b/release-packaging/Classes/FluidNMFMatch.sc @@ -10,11 +10,11 @@ FluidNMFMatch : FluidRTMultiOutUGen { } checkInputs { - if(inputs.at(3).rate != 'scalar') { - ^(": maxComponents cannot be modulated."); + if(inputs.at(3).rate != 'scalar') { + ^(": maxComponents cannot be modulated."); }; - if(inputs.at(8).rate != 'scalar') { - ^(": maxFFTSize cannot be modulated."); + if(inputs.at(8).rate != 'scalar') { + ^(": maxFFTSize cannot be modulated."); }; ^this.checkValidInputs; } diff --git a/release-packaging/Classes/FluidNRTProcess.sc b/release-packaging/Classes/FluidNRTProcess.sc index c8df9ea..ad53137 100644 --- a/release-packaging/Classes/FluidNRTProcess.sc +++ b/release-packaging/Classes/FluidNRTProcess.sc @@ -1,5 +1,5 @@ FluidNRTProcess : Object{ - var min, <>max; + var <>min, <>max; *new {|server, min = 0, max = 1| ^super.new(server,[min,max]) - .min_(min).max_(max); + .min_(min).max_(max); } - prGetParams{ - ^[this.id, this.min,this.max,-1,-1]; - } + prGetParams{ + ^[this.id, this.min,this.max,-1,-1]; + } - fitMsg{|dataSet| - ^this.prMakeMsg(\fit,id,dataSet.id) - } + fitMsg{|dataSet| + ^this.prMakeMsg(\fit,id,dataSet.id) + } fit{|dataSet, action| - actions[\fit] = [nil,action]; + actions[\fit] = [nil,action]; this.prSendMsg(this.fitMsg(dataSet)); } - transformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\transform,id,sourceDataSet.id,destDataSet.id); - } + transformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\transform,id,sourceDataSet.id,destDataSet.id); + } transform{|sourceDataSet, destDataSet, action| actions[\transform] = [nil,action]; - this.prSendMsg(this.transformMsg(sourceDataSet, destDataSet)); + this.prSendMsg(this.transformMsg(sourceDataSet, destDataSet)); } - fitTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\fitTransform,id,sourceDataSet.id,destDataSet.id) - } + fitTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\fitTransform,id,sourceDataSet.id,destDataSet.id) + } fitTransform{|sourceDataSet, destDataSet, action| - actions[\fitTransform] = [nil,action]; + actions[\fitTransform] = [nil,action]; this.prSendMsg(this.fitTransformMsg(sourceDataSet, destDataSet)); } - transformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\transformPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(destBuffer), - ["/b_query",destBuffer.asUGenInput] - ); - } + transformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\transformPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(destBuffer), + ["/b_query",destBuffer.asUGenInput] + ); + } transformPoint{|sourceBuffer, destBuffer, action| - actions[\transformPoint] = [nil,{action.value(destBuffer)}]; - this.prSendMsg(this.transformPointMsg(sourceBuffer, destBuffer)); + actions[\transformPoint] = [nil,{action.value(destBuffer)}]; + this.prSendMsg(this.transformPointMsg(sourceBuffer, destBuffer)); } - inverseTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id,destDataSet.id); - } + inverseTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id,destDataSet.id); + } inverseTransform{|sourceDataSet, destDataSet, action| actions[\inverseTransform] = [nil,action]; - this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); + this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); } - inverseTransformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\inverseTransformPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(destBuffer), - ["/b_query",destBuffer.asUGenInput] - ); - } + inverseTransformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\inverseTransformPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(destBuffer), + ["/b_query",destBuffer.asUGenInput] + ); + } inverseTransformPoint{|sourceBuffer, destBuffer, action| - actions[\inverseTransformPoint] = [nil,{action.value(destBuffer)}]; - this.prSendMsg(this.inverseTransformPointMsg(sourceBuffer, destBuffer)); + actions[\inverseTransformPoint] = [nil,{action.value(destBuffer)}]; + this.prSendMsg(this.inverseTransformPointMsg(sourceBuffer, destBuffer)); } - kr{|trig, inputBuffer,outputBuffer,min = 0 ,max = 1,invert = 0| + kr{|trig, inputBuffer,outputBuffer,min = 0 ,max = 1,invert = 0| - min = min ? this.min; - max = max ? this.max; + min = min ? this.min; + max = max ? this.max; - this.min_(min).max_(max); + this.min_(min).max_(max); - ^FluidNormalizeQuery.kr(trig, - this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), this.min, this.max, invert); - } + ^FluidNormalizeQuery.kr(trig, + this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), this.min, this.max, invert); + } } FluidNormalizeQuery : FluidRTMultiOutUGen { - *kr{ |trig, model,inputBuffer,outputBuffer,min = 0 ,max = 1,invert = 0| + *kr{ |trig, model,inputBuffer,outputBuffer,min = 0 ,max = 1,invert = 0| // inputBuffer.asUGenInput.postln; - ^this.multiNew('control',trig, model.asUGenInput, - min,max,invert, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + ^this.multiNew('control',trig, model.asUGenInput, + min,max,invert, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidNoveltyFeature.sc b/release-packaging/Classes/FluidNoveltyFeature.sc index a83df30..a663bef 100644 --- a/release-packaging/Classes/FluidNoveltyFeature.sc +++ b/release-packaging/Classes/FluidNoveltyFeature.sc @@ -1,11 +1,11 @@ FluidNoveltyFeature : FluidRTUGen { *kr { arg in = 0, algorithm = 0, kernelSize = 3, filterSize = 1, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1, maxKernelSize, maxFilterSize; - maxKernelSize = maxKernelSize ? kernelSize; - maxFilterSize = maxFilterSize ? filterSize; - algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm) ?? { - ("FluidNoveltySlice: % is not a recognised algorithm").format(algorithm); - }; + maxKernelSize = maxKernelSize ? kernelSize; + maxFilterSize = maxFilterSize ? filterSize; + algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm) ?? { + ("FluidNoveltySlice: % is not a recognised algorithm").format(algorithm); + }; ^this.multiNew('control', in.asAudioRateInput(this), algorithm, kernelSize, maxKernelSize, filterSize, maxFilterSize, windowSize, hopSize, fftSize, maxFFTSize) } @@ -13,16 +13,16 @@ FluidNoveltyFeature : FluidRTUGen { checkInputs { if([\scalar, \control].includes(inputs.at(1).rate).not) { ^(": invalid algorithm"); - }; + }; if(inputs.at(9).rate != 'scalar') { ^(": maxFFTSize cannot be modulated."); - }; + }; if(inputs.at(3).rate != 'scalar') { ^(": maxKernelSize cannot be modulated."); - }; + }; if(inputs.at(5).rate != 'scalar') { ^(": maxFilterSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidNoveltySlice.sc b/release-packaging/Classes/FluidNoveltySlice.sc index da43d54..12014b6 100644 --- a/release-packaging/Classes/FluidNoveltySlice.sc +++ b/release-packaging/Classes/FluidNoveltySlice.sc @@ -16,12 +16,12 @@ FluidNoveltySlice : FluidRTUGen { *ar { arg in = 0, algorithm = 0, kernelSize = 3, threshold = 0.8, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1, maxKernelSize, maxFilterSize; - maxKernelSize = maxKernelSize ? kernelSize; - maxFilterSize = maxFilterSize ? filterSize; + maxKernelSize = maxKernelSize ? kernelSize; + maxFilterSize = maxFilterSize ? filterSize; - algorithm = this.prSelectAlgorithm(algorithm) ?? { - ("FluidNoveltySlice: % is not a recognised algorithm").format(algorithm); - }; + algorithm = this.prSelectAlgorithm(algorithm) ?? { + ("FluidNoveltySlice: % is not a recognised algorithm").format(algorithm); + }; ^this.multiNew('audio', in.asAudioRateInput(this), algorithm, kernelSize, maxKernelSize, threshold, filterSize, maxFilterSize, minSliceLength, windowSize, hopSize, fftSize, maxFFTSize) } @@ -29,16 +29,16 @@ FluidNoveltySlice : FluidRTUGen { checkInputs { if([\scalar, \control].includes(inputs.at(1).rate).not) { ^(": invalid algorithm"); - }; + }; if(inputs.at(11).rate != 'scalar') { ^(": maxFFTSize cannot be modulated."); - }; + }; if(inputs.at(3).rate != 'scalar') { ^(": maxKernelSize cannot be modulated."); - }; + }; if(inputs.at(6).rate != 'scalar') { ^(": maxFilterSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidOnsetFeature.sc b/release-packaging/Classes/FluidOnsetFeature.sc index d5b7786..35416ed 100644 --- a/release-packaging/Classes/FluidOnsetFeature.sc +++ b/release-packaging/Classes/FluidOnsetFeature.sc @@ -10,10 +10,10 @@ FluidOnsetFeature : FluidRTUGen { checkInputs { if([\scalar, \control].includes(inputs.at(1).rate).not) { ^(": invalid metric"); - }; + }; if(inputs.at(7).rate != 'scalar') { ^(": maxFFTSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidOnsetSlice.sc b/release-packaging/Classes/FluidOnsetSlice.sc index 507e128..947f659 100644 --- a/release-packaging/Classes/FluidOnsetSlice.sc +++ b/release-packaging/Classes/FluidOnsetSlice.sc @@ -36,10 +36,10 @@ FluidOnsetSlice : FluidRTUGen { checkInputs { if([\scalar, \control].includes(inputs.at(1).rate).not) { ^(": invalid metric"); - }; + }; if(inputs.at(9).rate != 'scalar') { ^(": maxFFTSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidPCA.sc b/release-packaging/Classes/FluidPCA.sc index eb79d79..03bdf77 100644 --- a/release-packaging/Classes/FluidPCA.sc +++ b/release-packaging/Classes/FluidPCA.sc @@ -1,62 +1,62 @@ FluidPCA : FluidModelObject{ - var <>numDimensions, <>whiten; + var <>numDimensions, <>whiten; - *new {|server, numDimensions = 2, whiten = 0| + *new {|server, numDimensions = 2, whiten = 0| ^super.new(server,[numDimensions, whiten]).numDimensions_(numDimensions).whiten_(whiten); - } + } - prGetParams{ - ^[this.id, numDimensions, whiten]; - } + prGetParams{ + ^[this.id, numDimensions, whiten]; + } - fitMsg{|dataSet| - ^this.prMakeMsg(\fit,id, dataSet.id); - } + fitMsg{|dataSet| + ^this.prMakeMsg(\fit,id, dataSet.id); + } - fit{|dataSet, action| - actions[\fit] = [nil, action]; - this.prSendMsg(this.fitMsg(dataSet)); - } + fit{|dataSet, action| + actions[\fit] = [nil, action]; + this.prSendMsg(this.fitMsg(dataSet)); + } - transformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\transform, id, sourceDataSet.id, destDataSet.id); - } + transformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\transform, id, sourceDataSet.id, destDataSet.id); + } - transform{|sourceDataSet, destDataSet, action| - actions[\transform] = [numbers(FluidMessageResponse,_,1,_),action]; - this.prSendMsg(this.transformMsg(sourceDataSet,destDataSet)); - } + transform{|sourceDataSet, destDataSet, action| + actions[\transform] = [numbers(FluidMessageResponse,_,1,_),action]; + this.prSendMsg(this.transformMsg(sourceDataSet,destDataSet)); + } - fitTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\fitTransform,id, sourceDataSet.id, destDataSet.id); - } + fitTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\fitTransform,id, sourceDataSet.id, destDataSet.id); + } - fitTransform{|sourceDataSet, destDataSet, action| - actions[\fitTransform] = [numbers(FluidMessageResponse,_,1,_),action]; - this.prSendMsg(this.fitTransformMsg(sourceDataSet,destDataSet)); - } + fitTransform{|sourceDataSet, destDataSet, action| + actions[\fitTransform] = [numbers(FluidMessageResponse,_,1,_),action]; + this.prSendMsg(this.fitTransformMsg(sourceDataSet,destDataSet)); + } - transformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\transformPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(destBuffer), - ["/b_query",destBuffer.asUGenInput] - ); - } + transformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\transformPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(destBuffer), + ["/b_query",destBuffer.asUGenInput] + ); + } - transformPoint{|sourceBuffer, destBuffer, action| - actions[\transformPoint] = [nil,{action.value(destBuffer)}]; - this.prSendMsg(this.transformPointMsg(sourceBuffer,destBuffer)); - } + transformPoint{|sourceBuffer, destBuffer, action| + actions[\transformPoint] = [nil,{action.value(destBuffer)}]; + this.prSendMsg(this.transformPointMsg(sourceBuffer,destBuffer)); + } - kr{|trig, inputBuffer,outputBuffer,numDimensions| + kr{|trig, inputBuffer,outputBuffer,numDimensions| - numDimensions = numDimensions ? this.numDimensions; - this.numDimensions_(numDimensions); + numDimensions = numDimensions ? this.numDimensions; + this.numDimensions_(numDimensions); - ^FluidPCAQuery.kr(trig ,this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), this.numDimensions, this.whiten); - } + ^FluidPCAQuery.kr(trig ,this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), this.numDimensions, this.whiten); + } inverseTransformPointMsg{|sourceBuffer, destBuffer| ^this.prMakeMsg(\inverseTransformPoint,id, @@ -71,26 +71,26 @@ FluidPCA : FluidModelObject{ this.prSendMsg(this.inverseTransformPointMsg(sourceBuffer,destBuffer)); } - inverseTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id, destDataSet.id); - } + inverseTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id, destDataSet.id); + } - inverseTransform{|sourceDataSet, destDataSet,action| - actions[\inverseTransform] = [nil,action]; - this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); - } + inverseTransform{|sourceDataSet, destDataSet,action| + actions[\inverseTransform] = [nil,action]; + this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); + } } FluidPCAQuery : FluidRTMultiOutUGen { - *kr{ |trig, model, inputBuffer,outputBuffer,numDimensions, whiten| - ^this.multiNew('control',trig, model.asUGenInput, - numDimensions, whiten, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model, inputBuffer,outputBuffer,numDimensions, whiten| + ^this.multiNew('control',trig, model.asUGenInput, + numDimensions, whiten, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidPitch.sc b/release-packaging/Classes/FluidPitch.sc index da15c3f..079e90f 100644 --- a/release-packaging/Classes/FluidPitch.sc +++ b/release-packaging/Classes/FluidPitch.sc @@ -1,44 +1,44 @@ FluidPitch : FluidRTMultiOutUGen { - const (1<(1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; - }; - bits = a.collect{ |sym| - (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) - }.reduce{|x,y| x | y}; - ^bits - } + *prWarnUnrecognised {|sym| ("WARNING: FluidPitch -" + sym + "is not a recognised option").postln} + + *prProcessSelect {|a| + var bits; + a.asBag.countsDo{|item,count,i| + if(count > 1) { ("Option '" ++ item ++ "' is repeated").warn}; + }; + bits = a.collect{ |sym| + (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) + }.reduce{|x,y| x | y}; + ^bits + } *kr { arg in = 0, select, algorithm = 2, minFreq = 20, maxFreq = 10000, unit = 0, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1; - - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - + + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + ^this.multiNew('control', in.asAudioRateInput(this), selectbits, algorithm, minFreq, maxFreq, unit, windowSize, hopSize, fftSize, maxFFTSize); } init {arg ...theInputs; - var numChannels; + var numChannels; inputs = theInputs; - numChannels = inputs.at(1).asBinaryDigits.sum; + numChannels = inputs.at(1).asBinaryDigits.sum; ^this.initOutputs(numChannels,rate); } checkInputs { if(inputs.at(9).rate != 'scalar') { ^(": maxFFTSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidRobustScale.sc b/release-packaging/Classes/FluidRobustScale.sc index 87ebefa..d884146 100644 --- a/release-packaging/Classes/FluidRobustScale.sc +++ b/release-packaging/Classes/FluidRobustScale.sc @@ -1,95 +1,95 @@ FluidRobustScale : FluidModelObject { - var <>low, <>high; + var <>low, <>high; *new {|server, low = 25, high = 75| ^super.new(server,[low,high]) .low_(low).high_(high); } - prGetParams{ - ^[this.id,this.low,this.high]; - } + prGetParams{ + ^[this.id,this.low,this.high]; + } - fitMsg{|dataSet| - ^this.prMakeMsg(\fit,id,dataSet.id) - } + fitMsg{|dataSet| + ^this.prMakeMsg(\fit,id,dataSet.id) + } fit{|dataSet, action| - actions[\fit] = [nil,action]; + actions[\fit] = [nil,action]; this.prSendMsg(this.fitMsg(dataSet)); } - transformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\transform,id,sourceDataSet.id,destDataSet.id); - } + transformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\transform,id,sourceDataSet.id,destDataSet.id); + } transform{|sourceDataSet, destDataSet, action| actions[\transform] = [nil,action]; - this.prSendMsg(this.transformMsg(sourceDataSet, destDataSet)); + this.prSendMsg(this.transformMsg(sourceDataSet, destDataSet)); } - fitTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\fitTransform,id,sourceDataSet.id,destDataSet.id) - } + fitTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\fitTransform,id,sourceDataSet.id,destDataSet.id) + } fitTransform{|sourceDataSet, destDataSet, action| - actions[\fitTransform] = [nil,action]; + actions[\fitTransform] = [nil,action]; this.prSendMsg(this.fitTransformMsg(sourceDataSet, destDataSet)); } - transformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\transformPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(destBuffer), - ["/b_query",destBuffer.asUGenInput] - ); - } + transformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\transformPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(destBuffer), + ["/b_query",destBuffer.asUGenInput] + ); + } transformPoint{|sourceBuffer, destBuffer, action| - actions[\transformPoint] = [nil,{action.value(destBuffer)}]; - this.prSendMsg(this.transformPointMsg(sourceBuffer, destBuffer)); + actions[\transformPoint] = [nil,{action.value(destBuffer)}]; + this.prSendMsg(this.transformPointMsg(sourceBuffer, destBuffer)); } - inverseTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id,destDataSet.id); - } + inverseTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id,destDataSet.id); + } inverseTransform{|sourceDataSet, destDataSet, action| actions[\inverseTransform] = [nil,action]; - this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); + this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); } - inverseTransformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\inverseTransformPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(destBuffer), - ["/b_query",destBuffer.asUGenInput] - ); - } + inverseTransformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\inverseTransformPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(destBuffer), + ["/b_query",destBuffer.asUGenInput] + ); + } inverseTransformPoint{|sourceBuffer, destBuffer, action| - actions[\inverseRransformPoint] = [nil,{action.value(destBuffer)}]; - this.prSendMsg(this.inverseTransformPointMsg(sourceBuffer, destBuffer)); + actions[\inverseRransformPoint] = [nil,{action.value(destBuffer)}]; + this.prSendMsg(this.inverseTransformPointMsg(sourceBuffer, destBuffer)); } - kr{|trig, inputBuffer,outputBuffer,invert = 0| + kr{|trig, inputBuffer,outputBuffer,invert = 0| - ^FluidRobustScaleQuery.kr(trig,this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), invert); - } + ^FluidRobustScaleQuery.kr(trig,this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), invert); + } } FluidRobustScaleQuery : FluidRTMultiOutUGen { - *kr{ |trig, model, inputBuffer,outputBuffer,invert| - ^this.multiNew('control',trig, model.asUGenInput, - invert, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model, inputBuffer,outputBuffer,invert| + ^this.multiNew('control',trig, model.asUGenInput, + invert, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidSKMeans.sc b/release-packaging/Classes/FluidSKMeans.sc index f53d450..48e8de0 100644 --- a/release-packaging/Classes/FluidSKMeans.sc +++ b/release-packaging/Classes/FluidSKMeans.sc @@ -85,9 +85,9 @@ FluidSKMeans : FluidModelObject { encodePointMsg{ |sourceBuffer, targetBuffer| ^this.prMakeMsg(\encodePoint, id, this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(targetBuffer), - ["/b_query", targetBuffer.asUGenInput]); - } + this.prEncodeBuffer(targetBuffer), + ["/b_query", targetBuffer.asUGenInput]); + } encodePoint { |sourceBuffer, targetBuffer, action| actions[\encodePoint] = [nil,{action.value(targetBuffer)}]; @@ -96,40 +96,40 @@ FluidSKMeans : FluidModelObject { getMeansMsg{|dataSet| ^this.prMakeMsg(\getMeans, id, dataSet.asUGenInput) } - getMeans{ |dataSet, action| - actions[\getMeans] = [nil, action]; + getMeans{ |dataSet, action| + actions[\getMeans] = [nil, action]; this.prSendMsg(this.getMeansMsg(dataSet)); } setMeansMsg{|dataSet| ^this.prMakeMsg(\setMeans, id, dataSet.asUGenInput) } - setMeans{ |dataSet, action| - actions[\setMeans] = [nil, action]; + setMeans{ |dataSet, action| + actions[\setMeans] = [nil, action]; this.prSendMsg(this.setMeansMsg(dataSet)); } clearMsg{ ^this.prMakeMsg(\clear, id) } - clear{ |action| - actions[\clear] = [nil, action]; + clear{ |action| + actions[\clear] = [nil, action]; this.prSendMsg(this.clearMsg); } kr{|trig, inputBuffer,outputBuffer| - ^FluidSKMeansQuery.kr(trig, - this, - this.prEncodeBuffer(inputBuffer), - this.prEncodeBuffer(outputBuffer)); + ^FluidSKMeansQuery.kr(trig, + this, + this.prEncodeBuffer(inputBuffer), + this.prEncodeBuffer(outputBuffer)); } } FluidSKMeansQuery : FluidRTMultiOutUGen { - *kr{ |trig, model,inputBuffer, outputBuffer | - ^this.multiNew('control',trig, model.asUGenInput,inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model,inputBuffer, outputBuffer | + ^this.multiNew('control',trig, model.asUGenInput,inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidSTFTPass.sc b/release-packaging/Classes/FluidSTFTPass.sc index da49806..ec56a41 100644 --- a/release-packaging/Classes/FluidSTFTPass.sc +++ b/release-packaging/Classes/FluidSTFTPass.sc @@ -5,7 +5,7 @@ FluidSTFTPass : FluidRTUGen { checkInputs { if(inputs.at(4).rate != 'scalar') { ^": maxFFTSize cannot be modulated."; - }; + }; ^this.checkValidInputs } } diff --git a/release-packaging/Classes/FluidServerCache.sc b/release-packaging/Classes/FluidServerCache.sc index 6f9a3c9..6e97fcd 100644 --- a/release-packaging/Classes/FluidServerCache.sc +++ b/release-packaging/Classes/FluidServerCache.sc @@ -3,7 +3,7 @@ FluidProxyUgen : UGen { var <>pluginname; *kr { |pluginname...args| - args = args.collect{|x| x.asUGenInput} + args = args.collect{|x| x.asUGenInput} ^this.new1('control', pluginname,*args) } @@ -17,9 +17,9 @@ FluidProxyUgen : UGen { ^pluginname.asString; } - poll{ |trig = 10, label, trigid = -1| - ^super.poll(trig, label ? this.name, trigid) - } + poll{ |trig = 10, label, trigid = -1| + ^super.poll(trig, label ? this.name, trigid) + } } FluidServerCache { @@ -36,17 +36,17 @@ FluidServerCache { cache[server]!?{cache[server].do{|x|func.value(x)}} } - doAll {|func| - cache.do{|subCache| - subCache.do{|item| - func.value(item) - } - } - } + doAll {|func| + cache.do{|subCache| + subCache.do{|item| + func.value(item) + } + } + } - postln{ - cache.postln; - } + postln{ + cache.postln; + } at { |server,id| ^cache[server].tryPerform(\at,id) @@ -68,7 +68,7 @@ FluidServerCache { cache[server] ?? { cache[server] = IdentityDictionary.new; NotificationCenter.register(server,\newAllocators,this, - { + { this.clearCache(server); }); } @@ -76,18 +76,18 @@ FluidServerCache { clearCache { |server| cache[server] !? - { - var bundle = []; - cache[server].values.do{|i| - if(i.respondsTo(\freeMsg)){ - bundle = bundle.add(i.freeMsg); //server objects - }{ - i.free; //OSCFunc - } - }; - server.listSendBundle(nil,bundle); - cache.removeAt(server); - }; + { + var bundle = []; + cache[server].values.do{|i| + if(i.respondsTo(\freeMsg)){ + bundle = bundle.add(i.freeMsg); //server objects + }{ + i.free; //OSCFunc + } + }; + server.listSendBundle(nil,bundle); + cache.removeAt(server); + }; } } diff --git a/release-packaging/Classes/FluidServerObject.sc b/release-packaging/Classes/FluidServerObject.sc index 2fa5970..d724012 100644 --- a/release-packaging/Classes/FluidServerObject.sc +++ b/release-packaging/Classes/FluidServerObject.sc @@ -1,346 +1,346 @@ FluidServerObject { - classvar serverCaches; - classvar count; - classvar persistent = true; - var (1<(1< 1) { ("Option '" ++ item ++ "' is repeated").warn}; - }; - bits = a.collect{ |sym| - (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) - }.reduce{|x,y| x | y}; - ^bits - } + *prWarnUnrecognised {|sym| ("WARNING: FluidSpectralShape -" + sym + "is not a recognised option").postln} + + *prProcessSelect {|a| + var bits; + a.asBag.countsDo{|item,count,i| + if(count > 1) { ("Option '" ++ item ++ "' is repeated").warn}; + }; + bits = a.collect{ |sym| + (featuresLookup[sym.asSymbol] !? {|x| x} ?? {this.prWarnUnrecognised(sym); 0}) + }.reduce{|x,y| x | y}; + ^bits + } - *kr { arg in = 0, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1; + *kr { arg in = 0, select, minFreq = 0, maxFreq = -1, rolloffPercent = 95, unit = 0, power = 0, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = -1; - var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; + var selectbits = select !? {this.prProcessSelect(select)} ?? {this.prProcessSelect(this.features)}; - ^this.multiNew('control', in.asAudioRateInput(this), selectbits, minFreq, maxFreq, rolloffPercent, unit, power, windowSize, hopSize, fftSize, maxFFTSize); + ^this.multiNew('control', in.asAudioRateInput(this), selectbits, minFreq, maxFreq, rolloffPercent, unit, power, windowSize, hopSize, fftSize, maxFFTSize); } init {arg ...theInputs; - var numChannels; + var numChannels; inputs = theInputs; - numChannels = inputs.at(1).asBinaryDigits.sum; + numChannels = inputs.at(1).asBinaryDigits.sum; ^this.initOutputs(numChannels,rate); } checkInputs { if(inputs.at(10).rate != 'scalar') { ^(": maxFFTSize cannot be modulated."); - }; + }; ^this.checkValidInputs; } } diff --git a/release-packaging/Classes/FluidStandardize.sc b/release-packaging/Classes/FluidStandardize.sc index 05f0f4a..527e5b8 100644 --- a/release-packaging/Classes/FluidStandardize.sc +++ b/release-packaging/Classes/FluidStandardize.sc @@ -1,86 +1,86 @@ FluidStandardize : FluidModelObject { - *new {|server| + *new {|server| ^super.new(server,[]); } - prGetParams{ - ^[this.id]; - } + prGetParams{ + ^[this.id]; + } fitMsg{|dataSet| - ^this.prMakeMsg(\fit,id,dataSet.id); - } + ^this.prMakeMsg(\fit,id,dataSet.id); + } - fit{|dataSet, action| - actions[\fit] = [nil, action]; + fit{|dataSet, action| + actions[\fit] = [nil, action]; this.prSendMsg(this.fitMsg(dataSet)); } transformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\transform,id,sourceDataSet.id,destDataSet.id); - } + ^this.prMakeMsg(\transform,id,sourceDataSet.id,destDataSet.id); + } transform{|sourceDataSet, destDataSet, action| - actions[\transform] = [nil,action]; + actions[\transform] = [nil,action]; this.prSendMsg(this.transformMsg(sourceDataSet,destDataSet)); } - fitTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\fitTransform,id,sourceDataSet.id,destDataSet.id) - } + fitTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\fitTransform,id,sourceDataSet.id,destDataSet.id) + } fitTransform{|sourceDataSet, destDataSet, action| - actions[\fitTransform] = [nil,action]; + actions[\fitTransform] = [nil,action]; this.prSendMsg(this.fitTransformMsg(sourceDataSet, destDataSet)); } - transformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\transformPoint, id, this.prEncodeBuffer(sourceBuffer), this.prEncodeBuffer(destBuffer),["/b_query",destBuffer.asUGenInput]); - } + transformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\transformPoint, id, this.prEncodeBuffer(sourceBuffer), this.prEncodeBuffer(destBuffer),["/b_query",destBuffer.asUGenInput]); + } transformPoint{|sourceBuffer, destBuffer, action| - actions[\transformPoint] = [nil, {action.value(destBuffer)}]; - this.prSendMsg(this.transformPointMsg(sourceBuffer,destBuffer)); + actions[\transformPoint] = [nil, {action.value(destBuffer)}]; + this.prSendMsg(this.transformPointMsg(sourceBuffer,destBuffer)); } - inverseTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id,destDataSet.id); - } + inverseTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\inverseTransform,id,sourceDataSet.id,destDataSet.id); + } inverseTransform{|sourceDataSet, destDataSet, action| actions[\inverseTransform] = [nil,action]; - this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); + this.prSendMsg(this.inverseTransformMsg(sourceDataSet, destDataSet)); } - inverseTransformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\inverseTransformPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(destBuffer), - ["/b_query",destBuffer.asUGenInput] - ); - } + inverseTransformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\inverseTransformPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(destBuffer), + ["/b_query",destBuffer.asUGenInput] + ); + } inverseTransformPoint{|sourceBuffer, destBuffer, action| - actions[\inverseRransformPoint] = [nil,{action.value(destBuffer)}]; - this.prSendMsg(this.inverseTransformPointMsg(sourceBuffer, destBuffer)); + actions[\inverseRransformPoint] = [nil,{action.value(destBuffer)}]; + this.prSendMsg(this.inverseTransformPointMsg(sourceBuffer, destBuffer)); } - kr{|trig, inputBuffer,outputBuffer,invert = 0| + kr{|trig, inputBuffer,outputBuffer,invert = 0| - ^FluidStandardizeQuery.kr(trig,this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), invert); - } + ^FluidStandardizeQuery.kr(trig,this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer), invert); + } } FluidStandardizeQuery : FluidRTMultiOutUGen { - *kr{ |trig, model,inputBuffer,outputBuffer,invert = 0| - ^this.multiNew('control',trig, model.asUGenInput, - invert, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model,inputBuffer,outputBuffer,invert = 0| + ^this.multiNew('control',trig, model.asUGenInput, + invert, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidStats.sc b/release-packaging/Classes/FluidStats.sc index bb286de..c22b873 100644 --- a/release-packaging/Classes/FluidStats.sc +++ b/release-packaging/Classes/FluidStats.sc @@ -1,12 +1,12 @@ FluidStats : MultiOutUGen { *kr { arg in, history; - ^this.multiNew('control',*(in.asArray++history)).reshape(2,in.asArray.size); + ^this.multiNew('control',*(in.asArray++history)).reshape(2,in.asArray.size); } init {arg ...theInputs; inputs = theInputs; - this.specialIndex = (inputs.size - 2).max(0); + this.specialIndex = (inputs.size - 2).max(0); ^this.initOutputs(inputs.size - 1,rate) } @@ -14,17 +14,17 @@ FluidStats : MultiOutUGen { ^this.checkValidInputs; } - initOutputs{|numChans,rate| - if(numChans.isNil or: {numChans < 1}) - { - Error("No input channels").throw - }; + initOutputs{|numChans,rate| + if(numChans.isNil or: {numChans < 1}) + { + Error("No input channels").throw + }; - channels = Array.fill(numChans * 2, { |i| - OutputProxy('control',this,i); - }); - ^channels - } + channels = Array.fill(numChans * 2, { |i| + OutputProxy('control',this,i); + }); + ^channels + } - numOutputs { ^(channels.size); } + numOutputs { ^(channels.size); } } diff --git a/release-packaging/Classes/FluidUMAP.sc b/release-packaging/Classes/FluidUMAP.sc index 24f632c..cce35cd 100644 --- a/release-packaging/Classes/FluidUMAP.sc +++ b/release-packaging/Classes/FluidUMAP.sc @@ -1,75 +1,75 @@ FluidUMAP : FluidModelObject { - var <>numDimensions, <>numNeighbours, <>minDist, <>iterations, <>learnRate; + var <>numDimensions, <>numNeighbours, <>minDist, <>iterations, <>learnRate; *new {|server,numDimensions = 2, numNeighbours = 15, minDist = 0.1, iterations = 200, learnRate = 0.1| ^super.new(server,[numDimensions, numNeighbours, minDist, iterations, learnRate]) - .numDimensions_(numDimensions) - .numNeighbours_(numNeighbours) - .minDist_(minDist) - .iterations_(iterations) - .learnRate_(learnRate); + .numDimensions_(numDimensions) + .numNeighbours_(numNeighbours) + .minDist_(minDist) + .iterations_(iterations) + .learnRate_(learnRate); } - prGetParams{ - ^[ - this.id, - this.numDimensions, - this.numNeighbours, - this.minDist, - this.iterations, - this.learnRate, - ] - } - - fitTransformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\fitTransform, id, sourceDataSet.id, destDataSet.id) - } + prGetParams{ + ^[ + this.id, + this.numDimensions, + this.numNeighbours, + this.minDist, + this.iterations, + this.learnRate, + ] + } + + fitTransformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\fitTransform, id, sourceDataSet.id, destDataSet.id) + } fitTransform{|sourceDataSet, destDataSet, action| - actions[\fitTransform] = [nil, action]; + actions[\fitTransform] = [nil, action]; this.prSendMsg(this.fitTransformMsg(sourceDataSet,destDataSet)); } fitMsg{|dataSet| - ^this.prMakeMsg(\fit,id, dataSet.id); - } + ^this.prMakeMsg(\fit,id, dataSet.id); + } - fit{|dataSet, action| - actions[\fit] = [nil, action]; - this.prSendMsg(this.fitMsg(dataSet)); - } + fit{|dataSet, action| + actions[\fit] = [nil, action]; + this.prSendMsg(this.fitMsg(dataSet)); + } - transformMsg{|sourceDataSet, destDataSet| - ^this.prMakeMsg(\transform, id, sourceDataSet.id, destDataSet.id); - } + transformMsg{|sourceDataSet, destDataSet| + ^this.prMakeMsg(\transform, id, sourceDataSet.id, destDataSet.id); + } - transform{|sourceDataSet, destDataSet, action| - actions[\transform] = [nil, action]; - this.prSendMsg(this.transformMsg(sourceDataSet,destDataSet)); - } + transform{|sourceDataSet, destDataSet, action| + actions[\transform] = [nil, action]; + this.prSendMsg(this.transformMsg(sourceDataSet,destDataSet)); + } - transformPointMsg{|sourceBuffer, destBuffer| - ^this.prMakeMsg(\transformPoint,id, - this.prEncodeBuffer(sourceBuffer), - this.prEncodeBuffer(destBuffer), - ["/b_query",destBuffer.asUGenInput] - ); - } + transformPointMsg{|sourceBuffer, destBuffer| + ^this.prMakeMsg(\transformPoint,id, + this.prEncodeBuffer(sourceBuffer), + this.prEncodeBuffer(destBuffer), + ["/b_query",destBuffer.asUGenInput] + ); + } - transformPoint{|sourceBuffer, destBuffer, action| - actions[\transformPoint] = [nil,{action.value(destBuffer)}]; - this.prSendMsg(this.transformPointMsg(sourceBuffer,destBuffer)); - } + transformPoint{|sourceBuffer, destBuffer, action| + actions[\transformPoint] = [nil,{action.value(destBuffer)}]; + this.prSendMsg(this.transformPointMsg(sourceBuffer,destBuffer)); + } kr{|trig, inputBuffer,outputBuffer| - ^FluidUMAPQuery.kr(trig, - this, + ^FluidUMAPQuery.kr(trig, + this, this.prEncodeBuffer(inputBuffer), this.prEncodeBuffer(outputBuffer)); - } + } // not implemented cols {|action|} @@ -77,12 +77,12 @@ FluidUMAP : FluidModelObject { } FluidUMAPQuery : FluidRTMultiOutUGen { - *kr{ |trig, model, inputBuffer,outputBuffer| - ^this.multiNew('control',trig, model.asUGenInput, - inputBuffer.asUGenInput, outputBuffer.asUGenInput) - } + *kr{ |trig, model, inputBuffer,outputBuffer| + ^this.multiNew('control',trig, model.asUGenInput, + inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } - init { arg ... theInputs; + init { arg ... theInputs; inputs = theInputs; ^this.initOutputs(1, rate); } diff --git a/release-packaging/Classes/FluidWaveform.sc b/release-packaging/Classes/FluidWaveform.sc index 2e2d5b5..2c1286e 100644 --- a/release-packaging/Classes/FluidWaveform.sc +++ b/release-packaging/Classes/FluidWaveform.sc @@ -433,5 +433,5 @@ FluidWaveform : FluidViewer { }; } - asView { ^view } + asView { ^view } } From aca18751d0beb9523532c863445aff3ac99dcf64 Mon Sep 17 00:00:00 2001 From: Ted Moore Date: Mon, 15 Aug 2022 18:33:16 +0100 Subject: [PATCH 3/4] example 8b: no need to execute the gui and synth separately --- test/8b-mlp-synth-control.scd | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/8b-mlp-synth-control.scd b/test/8b-mlp-synth-control.scd index 51797ad..0ceb6ff 100644 --- a/test/8b-mlp-synth-control.scd +++ b/test/8b-mlp-synth-control.scd @@ -61,10 +61,9 @@ StaticText(w,Rect(732,150,50,20)).string_("maxIter:"); TextField(w,Rect(730,170,50,20)).string_(1000.asString).action_{|in| mlp.maxIter = in.value.asInteger.postln;}; StaticText(w,Rect(732,190,50,20)).string_("validation:"); TextField(w,Rect(730,210,50,20)).string_(0.0.asString).action_{|in|mlp.validation = in.value.asFloat.postln;}; -) //2- the synth -( + b = { arg val = #[0,0,0,0,0,0,0,0,0,0]; var osc1, osc2, feed1, feed2, base1=69, base2=69, base3 = 130; From 4e16dbb1c31b865a8fc8d3eca62dbcc61f25899f Mon Sep 17 00:00:00 2001 From: Owen Green Date: Wed, 28 Sep 2022 18:27:20 +0100 Subject: [PATCH 4/4] WIP: RT-alloc in RT clients (#129) * Update Realtime to pass RT allocator to clients * added link to examples folder in the guide * Wrapper: Allocatorize Part 1 * (Buf)MFCC.sc: Handle maxNumBands * (Buf)MFCC.sc: Handle maxNumBands (#130) * typo * Remove CondVar (#132) * removed from FluidWaveform * typo * Wrapper: allocatorize * Remove redundant old help files * Wrapper: Use `fmt` insetad of `std::to_chars` (STL function needs macOS >= 10.15) * CMake: Set PIC globally * ensure PIC for all libs * Readme: Correct C++ version Co-authored-by: Ted Moore --- CMakeLists.txt | 4 +- README.md | 2 +- include/FluidSCWrapper.hpp | 7 ++- include/clients/rt/FluidDataSetWr.hpp | 4 +- include/wrapper/ArgsFromClient.hpp | 35 ++++++++---- include/wrapper/ArgsToClient.hpp | 43 +++++++++----- include/wrapper/Messaging.hpp | 12 ++-- include/wrapper/NonRealtime.hpp | 80 +++++++++++++++++---------- include/wrapper/RealTimeBase.hpp | 21 +++++-- include/wrapper/Realtime.hpp | 64 +++++---------------- include/wrapper/SCWorldAllocator.hpp | 31 +++++++++++ 11 files changed, 180 insertions(+), 123 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ec910af..bbe963b 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") - +set(CMAKE_POSITION_INDEPENDENT_CODE ON) ################################################################################ # Paths set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/install" CACHE PATH "") @@ -89,7 +89,7 @@ include(flucoma-buildtools) include(flucoma-buildtype) # endif() -option(DOCS "Generate scdocs" OFF) +option(DOCS "Generate scdocs" ON) set(FLUID_DOCS_PATH "" CACHE PATH "Optional path to flucoma-docs (needed for docs); will download if absent") if(DOCS) diff --git a/README.md b/README.md index a1692f3..d5e0c55 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Note that on macOS you may need to [dequarantine](https://learn.flucoma.org/inst ## Pre-requisites -* C++14 compliant compiler (clang, GCC or MSVC) +* C++17 compliant compiler (clang, GCC or MSVC) * cmake * make (or Ninja or XCode or VisualStudio) * git diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index 226bddb..ac4ae03 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -76,8 +76,9 @@ public: } - static auto& setParams(Unit* x, ParamSetType& p, - FloatControlsIter& inputs, bool constrain = false, bool initialized = true) + static auto& setParams(Unit* x, ParamSetType& p, FloatControlsIter& inputs, + Allocator& alloc, bool constrain = false, + bool initialized = true) { bool verbose = x->mWorld->mVerbosity > 0; @@ -85,7 +86,7 @@ public: Reportage* reportage = initialized ? &(static_cast(x)->mReportage) : new Reportage(); - p.template setParameterValuesRT(verbose ? reportage: nullptr , x, inputs); + p.template setParameterValuesRT(verbose ? reportage: nullptr , x, inputs, alloc); if (constrain) p.constrainParameterValuesRT(verbose ? reportage : nullptr); if(verbose) { diff --git a/include/clients/rt/FluidDataSetWr.hpp b/include/clients/rt/FluidDataSetWr.hpp index f97c4c4..a5b4c46 100644 --- a/include/clients/rt/FluidDataSetWr.hpp +++ b/include/clients/rt/FluidDataSetWr.hpp @@ -46,12 +46,12 @@ public: static constexpr auto &getParameterDescriptors() { return DataSetWrParams; } - DataSetWriterClient(ParamSetViewType &p) : mParams(p) {} + DataSetWriterClient(ParamSetViewType &p, FluidContext&) : mParams(p) {} template Result process(FluidContext &) { auto dataset = get().get(); if (auto datasetPtr = dataset.lock()) { - std::string &idPrefix = get(); + std::string idPrefix = std::string(get()); auto &idNumberArr = get(); if (idNumberArr.size() != 2) return {Result::Status::kError, "ID number malformed"}; diff --git a/include/wrapper/ArgsFromClient.hpp b/include/wrapper/ArgsFromClient.hpp index 9f7b091..30a80ad 100644 --- a/include/wrapper/ArgsFromClient.hpp +++ b/include/wrapper/ArgsFromClient.hpp @@ -1,6 +1,8 @@ #pragma once #include "Meta.hpp" +#include +#include namespace fluid { namespace client { @@ -40,7 +42,11 @@ struct ParamReader using Controls = impl::FloatControlsIter; - static auto fromArgs(Unit* /*x*/, Controls& args, std::string, int) + /// todo: fix std::string to use a specialisation with RT alloc + template + static auto + fromArgs(Unit* /*x*/, Controls& args, + std::basic_string, Alloc> const&, int) { // first is string size, then chars index size = static_cast(args.next()); @@ -50,14 +56,15 @@ struct ParamReader res[asUnsigned(i)] = static_cast(args.next()); return res; } - + static auto fromArgs(Unit*, Controls& args,typename LongArrayT::type&, int) { //first is array size, then items using Container = typename LongArrayT::type; using Value = typename Container::type; index size = static_cast(args.next()); - Container res(size); + /// todo: fix allocator + Container res(size, FluidDefaultAllocator()); for (index i = 0; i < size; ++i) res[i] = static_cast(args.next()); return res; @@ -225,7 +232,8 @@ struct ParamReader return argTypeOK(T{},tag); } - static auto fromArgs(World*, sc_msg_iter& args, std::string, int) + template + static auto fromArgs(World*, sc_msg_iter& args, std::basic_string,Alloc> const&, int) { const char* recv = args.gets(""); @@ -285,7 +293,7 @@ struct ParamReader using Container = typename LongArrayT::type; using Value = typename Container::type; index size = static_cast(args.geti()); - Container res(size); + Container res(size, FluidDefaultAllocator()); for (index i = 0; i < size; ++i) res[i] = static_cast(args.geti()); return res; @@ -325,14 +333,14 @@ struct ClientParams{ template std::enable_if_t || Number!=0, typename T::type> - operator()(Context* x, ArgType& args) + operator()(Context* x, ArgType& args, Allocator& alloc) { // Just return default if there's nothing left to grab if (args.remain() == 0) { std::cout << "WARNING: " << Wrapper::getName() << " received fewer parameters than expected\n"; - return Wrapper::Client::getParameterDescriptors().template makeValue(); + return Wrapper::Client::getParameterDescriptors().template makeValue(alloc); } ParamLiteralConvertor a; @@ -348,18 +356,25 @@ struct ClientParams{ template std::enable_if_t && Number==0, typename T::type> - operator()(Context* x, ArgType& args) + operator()(Context* x, ArgType& args, Allocator& alloc) { // Just return default if there's nothing left to grab if (args.remain() == 0) { std::cout << "WARNING: " << Wrapper::getName() << " received fewer parameters than expected\n"; - return Wrapper::Client::getParameterDescriptors().template makeValue(); + return Wrapper::Client::getParameterDescriptors().template makeValue(alloc); } index id = ParamReader::fromArgs(x,args,index{},0); - return std::to_string(id); + using StdAlloc = foonathan::memory::std_allocator; + using fmt_memory_buffer = + fmt::basic_memory_buffer; + auto buf = fmt_memory_buffer(alloc); + std::string_view fmt_string("{}"); + fmt::vformat_to(std::back_inserter(buf), fmt_string, + fmt::make_format_args(id)); + return rt::string(buf.data(), buf.size(), alloc); } }; diff --git a/include/wrapper/ArgsToClient.hpp b/include/wrapper/ArgsToClient.hpp index bafa412..fcb42b9 100644 --- a/include/wrapper/ArgsToClient.hpp +++ b/include/wrapper/ArgsToClient.hpp @@ -1,5 +1,7 @@ #pragma once +#include + namespace fluid { namespace client { @@ -15,12 +17,12 @@ namespace client { return 1; } - static index allocSize(std::string s) + static index allocSize(std::string const& s) { return asSigned(s.size()) + 1; } // put null char at end when we send - static index allocSize(FluidTensor s) + static index allocSize(FluidTensor const& s) { index count = 0; for (auto& str : s) count += (str.size() + 1); @@ -28,7 +30,7 @@ namespace client { } template - static index allocSize(FluidTensor s) + static index allocSize(FluidTensor const& s) { return s.size(); } @@ -68,12 +70,12 @@ namespace client { f[0] = static_cast(x); } - static void convert(float* f, std::string s) + static void convert(float* f, std::string const& s) { std::copy(s.begin(), s.end(), f); f[s.size()] = 0; // terminate } - static void convert(float* f, FluidTensor s) + static void convert(float* f, FluidTensor const& s) { for (auto& str : s) { @@ -83,7 +85,7 @@ namespace client { } } template - static void convert(float* f, FluidTensor s) + static void convert(float* f, FluidTensor const& s) { static_assert(std::is_convertible::value, "Can't convert this to float output"); @@ -114,19 +116,24 @@ namespace client { return 1; } - static index numTags(std::string) + static index numTags(rt::string const&) + { + return 1;; + } + + static index numTags(std::string const&) { return 1;; } template - static index numTags(FluidTensor s) + static index numTags(FluidTensor const& s) { return s.size(); } template - static index numTags(std::tuple&& t) + static index numTags(std::tuple const& t) { index count = 0; ForEach(t,[&count](auto& x){ count += numTags(x);}); @@ -143,10 +150,11 @@ namespace client { static std::enable_if_t>::value> getTag(Packet& p, T&&) { p.addtag('f'); } - static void getTag (Packet& p, std::string) { p.addtag('s'); } + static void getTag (Packet& p, std::string const&) { p.addtag('s'); } + static void getTag (Packet& p, rt::string const&) { p.addtag('s'); } template - static void getTag(Packet& p, FluidTensor x) + static void getTag(Packet& p, FluidTensor const& x) { T dummy{}; for (int i = 0; i < x.rows(); i++) @@ -154,7 +162,7 @@ namespace client { } template - static void getTag(Packet& p, std::tuple&& t) + static void getTag(Packet& p, std::tuple const& t) { ForEach(t,[&p](auto& x){getTag(p,x);}); } @@ -179,19 +187,24 @@ namespace client { p.addf(static_cast(x)); } - static void convert(Packet& p, std::string s) + static void convert(Packet& p, std::string const& s) + { + p.adds(s.c_str()); + } + + static void convert(Packet& p, rt::string const& s) { p.adds(s.c_str()); } template - static void convert(Packet& p, FluidTensor s) + static void convert(Packet& p, FluidTensor const& s) { for(auto& x: s) convert(p,x); } template - static void convert(Packet& p, std::tuple&& t) + static void convert(Packet& p, std::tuple const& t) { ForEach(t,[&p](auto& x){ convert(p,x);}); } diff --git a/include/wrapper/Messaging.hpp b/include/wrapper/Messaging.hpp index 9237525..c4b8588 100644 --- a/include/wrapper/Messaging.hpp +++ b/include/wrapper/Messaging.hpp @@ -154,7 +154,7 @@ public: static void refreshParams(Params& p, MessageResult& r) { - p.fromTuple(ParamValues(r)); + p.fromTuple(r.value()); } template @@ -253,7 +253,7 @@ public: template // call from RT static void messageOutput(const std::string& s, index id, MessageResult& result, void* replyAddr) { - index numTags = ToOSCTypes::numTags(static_cast(result)); + index numTags = ToOSCTypes::numTags(result.value()); if(numTags > 2048) { std::cout << "ERROR: Message response too big to send (" << asUnsigned(numTags) * sizeof(float) << " bytes)." << std::endl; @@ -290,9 +290,7 @@ public: template static void messageOutput(const std::string& s, index id, MessageResult>& result, void* replyAddr) { - using T = std::tuple; - - index numTags = ToOSCTypes::numTags(static_cast(result)); + index numTags = ToOSCTypes::numTags(result.value()); if(numTags > 2048) { std::cout << "ERROR: Message response too big to send (" << asUnsigned(numTags) * sizeof(float) << " bytes)." << std::endl; @@ -304,10 +302,10 @@ public: packet.maketags(static_cast(numTags + 2)); packet.addtag(','); packet.addtag('i'); - ToOSCTypes::getTag(packet,static_cast(result)); + ToOSCTypes::getTag(packet,result.value()); packet.addi(static_cast(id)); - ToOSCTypes::convert(packet, static_cast(result)); + ToOSCTypes::convert(packet, result.value()); if(replyAddr) SendReply(replyAddr,packet.data(),static_cast(packet.size())); diff --git a/include/wrapper/NonRealtime.hpp b/include/wrapper/NonRealtime.hpp index 1782fe2..60a6b69 100644 --- a/include/wrapper/NonRealtime.hpp +++ b/include/wrapper/NonRealtime.hpp @@ -42,7 +42,8 @@ private: /// Instance cache struct CacheEntry { - CacheEntry(const Params& p) : mParams{p}, mClient{mParams} {} + CacheEntry(const Params& p, FluidContext c) + : mParams{p}, mClient{mParams, c} {} Params mParams; Client mClient; @@ -151,11 +152,11 @@ public: return lookup == mCache.end() ? WeakCacheEntryPointer() : lookup->second; } - static WeakCacheEntryPointer add(World* world, index id, const Params& params) + static WeakCacheEntryPointer add(World* world, index id, const Params& params, FluidContext context) { if (isNull(get(id))) { - auto result = mCache.emplace(id, std::make_shared(params)); + auto result = mCache.emplace(id, std::make_shared(params, context)); addToRTCache{}(world, *(result.first)); @@ -199,8 +200,10 @@ private: struct NRTCommand { - NRTCommand(World*, sc_msg_iter* args, void* replyAddr, + NRTCommand(World* world, sc_msg_iter* args, void* replyAddr, bool consumeID = true) + : mSCAlloc{world, Wrapper::getInterfaceTable()}, + mAlloc{foonathan::memory::make_allocator_reference(mSCAlloc)} { auto count = args->count; auto pos = args->rdpos; @@ -221,9 +224,11 @@ private: if (mReplyAddress) deleteReplyAddress(mReplyAddress); } - NRTCommand() {} +// NRTCommand() {} - explicit NRTCommand(index id) : mID{id} {} + explicit NRTCommand(World* world, index id) + : mSCAlloc{world, Wrapper::getInterfaceTable()}, + mAlloc{foonathan::memory::make_allocator_reference(mSCAlloc)}, mID{id} {} bool stage2(World*) { return true; } // nrt bool stage3(World*) { return true; } // rt @@ -248,7 +253,15 @@ private: static_cast(packet.size())); } } + + Allocator& allocator() + { + return mAlloc; + } + // protected: + SCRawAllocator mSCAlloc; + Allocator mAlloc; index mID; void* mReplyAddress{nullptr}; }; @@ -257,16 +270,18 @@ private: { CommandNew(World* world, sc_msg_iter* args, void* replyAddr) : NRTCommand{world, args, replyAddr, !IsNamedShared_v}, - mParams{Client::getParameterDescriptors()} + mParams{Client::getParameterDescriptors(), NRTCommand::allocator()} { mParams.template setParameterValuesRT(nullptr, world, - *args); + *args, NRTCommand::allocator()); } - CommandNew(index id, World*, FloatControlsIter& args, Unit* x) - : NRTCommand{id}, mParams{Client::getParameterDescriptors()} + CommandNew(index id, World* world, FloatControlsIter& args, Unit* x) + : NRTCommand{world, id}, mParams{Client::getParameterDescriptors(), + NRTCommand::allocator()} { - mParams.template setParameterValuesRT(nullptr, x, args); + mParams.template setParameterValuesRT( + nullptr, x, args, NRTCommand::allocator()); } static const char* name() @@ -281,7 +296,7 @@ private: if (!constraintsRes.ok()) Wrapper::printResult(w, constraintsRes); - mResult = (!isNull(add(w, NRTCommand::mID, mParams))); + mResult = (!isNull(add(w, NRTCommand::mID, mParams, FluidContext()))); // Sigh. The cache entry above has both the client instance and main // params instance. @@ -343,21 +358,23 @@ private: { CommandProcess(World* world, sc_msg_iter* args, void* replyAddr) : NRTCommand{world, args, replyAddr}, - mParams{Client::getParameterDescriptors()} + mParams{Client::getParameterDescriptors(),NRTCommand::allocator()} { auto& ar = *args; if (auto ptr = get(NRTCommand::mID).lock()) { ptr->mDone.store(false, std::memory_order_release); mParams.template setParameterValuesRT(nullptr, world, - ar); + ar, NRTCommand::allocator()); mSynchronous = static_cast(ar.geti()); } // if this fails, we'll hear about it in stage2 anyway } - explicit CommandProcess(index id, bool synchronous, Params* params) - : NRTCommand{id}, - mSynchronous(synchronous), mParams{Client::getParameterDescriptors()} + explicit CommandProcess(World* world, index id, bool synchronous, + Params* params) + : NRTCommand{world, id}, + mSynchronous(synchronous), mParams{Client::getParameterDescriptors(), + NRTCommand::allocator()} { if (params) { @@ -473,7 +490,8 @@ private: /// Not registered as a PlugInCmd. Triggered by worker thread callback struct CommandAsyncComplete : public NRTCommand { - CommandAsyncComplete(World*, index id, void* replyAddress) + CommandAsyncComplete(World* world, index id, void* replyAddress) + : NRTCommand(world, id) { NRTCommand::mID = id; NRTCommand::mReplyAddress = replyAddress; @@ -612,7 +630,9 @@ private: struct CommandProcessNew : public NRTCommand { CommandProcessNew(World* world, sc_msg_iter* args, void* replyAddr) - : mNew{world, args, replyAddr}, mProcess{mNew.mID, false, nullptr} + : NRTCommand{world, args, replyAddr, false}, + mNew{world, args, replyAddr}, + mProcess{world, mNew.mID, false, nullptr} { mProcess.mSynchronous = args->geti(); mProcess.mReplyAddress = mNew.mReplyAddress; @@ -695,8 +715,8 @@ private: auto& ar = *args; if (auto ptr = get(NRTCommand::mID).lock()) { - ptr->mParams.template setParameterValuesRT(nullptr, - world, ar); + ptr->mParams.template setParameterValuesRT( + nullptr, world, ar, NRTCommand::allocator()); Result result = validateParameters(ptr->mParams); ptr->mClient.setParams(ptr->mParams); } @@ -725,8 +745,9 @@ private: if(!mTryInNRT) return false; if (auto ptr = get(NRTCommand::mID).lock()) - { - ptr->mParams.template setParameterValues(true, world, mArgs); + { + ptr->mParams.template setParameterValues( + true, world, mArgs, FluidDefaultAllocator()); Result result = validateParameters(ptr->mParams); ptr->mClient.setParams(ptr->mParams); } @@ -810,7 +831,6 @@ private: template static void defineNRTCommand() { - auto ft = getInterfaceTable(); auto commandRunner = [](World* world, void*, struct sc_msg_iter* args, void* replyAddr) { auto ft = getInterfaceTable(); @@ -918,7 +938,9 @@ private: NRTTriggerUnit() : mControlsIterator{mInBuf + ControlOffset(), ControlSize()}, - mParams{Client::getParameterDescriptors()} + mSCAlloc(mWorld, Wrapper::getInterfaceTable()), + mAlloc{foonathan::memory::make_allocator_reference(mSCAlloc)}, + mParams{Client::getParameterDescriptors(), mAlloc} { mID = static_cast(mInBuf[0][0]); if (mID == -1) mID = count(); @@ -936,7 +958,7 @@ private: ~NRTTriggerUnit() { set_calc_function(); - auto cmd = NonRealTime::rtalloc(mWorld, mID); + auto cmd = NonRealTime::rtalloc(mWorld, mWorld, mID); if (runAsyncCommand(mWorld, cmd, nullptr, 0, nullptr) != 0) { std::cout << "ERROR: Async command failed in ~NRTTriggerUnit()" @@ -963,12 +985,12 @@ private: if (trigger) { mControlsIterator.reset(1 + mInBuf); // add one for ID - Wrapper::setParams(this, mParams, mControlsIterator, true, false); + Wrapper::setParams(this, mParams, mControlsIterator, mAlloc, true, false); bool blocking = mInBuf[mNumInputs - 1][0] > 0; CommandProcess* cmd = - rtalloc(mWorld, mID, blocking, &mParams); + rtalloc(mWorld, mWorld, mID, blocking, &mParams); if (runAsyncCommand(mWorld, cmd, nullptr, 0, nullptr) != 0) { std::cout << "ERROR: Async command failed in NRTTriggerUnit::next()" @@ -1000,6 +1022,8 @@ private: index mID; index mRunCount{0}; WeakCacheEntryPointer mInst; + SCRawAllocator mSCAlloc; + Allocator mAlloc; Params mParams; bool mInit{false}; }; diff --git a/include/wrapper/RealTimeBase.hpp b/include/wrapper/RealTimeBase.hpp index feccfb8..ffeb5c7 100644 --- a/include/wrapper/RealTimeBase.hpp +++ b/include/wrapper/RealTimeBase.hpp @@ -1,6 +1,8 @@ #pragma once +#include #include +#include namespace fluid { namespace client { @@ -80,8 +82,9 @@ struct RealTimeBase std::forward(countScan)); return countScan; } + - void init(SCUnit& unit, Client& client, FloatControlsIter& controls) + void init(SCUnit& unit, Client& client, FloatControlsIter& controls, Allocator& alloc) { assert(!(client.audioChannelsOut() > 0 && client.controlChannelsOut().count > 0) && @@ -89,7 +92,7 @@ struct RealTimeBase client.sampleRate(unit.fullSampleRate()); mInputConnections.reserve(asUnsigned(client.audioChannelsIn())); mOutputConnections.reserve(asUnsigned(client.audioChannelsOut())); - + mContext = FluidContext(unit.fullBufferSize(), alloc); Result r; if (!(r = expectedSize(controls)).ok()) { @@ -195,16 +198,19 @@ struct RealTimeBase } void next(SCUnit& unit, Client& client, Params& params, - FloatControlsIter& controls, bool updateParams = true) + FloatControlsIter& controls, Allocator& alloc, + bool updateParams = true) { bool trig = IsModel_t::value ? !mPrevTrig && unit.in0(0) > 0 : false; mPrevTrig = trig; - + #ifdef EIGEN_RUNTIME_NO_MALLOC + Eigen::internal::set_is_malloc_allowed(false); + #endif if (updateParams) { - Wrapper::setParams(&unit, params, controls); + Wrapper::setParams(&unit, params, controls, alloc); params.constrainParameterValuesRT(nullptr); } @@ -212,6 +218,9 @@ struct RealTimeBase (this->*mOutMapperPre)(unit, client); client.process(mAudioInputs, mOutputs, mContext); (this->*mOutMapperPost)(unit, client); + #ifdef EIGEN_RUNTIME_NO_MALLOC + Eigen::internal::set_is_malloc_allowed(true); //not really + #endif } private: @@ -221,11 +230,11 @@ private: std::vector mOutputs; FluidTensor mControlInputBuffer; FluidTensor mControlOutputBuffer; - FluidContext mContext; bool mPrevTrig; IOMapFn mInputMapper; IOMapFn mOutMapperPre; IOMapFn mOutMapperPost; + FluidContext mContext; }; } // namespace impl } // namespace client diff --git a/include/wrapper/Realtime.hpp b/include/wrapper/Realtime.hpp index 64bff83..73aec80 100644 --- a/include/wrapper/Realtime.hpp +++ b/include/wrapper/Realtime.hpp @@ -3,6 +3,7 @@ #include "ArgsFromClient.hpp" #include "Meta.hpp" #include "RealTimeBase.hpp" +#include "SCWorldAllocator.hpp" #include #include @@ -53,73 +54,38 @@ public: } RealTime() - : mControls{mInBuf + ControlOffset(this),ControlSize(this)}, - mClient{Wrapper::setParams(this, mParams, mControls,true)} + : + mSCAlloc{mWorld, Wrapper::getInterfaceTable()}, + mAlloc{foonathan::memory::make_allocator_reference(mSCAlloc)}, + mContext{fullBufferSize(), mAlloc}, + mControls{mInBuf + ControlOffset(this),ControlSize(this)}, + mParams{Client::getParameterDescriptors(), mAlloc}, + mClient{Wrapper::setParams(this, mParams, mControls, mAlloc,true), mContext} { init(); } void init() { -// auto& client = mClient; - - mDelegate.init(*this,mClient,mControls); + mDelegate.init(*this,mClient,mControls,mAlloc); mCalcFunc = make_calc_function(); Wrapper::getInterfaceTable()->fClearUnitOutputs(this, 1); - // assert( - // !(client.audioChannelsOut() > 0 && client.controlChannelsOut() > 0) && - // "Client can't have both audio and control outputs"); - // - // Result r; - // if(!(r = expectedSize(mWrapper->mControlsIterator)).ok()) - // { - // mCalcFunc = Wrapper::getInterfaceTable()->fClearUnitOutputs; - // std::cout - // << "ERROR: " << Wrapper::getName() - // << " wrong number of arguments." - // << r.message() - // << std::endl; - // return; - // } - // - // mWrapper->mControlsIterator.reset(mInBuf + mSpecialIndex + 1); - // - // client.sampleRate(fullSampleRate()); - // mInputConnections.reserve(asUnsigned(client.audioChannelsIn())); - // mOutputConnections.reserve(asUnsigned(client.audioChannelsOut())); - // mAudioInputs.reserve(asUnsigned(client.audioChannelsIn())); - // mOutputs.reserve(asUnsigned( - // std::max(client.audioChannelsOut(), client.controlChannelsOut()))); - // - // for (index i = 0; i < client.audioChannelsIn(); ++i) - // { - // mInputConnections.emplace_back(isAudioRateIn(static_cast(i))); - // mAudioInputs.emplace_back(nullptr, 0, 0); - // } - // - // for (index i = 0; i < client.audioChannelsOut(); ++i) - // { - // mOutputConnections.emplace_back(true); - // mOutputs.emplace_back(nullptr, 0, 0); - // } - // - // for (index i = 0; i < client.controlChannelsOut(); ++i) - // { mOutputs.emplace_back(nullptr, 0, 0); } - // - // mCalcFunc = make_calc_function(); - // Wrapper::getInterfaceTable()->fClearUnitOutputs(this, 1); + } void next(int) { mControls.reset(mInBuf + ControlOffset(this)); - mDelegate.next(*this,mClient,mParams,mControls); + mDelegate.next(*this,mClient,mParams,mControls, mAlloc); } private: + SCRawAllocator mSCAlloc; + Allocator mAlloc; + FluidContext mContext; Delegate mDelegate; FloatControlsIter mControls; - Params mParams{Client::getParameterDescriptors()}; + Params mParams; Client mClient; Wrapper* mWrapper{static_cast(this)}; }; diff --git a/include/wrapper/SCWorldAllocator.hpp b/include/wrapper/SCWorldAllocator.hpp index 51c697f..a6bae72 100644 --- a/include/wrapper/SCWorldAllocator.hpp +++ b/include/wrapper/SCWorldAllocator.hpp @@ -14,6 +14,7 @@ #include #include + namespace fluid { template @@ -57,4 +58,34 @@ public: if (mWorld && mInterface) mInterface->fRTFree(mWorld, p); } }; + +//foonathan::memory RawAllocator with SC rtalloc +struct SCRawAllocator +{ + using is_stateful = std::true_type; + + SCRawAllocator(World* w, InterfaceTable* interface) + : mWorld{w}, mInterface{interface} + {} + + void* allocate_node(std::size_t size, std::size_t) + { + if(auto res = mInterface->fRTAlloc(mWorld,size)) + { +// std::cout << "Allocated " << res << " with " << size << '\n'; + return res; + } + throw std::bad_alloc(); + } + + void deallocate_node(void* node, std::size_t /*size*/, std::size_t) noexcept + { + mInterface->fRTFree(mWorld, node); +// std::cout << "Freed " << node << " with " << size << '\n'; + } +private: + World* mWorld; + InterfaceTable* mInterface; +}; + } // namespace fluid