*Waveshaping* is an audio processing technique that uses an input signal x(t) to drive a *transfer function* f(x). The transfer function's domain must cover the range of the input signal, i.e. if x(t) \in [-1, 1], then f(x) : [-1, 1] \rightarrow [a, b].

This technique is useful for soft clipping: one could employ a transfer function f(x) such that \lim_{x \rightarrow -\infty} f(x) = -1 and \lim_{x \rightarrow \infty} f(x) = 1. By using such a function, we can ensure that a driving signal never exceeds the dynamic range of our system. An example function that satisfies these constraints is arctan.

Waveshaping can be parametrized using a *waveshaping index* i(t), either a function or a constant. Given driving signal x(t), transfer function f(x) and waveshaping index i(t), waveshaping is defined as w(t) = f(i(t)x(t)).

The following is an audio example demonstrating Chebyshev polynomial waveshaping on a sinusoidal input. Chebyshev polynomials can be used to add partials to an input signal. Try changing the transfer function, oscillator frequency, and waveshaping index while looking at the spectrum analyzer to see the behavior.