Wavetable

Generate audio from a wavetable, morphing between its frames.

What it does

Wavetable is an oscillator that plays back a stored waveform rather than a fixed shape such as a sine or saw. Source takes a single cycle of numbers, a stack of frames captured as an image (one row per frame), or a curve, and the waveform is read through at the chosen frequency. Left unwired, Source defaults to a plain sine.

Position scans through the stack of frames, so animating it morphs the timbre over time. Unison stacks multiple detuned copies of the voice and spreads them across the stereo field.

When to use it

ParameterTypeDefault
sourceOneOf([Signal, NumberArray, FieldOf(Raster), Curve])
frequencyNumber440
positionNumber0
amplitudeNumber1
phaseNumber0
unison_voicesNumber1
unison_detuneNumber10
unison_spreadNumber0.500
sample_rateNumber0
table_sizeString"2048"

Gotchas

When an image is the source, rows are read as frames and columns as samples across one cycle. Build or bake the frame stack with that layout in mind.

Sample Rate defaults to 0, which outputs one number per frame (control-rate) rather than an audio buffer. Set it to a real rate (44100, 48000, ...) for audio-rate buffers on the Buffer outputs.

The Buffer (L) and Buffer Right (R) outputs differ only when Unison Voices is above 1 and Unison Spread is above 0. With a single voice or no spread, both channels carry the same signal.

Worked example

  1. Add a Wavetable node. Leave Source unwired to start: it plays a sine at 440 Hz.

  2. Wire in a captured waveform image (rows = frames, columns = samples) to Source for a custom timbre.

  3. Animate Position from 0 to 1 to morph across the frame stack over time.

  4. Raise Unison Voices to 4-8 and set Unison Detune and Unison Spread for a wide, thick voice.

  5. Set Sample Rate to 48000 and connect Buffer / Buffer Right downstream for full audio-rate processing.

See also

Additive Synth · Envelope Follower · Granular · Numbers, signals & audio