Add 1st NMFCross help

nix
Owen Green 6 years ago
parent 4306d6b277
commit 1268ef20d3

@ -0,0 +1,72 @@
TITLE:: FluidBufNMFCross
summary:: Cross Synthesis with Nonnegative Matrix Factorization
categories:: FluidManipulation
related:: Classes/FluidBufNMF, Classes/FluidNMFMatch, Classes/FluidNMFFilter
DESCRIPTION::
Produces hybridisations of two link::Classes/Buffer::s by using Nonnegative Maxtrix Factorization (NMF)
See Driedger, J., Prätzlich, T., & Müller, M. (2015). Let it Bee-Towards NMF-Inspired Audio Mosaicing. ISMIR, 350356. http://ismir2015.uma.es/articles/13_Paper.pdf
The process works by attempting to reconstruct the code::target:: sound using the timbre of the code::source:: sound, resulting in a hybrid whose character depends on how well the target can be represnted by the source's spectral frames.
In contrast to link::Classes/FluidBufNMF::, the size and content of the bases dictionary are fixed in this application to be the spectrogram of the code::source::. Each spectral frame of code::source:: is a template: be aware that NMF is O(N^2) in the number of templates, so longer code::source:: buffers will take dramatically longer to process.
CLASSMETHODS::
private:: kr, new1
METHOD:: process, processBlocking
Process two buffers. code::process:: will use its own worker thread on the server, and so avoid blocking the command FIFO queue. For very small jobs, it may be quicker to use code::processBlocking::, which runs directly in the server's queue.
ARGUMENT:: server
The link::Classes/Server:: on which to process
ARGUMENT:: source
A link::Classes/Buffer:: whose content will supply the spectral bases used in the hybrid
ARGUMENT:: target
A link::Classes/Buffer:: whose content will supply the temporal activations used in the hybrid
ARGUMENT:: output
A link::Classes/Buffer:: to contain the new sound
ARGUMENT:: timeSparsity
Control the repetition of source templates in the reconstruction by specifying a number of frames within which a template should not be re-used. Units are spectral frames.
ARGUMENT:: polyphony
Control the spectral density of the output sound by restricting the number of simultaneous templates that can be used. Units are spectral bins.
ARGUMENT:: iterations
How many iterations of NMF to run
ARGUMENT:: windowSize
The analysis window size in samples
ARGUMENT:: hopSize
The analysus hop size in samples (default winSize / 2)
ARGUMENT:: fftSize
The analsyis FFT size in samples (default = winSize)
ARGUMENT:: action
A function to run when processing is complete, taking the output buffer as its argument
INSTANCEMETHODS::
EXAMPLES::
code::
~path = File.realpath(FluidBufNMF.class.filenameSymbol).dirname.withTrailingSlash +/+ "../AudioFiles/"
b = Buffer.read(s,~path+/+"~Nicol-LoopE-M.wav")
t = Buffer.read(s,~path+/+"Tremblay-SA-UprightPianoPedalWide.wav")
o = Buffer.new
FluidBufNMFCross.process(s,t,b,o,action:{"Ding".postln})
o.play
::
Loading…
Cancel
Save