now with words and example

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

@ -1,42 +1,48 @@
TITLE:: FluidBufNNDSVD
summary:: something
summary:: Non-Negative Double Singular Value Decomposition on a Buffer
categories:: FluidManipulation
related:: Classes/FluidBufNMF
DESCRIPTION::
does something
Find Initial Bases and Activations for FluidBufNMF via Non-Negative Double Singular Value Decomposition .
See
a paper
See http://nimfa.biolab.si/nimfa.methods.seeding.nndsvd.html
CLASSMETHODS::
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
The server the process runs on
The server on which the buffers to be processed are allocated.
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
(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
(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
(describe argument here)
Minimum number of estimated components
ARGUMENT:: maxComponents
(describe argument here)
Maximum number of estimated components
ARGUMENT:: coverage
(describe argument here)
Fraction (0 to 1) of information preserved in the decomposition
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
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::
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