Wavetable Oscillator

Type: Module

Category: Source

Updated: Jun 02, 2020

Manufacturer: Weevil

Contact Manufacturer


This module contains two wavetable oscillators sharing the same main pitch CV (can be offset by oscillator). Each oscillator has an audio out, there is also an mixed audio out with a knob to control the weight between oscillator A and B.

A couple of sample wavetables are included but the module supports wavetables in the standard formats (have been tested with wavetables from Ableton, Pigment, Hive, Icarus and waveeditonline). Free wavetables can be found here: https://waveeditonline.com/index-1.html

Individual control CV jacks for each oscillator (with attenuverters) are available for:

  • Pitch
  • Wave (wavetable position)
  • Effect 1 (default effect is PHASE)
  • Effect 2 (default effect is WIDTH)

The two effects (marked POWER and WIDTH as default) are wave read effects / horizontal transformations (modifies how the wave is read), available options are:

  • PHASE - normal phase position
  • WIDTH - compress half of the wavetable, expands the other half
  • SYNC - fake sync effect, compresses the wave and extends with itself
  • PAD - compresses the wave and extends with 0
  • POWER - similar to width but with a different distribution / curve
  • RSLTN - reduces the x-axis resolution of the wave

Stack, each oscillator can be stacked to up to 5 voices with the following controls:

  • STACK - the number of stacked voices
  • DETUNE - the amount of detune
  • WAVE - offset of wavetable position
  • WIDTH - offset of effect 1 (default is WIDTH)

To change wavetable you have three options: Select a wavetable from the dropdown above the graph (only a limited set of default wavetables) Drag a wavetable file (.wav) into the graph Click LOAD and select a wavetable file from the file system

If you load an external wavetable you need to select the resolution of the wavetable with the button next to the load button. Default value is 2048 (standard for most wavetables).

How the wavetable is scanned is defined by the button on the right below the graph, options are:

  • INTRPL - interpolated
  • STEP - steps between different frames in the wavetable

Both oscillator A and B supports syncing. Sync is defined by sync source:

  • EXT - external
  • PHASE - the phase of the other oscillator (when phase go from 1 to 0)
  • WAVE - the value of the other oscillator (whan wave value go from negative to positive)

And by sync option:

  • NONE - no syncing
  • HARD - reset phase
  • SOFT - reset phase if phase < x, x is set with the knob (0-1), setting this to 1 makes it HARD sync
  • BUMP - adds x to phase, x is set with the knob (0-1)
  • REV - reverse the oscillator
  • INV - inverts the oscillator provided the voltage jump is less than x, x is set with the knob (0-10V)

Anti-aliasing is implemented for the wavetable oscillator itself but sync and read effect will cause aliasing.

This is a first version of this module, I will need user feedback to make it better.

I have a small scripting language to create wavetables. Wavetables are stored as json files (fully supported in this release.) If you want to try that out, contact me (click on contact manufacturer above).

Updates in this version (1.1): Two more sync options (REV and INV). Knob to set sync amount to certain sync modes (SOFT, BUMP and INV). Oscillators not in use are turned off to save CPU. The load button remembers the folder you last used.