now with words and example

nix
Pierre Alexandre Tremblay 6 years ago
parent 3f687e238a
commit 31435d5118

@ -1,42 +1,48 @@
TITLE:: FluidBufNNDSVD TITLE:: FluidBufNNDSVD
summary:: something summary:: Non-Negative Double Singular Value Decomposition on a Buffer
categories:: FluidManipulation categories:: FluidManipulation
related:: Classes/FluidBufNMF related:: Classes/FluidBufNMF
DESCRIPTION:: DESCRIPTION::
does something Find Initial Bases and Activations for FluidBufNMF via Non-Negative Double Singular Value Decomposition .
See See http://nimfa.biolab.si/nimfa.methods.seeding.nndsvd.html
a paper
CLASSMETHODS:: CLASSMETHODS::
METHOD:: process METHOD:: process
Process two audio link::Classes/Buffer:: This is the method that calls for the decomposition to be calculated on a given source buffer.
ARGUMENT:: server ARGUMENT:: server
The server the process runs on The server on which the buffers to be processed are allocated.
ARGUMENT:: source ARGUMENT:: source
(describe argument here) The index of the buffer to use as the source material to be decomposed through the NMF process. The different channels of multichannel buffers will be processing sequentially.
ARGUMENT:: bases ARGUMENT:: bases
(describe argument here) The index of the buffer where the different bases will be written to and/or read from: the behaviour is set in the following argument.
ARGUMENT:: activations ARGUMENT:: activations
(describe argument here) The index of the buffer where the different activations will be written to and/or read from: the behaviour is set in the following argument.
ARGUMENT:: minComponents ARGUMENT:: minComponents
(describe argument here) Minimum number of estimated components
ARGUMENT:: maxComponents ARGUMENT:: maxComponents
(describe argument here) Maximum number of estimated components
ARGUMENT:: coverage ARGUMENT:: coverage
(describe argument here) Fraction (0 to 1) of information preserved in the decomposition
ARGUMENT:: method ARGUMENT:: method
(describe argument here) The method used for the decomposition. Options are:
table::
## 0 || NMF-SVD || faster
## 1 || NNDSVDar || more accurate, fill in the zero elements with random values
## 2 || NNDSVDa || fill in the zero elements with the average
## 3 || NNDSVD || leave zero elements as zero, works better for sparse spectrograms
::
ARGUMENT:: windowSize ARGUMENT:: windowSize
The window size. As spectral differencing relies on spectral frames, we need to decide what precision we give it spectrally and temporally, in line with Gabor Uncertainty principles. http://www.subsurfwiki.org/wiki/Gabor_uncertainty The window size. As spectral differencing relies on spectral frames, we need to decide what precision we give it spectrally and temporally, in line with Gabor Uncertainty principles. http://www.subsurfwiki.org/wiki/Gabor_uncertainty
@ -57,5 +63,25 @@ private:: synth, server
EXAMPLES:: EXAMPLES::
code:: code::
yes (
b = Buffer.read(s,File.realpath(FluidBufNNDSVD.class.filenameSymbol).dirname.withTrailingSlash ++ "../AudioFiles/Nicol-LoopE-M.wav");
~bases = Buffer.new(s);
~activations = Buffer.new(s);
~resynth = Buffer.new(s);
)
//how many bases do I need to decompose the buffer with 90% accuracy
FluidBufNNDSVD.process(s, b, ~bases, ~activations, coverage: 0.9, method: 1, action: {\done.postln;})
//check how many bases we are returned:
~bases.numChannels
//try the same process with less accuracy
FluidBufNNDSVD.process(s, b, ~bases, ~activations, coverage: 0.5, action: {\done.postln;})
~bases.numChannels
//use the bases to run NMF on
FluidBufNMF.process(s, b, resynth: ~resynth, bases: ~bases, activations: ~activations,actMode: 2, components: ~bases.numChannels, action: {\done.postln;})
{PlayBuf.ar(~resynth.numChannels, ~resynth)[1]}.play
}
:: ::

Loading…
Cancel
Save