home/ atoms/ band-limited-wavetables

Alias-free wavetable oscillators use a set of per-octave band-limited tables that drop harmonics as pitch rises

A single full-bandwidth sawtooth wavetable sounds clean at low pitches but aliases at high pitches, because harmonics above the Nyquist frequency (half the sample rate) fold back into the audible range. The fix is a set of band-limited subtables — one per octave, by analogy with graphics mip-mapping. The bottom subtable serves the lowest octave and holds the most harmonics (all still below Nyquist there); each higher octave switches to a subtable with roughly the upper half of its harmonics removed, so no harmonic ever exceeds Nyquist for the range in which its table is used. This continues up until the top table is a single sine wave. The oscillator picks the table for the current pitch and switches seamlessly (inaudibly) as pitch crosses octave boundaries, delivering alias-free output across the full range while keeping cheap linear interpolation viable. The cost is memory — about one table per octave; finer sub-octave tables improve quality at proportionally more memory.

Examples

At 44.1 kHz the lowest table carries harmonics up to ~22 kHz; the top-octave table is a near-pure sine. Starting from 368 harmonics in the bottom octave: 40–80 Hz uses 368, 80–160 Hz uses 184, 160–320 Hz uses 92, halving each octave until a lone sine remains.

Assessment

Explain why a single wavetable aliases at high pitches but not low ones. Describe the per-octave band-limited-table (mip-mapped) solution and how each subtable’s harmonic count is chosen as pitch climbs octave by octave.

“starting with a wavetable tailored to the lowest pitch we want to produce, and reducing harmonic content as we move up in pitch before it has a chance to fold back as aliasing at half the sample rate”
“dropping the upper half of our harmonics for each higher octave. The top table will be a sine wave, always”
corpus · a-wavetable-oscillator-part-2-anti-aliasing-and-mip-mapping · chunk 2