Waveshaper

In electronic music, waveshaping is a type of distortion synthesis in which complex spectra are produced from simple tones by altering the shape of the waveforms.

Uses
Waveshapers are used mainly by electronic musicians to achieve an extra-abrasive sound. This effect is most used to enhance the sound of a music synthesizer by altering the waveform or vowel. Rock musicians may also use a waveshaper for heavy distortion of a guitar or bass. Some synthesizers or virtual software instruments have built-in waveshapers. The effect can make instruments sound noisy or overdriven.

In digital modeling of analog audio equipment such as tube amplifiers, waveshaping is used to introduce a static, or memoryless, nonlinearity to approximate the transfer characteristic of a vacuum tube or diode limiter.

How it works
A waveshaper is an audio effect that changes an audio signal by mapping an input signal to the output signal by applying a fixed or variable mathematical function, called the shaping function or transfer function, to the input signal (the term shaping function is preferred to avoid confusion with the transfer function from systems theory). The function can be any function at all.

Mathematically, the operation is defined by the waveshaper equation
 * $$y = f(a(t)x(t))$$

where f is the shaping function, x(t) is the input function, and a(t) is the index function, which in general may vary as a function of time. This parameter a is often used as a constant gain factor called the distortion index. In practice, the input to the waveshaper, x, is considered on [-1,1] for digitally sampled signals, and f will be designed such that y is also on [-1,1] to prevent unwanted clipping in software.

Commonly used shaping functions
Sin, arctan, polynomial functions, or piecewise functions (such as the hard clipping function) are commonly used as waveshaping transfer functions. It is also possible to use table-driven functions, consisting of discrete points with some degree of interpolation or linear segments.

Polynomials
A polynomial is a function of the form

$$ f(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_2 x^2 + a_1 x + a_0 = \sum_{n=0}^{N}a_nx^n $$

Polynomial functions are convenient as shaping functions because, when given a single sinusoid as input, a polynomial of degree N will only introduce up to the Nth harmonic of the sinusoid. To prove this, consider a sinusoid used as input to the general polynomial.


 * $$\sum_{n=0}^{N}a_n(\alpha \cos(\omega t + \phi))^n $$

Next, use the inverse Euler's formula to obtain complex sinusoids.


 * $$\sum_{n=0}^{N}a_n \Bigg(\alpha \frac{e^{j(\omega t + \phi)}+e^{-j(\omega t + \phi)}}{2}\Bigg)^n

= a_0 + \sum_{n=1}^{N}\frac{a_n \alpha^n}{2^{n-1}}\frac{(e^{j(\omega t + \phi)}+e^{-j(\omega t + \phi)})^n}{2}$$

Finally, use the binomial formula to transform back to trigonometric form and find coefficients for each harmonic.


 * $$a_0 + \sum_{n=1}^{N}\Bigg[{\frac{a_n \alpha^n}{2^{n-1}} \sum_{k=0}^{n} {{n \choose k} \frac{e^{j(n-k)(\omega t + \phi)}e^{-jk(\omega t + \phi)}}{2}}\Bigg]}

=a_0 + \sum_{n=1}^{N}\Bigg[{\frac{a_n \alpha^n}{2^{n-1}} \sum_{k=0}^{n} {{n \choose k} \frac{e^{j(n-2k)(\omega t + \phi)}}{2}}\Bigg]} $$ $$ =a_0 + \sum_{n=1}^{N}\Bigg[{\frac{a_n \alpha^n}{2^{n-1}} \sum_{k=0}^{\lfloor n/2 \rfloor} {{n \choose k} \cos {((n-2k)(\omega t + \phi))}}\Bigg]} $$

From the above equation, several observations can be made about the effect of a polynomial shaping function on a single sinusoid:


 * All of the sinusoids generated are harmonically related to the original input.
 * The frequency never exceeds $$N\omega$$.
 * All odd monomial terms $$x^n$$ generate odd harmonics from n down to the fundamental, and all even monomial terms generate even harmonics from n down to DC (0 frequency).
 * The shape of the spectrum produced by each monomial term is fixed and determined by the binomial coefficients.
 * The weight of that spectrum in the overall output is determined solely by its $$a_n$$ coefficient and the amplitude of the input by $$\frac{a_n \alpha^n}{2^{n-1}}$$

Problems associated with waveshapers
The sound produced by digital waveshapers tends to be harsh and unattractive, because of problems with aliasing. Waveshaping is a non-linear operation, so it's hard to generalize about the effect of a waveshaping function on an input signal. The mathematics of non-linear operations on audio signals is difficult, and not well understood. The effect will be amplitude-dependent, among other things. But generally, waveshapers—particularly those with sharp corners (e.g., some derivatives are discontinuous) -- tend to introduce large numbers of high frequency harmonics. If these introduced harmonics exceed the Nyquist limit, then they will be heard as harsh inharmonic content with a distinctly metallic sound in the output signal. Oversampling can somewhat but not completely alleviate this problem, depending on how fast the introduced harmonics fall off.

With relatively simple, and relatively smooth waveshaping functions (sin(a*x), atan(a*x), polynomial functions, for example), this procedure may reduce aliased content in the harmonic signal to the point that it is musically acceptable. But waveshaping functions other than polynomial waveshaping functions will introduce an infinite number of harmonics into the signal, some which may audibly alias even at the supersampled frequency.