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