From 1999c64ca4be81df155f3299d3015adf14f0d16d Mon Sep 17 00:00:00 2001 From: tremblap Date: Fri, 9 Dec 2022 17:45:40 +0000 Subject: [PATCH 1/3] method definition for bruteforce knearest (#144) --- release-packaging/Classes/FluidDataSet.sc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/release-packaging/Classes/FluidDataSet.sc b/release-packaging/Classes/FluidDataSet.sc index d7bd7d9..4ce9347 100644 --- a/release-packaging/Classes/FluidDataSet.sc +++ b/release-packaging/Classes/FluidDataSet.sc @@ -101,4 +101,13 @@ FluidDataSet : FluidDataObject actions[\getIds] = [nil,action]; this.prSendMsg(this.getIdsMsg(labelSet)); } + + kNearestMsg{|buffer,k| + ^this.prMakeMsg(\kNearest,id, this.prEncodeBuffer(buffer),k); + } + + kNearest{ |buffer, k, action| + actions[\kNearest] = [strings(FluidMessageResponse,_,_),action]; + this.prSendMsg(this.kNearestMsg(buffer,k)); + } } From 78dff3b236f91b50dac873167906846eb4e074af Mon Sep 17 00:00:00 2001 From: tremblap Date: Sat, 10 Dec 2022 16:34:13 +0000 Subject: [PATCH 2/3] feature/kdtree-distance-with-optional-k --- release-packaging/Classes/FluidKDTree.sc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/release-packaging/Classes/FluidKDTree.sc b/release-packaging/Classes/FluidKDTree.sc index 2f688a7..f850d7f 100644 --- a/release-packaging/Classes/FluidKDTree.sc +++ b/release-packaging/Classes/FluidKDTree.sc @@ -36,13 +36,16 @@ FluidKDTree : FluidModelObject this.prSendMsg(this.kNearestMsg(buffer,k)); } - kNearestDistMsg {|buffer| - ^this.prMakeMsg(\kNearestDist,id,this.prEncodeBuffer(buffer)); + kNearestDistMsg {|buffer, k| + k !? + {^this.prMakeMsg(\kNearestDist,id,this.prEncodeBuffer(buffer),k);} + ?? + {^this.prMakeMsg(\kNearestDist,id,this.prEncodeBuffer(buffer));} } - kNearestDist { |buffer, action| + kNearestDist { |buffer, k, action| actions[\kNearestDist] = [numbers(FluidMessageResponse,_,nil,_),action]; - this.prSendMsg(this.kNearestDistMsg(buffer)); + this.prSendMsg(this.kNearestDistMsg(buffer,k)); } kr{|trig, inputBuffer,outputBuffer, numNeighbours = 1, lookupDataSet| From ad7f7ecbcad00d2744cab0cded685c97877bfca0 Mon Sep 17 00:00:00 2001 From: tremblap Date: Tue, 13 Dec 2022 11:22:47 +0000 Subject: [PATCH 3/3] (buf)sines: consistent naming of interface --- release-packaging/Classes/FluidBufSines.sc | 12 ++++++------ release-packaging/Classes/FluidSines.sc | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/release-packaging/Classes/FluidBufSines.sc b/release-packaging/Classes/FluidBufSines.sc index 9fa48e1..74adc7a 100644 --- a/release-packaging/Classes/FluidBufSines.sc +++ b/release-packaging/Classes/FluidBufSines.sc @@ -1,6 +1,6 @@ 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, trackMethod = 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}; @@ -10,10 +10,10 @@ FluidBufSines : FluidBufProcessor { 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); + ^FluidProxyUgen.multiNew(\FluidBufSinesTrigger, -1, source, startFrame, numFrames, startChan, numChans, sines, residual, bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackMethod, 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, trackMethod = 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}; @@ -26,11 +26,11 @@ FluidBufSines : FluidBufProcessor { ^this.new( server, nil, [sines, residual].select{|x| x!= -1} ).processList( - [source, startFrame, numFrames, startChan, numChans, sines, residual, bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackingMethod, trackMagRange, trackFreqRange, trackProb, windowSize, hopSize, fftSize,maxFFTSize,0],freeWhenDone = true,action + [source, startFrame, numFrames, startChan, numChans, sines, residual, bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackMethod, trackMagRange, trackFreqRange, trackProb, windowSize, hopSize, fftSize,maxFFTSize,0],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| + *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, trackMethod = 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}; @@ -43,7 +43,7 @@ FluidBufSines : FluidBufProcessor { ^this.new( server, nil, [sines, residual].select{|x| x!= -1} ).processList( - [source, startFrame, numFrames, startChan, numChans, sines, residual, bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackingMethod, trackMagRange, trackFreqRange, trackProb, windowSize, hopSize, fftSize,maxFFTSize,1],freeWhenDone,action + [source, startFrame, numFrames, startChan, numChans, sines, residual, bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackMethod, trackMagRange, trackFreqRange, trackProb, windowSize, hopSize, fftSize,maxFFTSize,1],freeWhenDone,action ); } diff --git a/release-packaging/Classes/FluidSines.sc b/release-packaging/Classes/FluidSines.sc index 3da4a44..2c96044 100755 --- a/release-packaging/Classes/FluidSines.sc +++ b/release-packaging/Classes/FluidSines.sc @@ -1,6 +1,6 @@ FluidSines : FluidRTMultiOutUGen { - *ar { arg in = 0, 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, maxFFTSize = -1; - ^this.multiNew('audio', in.asAudioRateInput(this), bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackingMethod, trackMagRange, trackFreqRange, trackProb, windowSize, hopSize, fftSize, maxFFTSize) + *ar { arg in = 0, bandwidth = 76, detectionThreshold = -96, birthLowThreshold = -24, birthHighThreshold = -60, minTrackLen = 15, trackMethod = 0, trackMagRange = 15, trackFreqRange = 50, trackProb = 0.5, windowSize= 1024, hopSize= -1, fftSize= -1, maxFFTSize = -1; + ^this.multiNew('audio', in.asAudioRateInput(this), bandwidth, detectionThreshold,birthLowThreshold, birthHighThreshold, minTrackLen, trackMethod, trackMagRange, trackFreqRange, trackProb, windowSize, hopSize, fftSize, maxFFTSize) } init { arg ... theInputs; inputs = theInputs;