Wavetable Synthesis

Wavetable Synthesis

  • Idea: Save waveform, play it back when key is pressed

  • Memory issues

    • Needs lots of memory (not a problem anymore)

    • Memory access is slow (needs lots of cache)

  • Conceptual issues

    • Want note to last as long as key is held: looping is needed

    • May not have a wave for every key: pitch shifting is needed

    • Wave may have inappropriate envelope: envelope generation is desirable

    • May want to dynamicaly modify waveform: effects are desirable

Envelope: Attack, Decay, Sustain, Release

  • ADSR model is standard envelope description

    • Attack: short ramp-up at start of note

    • Decay: short ramp-down just after attack

    • Sustain: constant hold level when decay is complete

    • Release: short ramp-down after key is released

  • Often linear ramps, sometimes smoothed

  • Used in pretty much every kind of synthesis

Sustain and Looping

  • Want to maintain sustain level for as long as key is held down

  • Infinite time stretching is a thing

  • Techniques mentioned previously apply: usual is looping, i.e. time-domain stretching

  • Loop start and end may be marked manually, or can try to infer


  • Standard file format for wavetables, set up for synthesizer consumption

  • File format is immensely complicated, so use a library and think carefully about handling

  • "General MIDI" synthesizers are almost always this: standard GM soundfonts are readily available

Last modified: Thursday, 2 May 2019, 4:28 PM