home/ atoms/ av-transfer-function-forms

AV mapping transfer functions are almost always affine (linear) or squared-exponential — linear for continuous motion, exp for onset-ish pop

Every a.fft[i]-to-visual-parameter mapping follows one of two canonical forms: affine linear base + gain · a.fft[i], used for parameters that should always be moving smoothly (rotation speed, warp depth, scroll rate); or exponential/perceptual base + gain · a.fft[i]², used when a parameter should stay near its base when quiet and jump on loud hits (scale pulse, threshold, feedback warp). The squared form compresses the low end — quiet passages barely register — and amplifies peaks, faking the feel of onset detection. The base term is always the floor at silence: it must produce an intentional-looking frame when a.fft = 0.

Examples

Rotation: () => 0.1 + a.fft[2] * 0.6 (linear — always spinning, faster on high-mid). Scale pulse: () => 1 + a.fft[0] * a.fft[0] * 0.6 (exp — quiet stays at 1, kick punches to ~1.6).

Assessment

Choose between linear and exp transfer functions for: (a) brightness driven by bass on a pad-heavy ambient track, (b) zoom pulse driven by bass on a 4/4 kick pattern. Justify each choice.

“A transfer function here is `out = f(a.fft[i])`, almost always the affine form `base + gain · a.fft[i]` (**linear**), or `base + gain · a.fft[i]²` (**exp/perceptual**, steeper — quiet stays quiet, loud pops).”
context/ · L2b-av-link/mappings.md · chunk 1