Classes (extension) | UGens > Analysis

SMS : MultiOutUGen : UGen : AbstractFunction : Object

Spectral Modeling Synthesis


An implementation of the sines+noise model first described by Xavier Serra in his 1989 PhD thesis; an input sound is analysed in terms of sinusoidal components by a peak tracking phase vocoder. The error between the sinusoidal reconstruction and the original signal (the residual) is then modeled by a noise model of filtered white noise. The sines part and the noise part are separately resynthesised, allowing independent transformations.

For technical details see:

Xavier Serra and Julius O. Smith (1990) "Spectral Modeling Synthesis: A Sound Analysis/Synthesis System Based on a Deterministic plus Stochastic Decomposition". Computer Music Journal 14(4): 12--24

NOTE: this plugin assumes block size of 64 and is optimised for 44100 sampling rate (internally, it uses 1024 point FFTs).

Class Methods, maxpeaks: 80, currentpeaks: 80, tolerance: 4, noisefloor: 0.2, freqmult: 1.0, freqadd: 0.0, formantpreserve: 0, useifft: 0, ampmult: 1.0, graphicsbufnum, mul: 1.0, add: 0.0)



Audio rate input to be analysed


Absolute maximum number of allowed peaks to be detected in the spectrum


Current number of allowed peaks to be detected in the spectrum


Search area for matching peaks; within tolerance spectral bins


Minimum magnitude for a candidate peak (measured as spectral magnitude)


Resynthesis parameter to change frequency; currently causes a gross multiplication of frequency of all sinusoidal components


Resynthesis parameter to change frequency; currently causes a gross addition of a frequency to all sinusoidal components


Even if changing the frequencies of sinusoidal partial tracks, re-impose the original magnitude spectrum so as to keep the formants (spectral envelope preservation). 0 is off, otherwise on (there is a small performance hit).


Use IFFT based resynthesis, which is lower quality, but substantially more efficient


amplitude multiplier for internal compensation for window power loss within algorithm. Usually leave as default of 1.0.


Will fill a user provided buffer with sines + noise data; the buffer must be size 1 + 513 + 5*(maxsines). The first entry will be the number of sines active for that polled frame. Default for this argument is -1, meaning do not write any status data. See the example with live plotting at the base of this help file.

Inherited class methods

Instance Methods

Inherited instance methods