SMS:
Filter:
Classes (extension) | UGens > Analysis

SMS : MultiOutUGen : UGen : AbstractFunction : Object
ExtensionExtension

Spectral Modeling Synthesis
Source: SMS.sc

Description

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

SMS.ar(input, 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)

Arguments:

input

Audio rate input to be analysed

maxpeaks

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

currentpeaks

Current number of allowed peaks to be detected in the spectrum

tolerance

Search area for matching peaks; within tolerance spectral bins

noisefloor

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

freqmult

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

freqadd

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

formantpreserve

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).

useifft

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

ampmult

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

graphicsbufnum

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

Examples