Wavetable Oscillator

Manufacturer: Weevil

Contact Weevil


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.


Nov 25, 21

4 Stars

Packed with features and capable of loading .wav files, e.g. from 3rd party synths. I tested with Arturia Pigments' factory wavetables and they loaded flawlessly. The interpolation between waves is smooth. There seems to be some accounting for sudden wavetable jumps -- jumping between sine and square waves didn't cause any nasty transients.

The module comes with many ways to manipulate the signal beyond wave morphing. You can phase shift, wavefold, stretch part of the wave (shrinking the other part), shrink & zero-pad, and reduce the bit depth, among others. These are referred to as "effects" in the module, and all effects can be modulated. Unfortunately, none of these operations are bandlimited (as noted in the product description). In a future version, it would be nice to see bandlimited versions of these operations.

Another welcome feature -- the module has 2 fully-featured wavetable oscillators built-in, so you can build even bigger sounds, or modulate a crossfade between them.

For the most part, aliasing (with no effects) is nonexistent within 100 dB of the signal. However, some wavetables cause slight aliasing and/or interpolation error in the ballpark of -75 dB. The default "Basic Shapes" table is one of these. You can observe the aliasing clearly on a spectrogram with the "Wave" set all the way to square and a slow ramping of the pitch CV. But then the square of the "SINE BIT SQUARE" table is totally clean on the spectrogram! I'm not sure what gives.

The refresh rate on the waveform display seems to be about 5 Hz on my fairly powerful computer. This turns out to be a bigger deal than it might seem at first because if you are using any wave modulation, its really hard to tell just how deep the modulation is because the UI skips so many frames.

Overall this is a versatile module with tons of options, and generally high-quality sound output (sans effects). I recommend it if you are interested in using wavetable synthesis in your sounds.