home/ modules/ wavetable-and-scanned-synthesis

Wavetable synthesis: scanning single-cycle frames for evolving timbre

  • learner can explain wavetable mechanics — single-cycle frames, index increment, interpolation, and pitch control
  • learner can create evolving timbres by scanning, crossfading, and morphing between wavetable frames
  • learner can avoid wavetable aliasing with band-limited, per-octave harmonic scaling

Build a wavetable oscillator patch that morphs from a hollow to a bright timbre over a note by scanning its frames, keep it alias-free across a two-octave range, and describe the index-increment and interpolation math involved.

Wavetable oscillators are the workhorse of modern electronic sound design — the moving, breathing pads of melodic techno, the snarling basses of bass music, the animated leads a live coder sweeps mid-set. This module builds one whole skill: making a note’s timbre travel from hollow to bright by scanning frames, on a rig you actually own — Surge XT or Serum for knob-driven work, Pure Data or SuperCollider when you want the algorithm under your fingers on stage.

The arc starts supported. First, hear the core idea concretely: a wavetable as a flipbook of single-cycle frames, and pitch as nothing more than the step size through a stored cycle. A guided first exercise wires “a wavetable oscillator scales a phasor by the table size” in Pd, then turns the morph knob in Surge (“scanning frames via a Morph parameter”) to feel timbral motion before doing any math. The middle of the module drills the machinery until it is automatic — the fL/fs index increment, the full signal-flow chain from increment through fmod wrap to lookup, and the interpolation strategies that tame the fractional index. The final stretch removes the scaffolding: aliasing at high pitches is diagnosed by ear, then fixed with per-octave band-limited tables and pitch-scaled harmonic counts — exactly what the capstone demands across its two-octave range.

The required atoms are the gate: without frame scanning, crossfading, increment math, and band-limiting, the capstone patch either sits static or aliases. Supporting atoms widen the craft — SuperCollider’s Osc/VOsc route for live coders, Serum warp tricks and Surge’s Window and Twist oscillators for color, variants like static position-as-tone and multi-cycle concatenation, table-sizing conventions, and the sampling and hearing-limit connections that place wavetables in the broader synthesis map.

Runnable examples

Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.

saturation-drive

d1 $ sound "bd*2" # shape 0.4

tidal-0033 · CC0

{ (SinOsc.ar(110) * 5).tanh * 0.2 }.play

supercollider-0009 · CC0

formant-vowel

note("<c3 e3 g3>").vowel("<a e i o>")

strudel-0036 · CC0

d1 $ note "c e g" # sound "supersquare" # vowel "a e i"

tidal-0035 · CC0

additive-synthesis

{ Klang.ar(`[[100, 200, 300, 400], [0.4, 0.3, 0.2, 0.1]]) * 0.1 }.play

supercollider-0022 · CC0

Atoms in this module

Required — these gate the capstone

Wavetable synthesis stores one cycle of a waveform and replays it at a variable rate to set pitch
Concept L1 Foundations BE
A wavetable is a collection of single-cycle waveforms that can be scanned sequentially to animate a sound's timbre
Concept L1 Foundations B
Wavetable oscillators control pitch by varying the step size through a stored single-cycle waveform
Concept L2 First instrument B
The index increment fL/fs replaces per-sample sine computation with a single add per sample
Concept L2 First instrument B
A wavetable oscillator scales a phasor by the table size to index a stored waveform array
Concept L2 First instrument B
Wavetable lookup needs interpolation because the fractional read index rarely lands on a stored sample
Concept L2 First instrument B
The wavetable synthesis signal flow is: index increment → running index → fmod wrap → lookup → amplitude envelope → output
Procedure L2 First instrument B
Wavetable synthesis scans across up to 512 single-cycle frames via a Morph parameter to create evolving timbres
Concept L2 First instrument B
Wavetable crossfading morphs timbre over the course of a note by blending between stored waveforms
Concept L2 First instrument B
Mixing several wave tables at once with modulated weights lets a wavetable oscillator morph timbre continuously
Concept L2 First instrument B
A fixed wavetable aliases at high pitches when its harmonics exceed the Nyquist frequency
Concept L2 First instrument B
Alias-free wavetable oscillators use a set of per-octave band-limited tables that drop harmonics as pitch rises
Concept L3 Craft B
A wavetable oscillator must reduce its harmonic count as pitch rises
Principle L3 Craft B

Supporting — enrichment, not gating

The wavetable position knob selects a static timbral color when left fixed, not just an animation start point
Concept L2 First instrument B
Concatenating several wave tables into one lengthens the base period and lowers the fundamental N-fold
Concept L2 First instrument B
Wavetable lengths are rounded up to a power of two for FFT and binary-index efficiency
Principle L3 Craft B
Sampling is wavetable synthesis with the stored period extended to a full recorded note rather than one cycle
Concept L2 First instrument BC
Wavetable synths can sound digital and thin, lacking the mid-range warmth of analog oscillators
Concept L2 First instrument B
Capping wavetable harmonics at the limit of hearing rather than Nyquist saves memory
Principle L3 Craft B
Applying waveshaping distortion inside the oscillator warp stage creates harmonically richer, fatter timbres
Concept L3 Craft B
Applying a per-oscillator LPF or HPF warp lets two oscillators share frequency space without clashing
Procedure L3 Craft B
Surge XT's Window oscillator multiplies a wavetable by a window waveform, creating formant-like timbres
Concept L3 Craft B
Surge XT's Twist oscillator ports the Mutable Instruments Plaits macro oscillator with 16 selectable synthesis models
Concept L3 Craft B
SuperCollider's Osc UGen requires a buffer in wavetable format, not a plain Signal
Concept L3 Craft B
VOsc morphs between two or more wavetables in adjacent buffers using a floating-point buffer index
Concept L3 Craft B
BufRd reads a Buffer at any frame index, enabling sinusoidal, noise-driven, and custom playback paths
Concept L3 Craft BF
Signal.sineFill creates additive synthesis wavetables by specifying partials as an amplitude array
Procedure L3 Craft B