Wavetable Oscillator

Type: Module

Category: Source

Updated: Aug 01, 2021

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)
  • Effect 3 (default effect is NONE)


The two first effects slots (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

The third effect slot (marked NONE) is a simple waveshaper with five options:

  • NONE - no effect
  • SKEW UNI - above 0.5 saturates the signal, below 0.5 does the opposite
  • SKEW BI - similar to SKEW UNI but change the distribution between 5V and -5V
  • CLIP - below 0.5 it reduces amplification, above 0.5 amplifies and clips the signal
  • FOLD - below 0.5 it reduces amplification, above 0.5 amplifies and folds the signal


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

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).


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 (when 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)
  • TRG - triggers a set number of waveform cycles (use the knob to the right of the sync buttons to set the number of cycles)
  • STRG - triggers one cycle if phase < x, x is set with the knob (0-1), setting this to 1 makes it HARD sync

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


You find all outputs at the botton of the module:

  • Output A - output of oscillator A
  • Output B - output of oscillator B
  • Mix - mixed output of A and B, set mix with the mix knob. This can be automated with the assignable CV at the bottom right of the module.
  • Mod - mod output, applies a modulation effect between A and B (see list below). The knob let you mix between the mix output and the mod output. This can be automated with the assignable CV at the bottom right of the module.

To change the mod type you can click on the arrow above the mod output, the available options are:

  • RING MODULATION - ring modulation between current value and mod value
  • AM RECTIFY - amplitude modulation between current value and the absolute value of the mod value
  • AM OFFSET - amplitude modulation between current value and the a scaled up positive only mod value

Change log

Updates in 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.

Updates in version (2.0):

  • Better support for randomize controls
  • Canvas updated to support high res
  • Canvas drawing updated to use less CPU

Updates in version (3.0):

  • Wavetable data is saved in the preset (earier version only saved a reference to the wavetable file), makes it easier to move presets between computers.
  • Added effect slot 3 with waveshape effects.
  • Added MOD output.
  • Added assignable CV input to control sync value, mix or mod.
  • Two additional sync options: TRIG and SOFT TRIG.
  • Update UI to be more aligned with my newer modules.