(buf)MFCCs class and help adding startCoeff

nix
Pierre Alexandre Tremblay 4 years ago
parent eaaaa64038
commit 26a4e4c1a4

@ -1,5 +1,5 @@
FluidBufMFCC : FluidBufProcessor{ FluidBufMFCC : FluidBufProcessor{
*kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, 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}; var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
source = source.asUGenInput; source = source.asUGenInput;
@ -8,10 +8,10 @@ FluidBufMFCC : FluidBufProcessor{
source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw}; source.isNil.if {"FluidBufMFCC: Invalid source buffer".throw};
features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw}; features.isNil.if {"FluidBufMFCC: Invalid features buffer".throw};
^FluidProxyUgen.kr(\FluidBufMFCCTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numBands, minFreq, maxFreq,numCoeffs, windowSize, hopSize, fftSize, maxFFTSize,trig, blocking); ^FluidProxyUgen.kr(\FluidBufMFCCTrigger, -1, source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numBands, startCoeff, minFreq, maxFreq, numCoeffs, windowSize, hopSize, fftSize, maxFFTSize,trig, blocking);
} }
*process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, 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}; var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
source = source.asUGenInput; source = source.asUGenInput;
@ -23,11 +23,11 @@ FluidBufMFCC : FluidBufProcessor{
^this.new( ^this.new(
server, nil,[features] server, nil,[features]
).processList( ).processList(
[source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numBands, minFreq, maxFreq, numCoeffs,windowSize, hopSize, fftSize, maxFFTSize,0],freeWhenDone,action [source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numBands, startCoeff, minFreq, maxFreq, numCoeffs, windowSize, hopSize, fftSize, maxFFTSize,0],freeWhenDone,action
); );
} }
*processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, features, numCoeffs = 13, numBands = 40, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, 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}; var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
source = source.asUGenInput; source = source.asUGenInput;
@ -39,7 +39,7 @@ FluidBufMFCC : FluidBufProcessor{
^this.new( ^this.new(
server, nil,[features] server, nil,[features]
).processList( ).processList(
[source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numBands, minFreq, maxFreq,numCoeffs, windowSize, hopSize, fftSize, maxFFTSize,1],freeWhenDone,action [source, startFrame, numFrames, startChan, numChans, features, padding, numCoeffs, numBands, startCoeff, minFreq, maxFreq, numCoeffs, windowSize, hopSize, fftSize, maxFFTSize,1],freeWhenDone,action
); );
} }
} }

@ -1,7 +1,7 @@
FluidMFCC : FluidRTMultiOutUGen { FluidMFCC : FluidRTMultiOutUGen {
*kr { arg in = 0, numCoeffs = 13, numBands = 40, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = 16384, maxNumCoeffs = 40; *kr { arg in = 0, numCoeffs = 13, numBands = 40, startCoeff = 0, minFreq = 20, maxFreq = 20000, windowSize = 1024, hopSize = -1, fftSize = -1, maxFFTSize = 16384, maxNumCoeffs = 40;
^this.multiNew('control', in.asAudioRateInput(this), numCoeffs, numBands, minFreq, maxFreq, maxNumCoeffs, windowSize, hopSize, fftSize, maxFFTSize); ^this.multiNew('control', in.asAudioRateInput(this), numCoeffs, numBands, startCoeff, minFreq, maxFreq, maxNumCoeffs, windowSize, hopSize, fftSize, maxFFTSize);
} }

@ -44,6 +44,9 @@ ARGUMENT:: numCoeffs
ARGUMENT:: numBands ARGUMENT:: numBands
The number of bands that will be perceptually equally distributed between STRONG::minFreq:: and STRONG::maxFreq::. The number of bands that will be perceptually equally distributed between STRONG::minFreq:: and STRONG::maxFreq::.
ARGUMENT:: startCoeff
The lowest index of the output cepstral coefficient, zero-counting.
ARGUMENT:: minFreq ARGUMENT:: minFreq
The lower boundary of the lowest band of the model, in Hz. The lower boundary of the lowest band of the model, in Hz.

@ -22,6 +22,9 @@ ARGUMENT:: numCoeffs
ARGUMENT:: numBands ARGUMENT:: numBands
The number of bands that will be perceptually equally distributed between minFreq and maxFreq to describe the spectral shape before it is converted to cepstral coefficients. The number of bands that will be perceptually equally distributed between minFreq and maxFreq to describe the spectral shape before it is converted to cepstral coefficients.
ARGUMENT:: startCoeff
The lowest index of the output cepstral coefficient, zero-counting.
ARGUMENT:: minFreq ARGUMENT:: minFreq
The lower boundary of the lowest band of the model, in Hz. The lower boundary of the lowest band of the model, in Hz.
@ -102,7 +105,7 @@ c = Buffer.read(s,File.realpath(FluidMFCC.class.filenameSymbol).dirname.withTrai
( (
x = {arg bands = 40, low = 20, high = 20000; x = {arg bands = 40, low = 20, high = 20000;
var source = PlayBuf.ar(1,c,loop:1); var source = PlayBuf.ar(1,c,loop:1);
Out.kr(b,FluidMFCC.kr(source, 13, bands, low, high, maxNumCoeffs:13) / 10); Out.kr(b,FluidMFCC.kr(source, numCoeffs: 13, numBands: bands, minFreq: low, maxFreq: high, maxNumCoeffs: 13) / 10);
source.dup; source.dup;
}.play; }.play;
) )

Loading…
Cancel
Save