Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion doc/BufNNDSVD.rst → doc/BufNMFSeed.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
:description: Find Initial Bases and Activations for BufNMF
:discussion:

BufNNDSVD uses Nonnegative Double Singular Value Decomposition which can help decide how to initialise BufNMF, by suggesting how many components to request (and what bases and activations to seed) in order to account for a certain percentage of the variance in a buffer. In general, using this process to seed a BufNMF decomposition should substantially increase the speed with which BufNMF converges and avoid especially poor local minima.
BufNMFSeed uses Nonnegative Double Singular Value Decomposition which can help decide how to initialise BufNMF, by suggesting how many components to request (and what bases and activations to seed) in order to account for a certain percentage of the variance in a buffer. In general, using this process to seed a BufNMF decomposition should substantially increase the speed with which BufNMF converges and avoid especially poor local minima.

See http://nimfa.biolab.si/nimfa.methods.seeding.nndsvd.html and https://www.sciencedirect.com/science/article/abs/pii/S0031320307004359 for more info.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ code::
//how many bases do I need to decompose the buffer while accounting for 90% of the variance?
(
Routine{
FluidBufNNDSVD.process(s, ~src, ~bases, ~activations, coverage: 0.9, method: 1).wait;
FluidBufNMFSeed.process(s, ~src, ~bases, ~activations, coverage: 0.9, method: 1).wait;
"% bases".format(~bases.numChannels).postln;
}.play;
)

//try the same process with less of the variance preserved
(
Routine{
FluidBufNNDSVD.process(s, ~src, ~bases, ~activations, coverage: 0.5).wait;
FluidBufNMFSeed.process(s, ~src, ~bases, ~activations, coverage: 0.5).wait;
"% bases".format(~bases.numChannels).postln;
}.play
)
Expand Down