Band-limited morphing oscillator with hardsync.
Sine-saw-square-pulse shapeshift using 2 CV/knob controls.

Clip + Skew = waveform

Change waveform freely between sine, saw, square and pulse.
Current shape is shown in waveform display.
Clip controls "squareness"; Skew sets left-right symmetry, eg for left/right-facing saw and squarewave.
CV in for clip/skew is added to knob values.

Frequency, FM

Frequency knob range 0-2000 Hz.
FM CV in is exponential, up to 1.2V/oct depending on sensitivity knob.

Out and Out+

The 2 output jacks are 2 squinewave oscillators where out+ has:

  • Small drifting frequency offset (slightly sharp tuning).
  • Inverted skew value = mirrored shape.

The separate signals are useful for stereo separation (esp with hardsync).
The combined signals of out and out+ is a phasing wave with pad character.

Sync in

High input will cause a very quick sweep to restart cycle. (0-20 samples dep on phase)

Sync outputs

The 2 sync outputs emit high value exactly 1 sample per cycle, else 0.
The left belongs to out, the right to out+ oscillator.
Sync signals are slightly offset, useful for stereo and micro-delay effects.

Band-limited how?

Not by filtering!
But you can often skip a lowpass filter after output, since lower Clip dampens high frequencies.

  • There are no angled edges, only sine sweeps. Square, pulse and saw edges are sharp, but not clicks.
  • All waveform sweeps have minimum rise/fall length of 4-13 samples (randomly set when created).
  • In result, the waveform "degrades" to sinewave in higher frequency range, including under FM.
  • Hardsync sweeps are click-like just below the highest possible frequency, but still band-limited.

You can still create trashy crackling by feeding bad control signals to inputs.


  • Guarantee: If you only use smooth sine or squinewave control inputs, the signal is bandlimited in almost all configurations, including high-index FM.
  • If you use squinewaves to control other band-limited oscillators, the signals should be bandlimited.
  • Hardsync from another oscillator signal at high rate can cause growling sound depending on frequency range. This is due to sync signal detected at sample resolution, which interfers with source frequency. The syncs could be triggered at eg 200, 201, 200, 200, 201... etc sample intervals.
    You may avoid or actively seek this effect!