Waveshaping stands for transforming a waveform with respect to some transfer function. Basic waveshaping can be performed using Clip
, Fold
, Wrap
UGens, or their equivalent convenient methods (clip
, fold
and wrap
, respectively):
// convenient waveshaping {SinOsc.ar(300).clip(-0.5,0.5)}.scope; // clipping output to +-0.5 {SinOsc.ar(300).fold(-0.5,0.5)}.scope; // folding output to +-0.5 {SinOsc.ar(300).wrap(-0.5,0.5)}.scope; // wrapping output to +-0.5
In the following figure, we can see how the original waveform is transformed in each case:
Only the part of the input waveform that lies outside the given bounds (± 0.5 herein) will be affected. Values within this range will remain unchanged, while values outside it will be either truncated (clip
), folded back (fold
), or wrapped (wrap
) onto the valid range by means of a simple mathematical formulae. Waveshaping epitomizes how subtle variations in the amplitude or DC offset or the original signal may result in dramatically different...