Poly Wavetable Oscillator

Type: Module

Category: Source

Updated: Jun 07, 2020

Manufacturer: Weevil

Contact Manufacturer


This is a polyphonic version of the weevil wavetable oscillator.

Warning, this is a CPU heavy module, see notes below.

Outputs are found in the lower left area of the module. The top out is for Oscillator A and the bottom out for Oscillator B. Each oscillator also have a corresponding Square output, this is added to allow syncing with other modules but can of course be used as a normal square wave as well (this is not affected by wave read effects like width and phase.) Next to square you find the mix output.

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 (mono and poly) for each oscillator (with attenuverters) are available for:

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

For each control, the top row controls oscillator A and the bottom row controls Oscillator B.

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

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). If you dont know the length you can use the AUTO option, this will try to calculate the resolution (not always accurate).

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

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)

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)

Mix, stack and sync amount dont have dedicated CV ins but next to Mix you will find four assignable CVs (two mono and two poly), use the button under the knob to select target for the CV.

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

CPU, you will most likely not be able to use it with both oscillators using 5 stacked voices with 16 voice polyphony. To reduce CPU impact, think of the following: If you only need one oscillator, use that output instead of the mix output. Avoid (or reduce) stacking.

To make it a little bit more efficient the module only support full audio rate modulation for phase and pitch. All other CV's are measured every 50 samples.