Scanned Oscillator

Manufacturer: Weevil

Contact Weevil


The Scanned Oscillator uses scanned synthesis as its sound engine. Where most normal oscillator give you a static waveform (for example a sine wave or a saw wave) the scanned oscillator will give you a waveform that is constantly changing using basic laws of physics and base parameters that you define (and can control with CV).

You can view some sample patches here:

Tutorial and some presets here (free of course):

The csound manual have fairly concise description of the scanned synthesis:


Connect the audio outputs (marked L and R) to an amplifier. Or just R if you want mono.

Connect pitch CV to the V/CV input.

Now you have a few options:

  • Change the CENTER WAVE knob - this will give you a static wave.
  • Click on the TRIG button - this will set the wave in motion by offsetting all nodes in the wave, the shape of the offset is defines but the HAMMER WAVE knob
  • Click in the - make sure WAVE-button is selected in the set of buttons below the label WAVETABLE. This will offset the position of individual nodes.

The module has a ton of controls, to make it easy to start exploring what it can do the most impactful controls are colored blue.


The waveform is constructed from string of 128 nodes. Each node is connected to its two neighbors and to the center line (0V). After you set the nodes in motion (see the section above) the nodes will continue to slowly move and change the waveform until the nodes reach a state of equilibrium.

Each node is defines by a set of parameters:

  • MASS - the mass of the node.
  • DAMPING - the damping force applied to the node.
  • SPRING - the force between the node and the CENTER position.
  • TENSION - the force between the node and its neighbors.

A state:

  • POSITION - the vertical position of the node (the horizontal position of the node is always locked).
  • VELOCITY - the velocity of the node.

And they sit in an environment:

  • CENTER - the center position for this node (this is the position the node is pulled towards).
  • HAMMER - the position the node is moved to when the hammer is triggered.
  • NEIGHBORS - the nodes neighbors (this can be changed using the ORDER button, see the order section below).

The position and velocity of each node is constantly updated. The rate of the change if set with the RATE knob. The node is affected by four forces:

  • A force towards the center line, the strength of this force is based on the SPRING value of the node and the distance to the CENTER position.
  • A force towards its right neighbor node, the strength of this force is based on the TENSION value of the two nodes and the distance between the nodes.
  • A force towards its left neighbor node, the strength of this force is based on the TENSION value of the two nodes and the distance between the nodes.
  • A damping force that is based on the velocity and DAMPING of the node (this will make the node slow down over time).

The force on the nodes will change its velocity (and thus change the nodes position). The higher the MASS of the node is, the more force is required to change its velocity. This means that nodes with a high MASS will be less affected by its neighbors and will be less affected by the DAMPING force.


The controls for the environment and node parameters can be found below the waveform view.

The general level of the node parameters (called LEVEL and marked in blue) affects all nodes.

Both node and environment parameters can be set individually per node using a wavetable consisting of 4 frames. You change the position in the wavetable using the WAVE knob. You can also offset the wavetable horizontally using the OFFSET knob.

By default, the waveform view will show you the oscillator waveform (the current position of the nodes). To view a shape you need to click on the corresponding button below the SHAPES label above the waveform view. Now you can view the individual FRAMES by clicking on the frame number (1-4) or you can see the current value of the shape by clicking the LIVE button.

In LIVE mode you can see how both the WAVE knob and the OFFSET knob affects the shape waveform.

Offset moves the shape horizontally. You can change the offset mode by first selecting a shape and then clicking the button below the LIVE button (by default this will say WRAP). The available offset modes are:

  • OFFSET - offset the shape left or right. The left and right node values are repeated.
  • WRAP - offset the shape left or right. The values are wrapped.
  • WIDTH - change the width of the waveform.
  • TILT - tilts the waveform left or right.
  • STEPPED OFFSET - like OFFSET but stepped instead of gradual changes.
  • STEPPED WRAP - like WRAP but stepped instead of gradual changes.
  • STEPPED WIDTH - like WIDTH but stepped instead of gradual changes.
  • STEPPED TILT - like TILT but stepped instead of gradual changes.


To edit an individual frame in a shape wavetable you click on the corresponding button below the shapes label, after that select the frame by clicking on the frame number (if LIVE is selected, unselect that by clicking the LIVE button again). Now you can either manually update individual nodes in the waveform view or apply any of the edit macros on the right hand side of the waveform view.

Controls for editing the frame:

  • LEFT CLICK MOUSE (and drag) - sets the node value to the position of your mouse pointer.
  • RIGHT CLICK MOUSE (and drag) - sets the node value to 0.
  • MASK button (MSK1) - apply a mask to your changes MSK1 edits every node, MSK2 edits every second node, MSK3 edits every third node etc.
  • MASK offset button - applies an offset to the mask.
  • COL button - locks your editing to just one node (if you want to set a specific node and not accidentally change their neighbors).
  • LOCK - locks the frame, no changes applied until you unlock the frame by clicking the same button again.

The LOAD button lets you load existing waveforms into your frame, load options are:

  • STANDARD WAVE - load a standard wave (SIN, SAW, SQR etc.)
  • COPY FRAME - copy the wave from an existing FRAME
  • SINGLE CYCLE WAVEFORM - load a single cycle waveform
  • SINGLE CYCLE WAVEFORM (NORMALIZED) - load a single cycle waveform, this waveform will be normalized (cut silence from start and end, scale up to +/- 5V)

The controls for loading and saving shapes are:

  • LOAD - loads a shape
  • SAVE - saves the current shape
  • PRV - loads previous shape (of the same type: standard wave, copied frame or single cycle waveform)
  • NXT - loads next shape (of the same type: standard wave, copied frame or single cycle waveform)

The edit waveform macros are:

  • UP - move all nodes up
  • DOWN - move all nodes down
  • LEFT - move all nodes left
  • RIGHT - move all nodes right
  • INC - increase all node values by 5%
  • DEC - decrease all node values by 5%
  • HCTR - move all nodes towards the center
  • HEXP - move all nodes towards the edges
  • HINV - horizontal invert (reverts the wave)
  • VINV - vertical invert (flips the wave upside-down)
  • MIRL - mirror left, copies the left side of the wave onto the right side of the wave
  • PINV - partial invert, take a random section and invert it
  • SMTH - smooth the wave
  • NOISE - add random noise
  • MUT - apply random edits
  • RNDM - randomize a new waveform
  • RST - resets the waveform
  • CLR - clears the waveform (sets all values to 0)


The hammer is used to set the nodes in motion. With low DAMPING and low RATE you will add energy (a lot of change) to the sound, with high DAMPING and high RATE you can use the hammer to create plucked sounds. The hammer is triggered with the TRIG button or by sending a GATE or TRIG signal to the TRIG input.

HAMMER WAVE and OFFSET controls like the other SHAPES, it also support a couple of extra controls:

  • STR - strength sets how much the nodes are offset by the hammer strike (or how much velocity is applied to each node if you use STRIKE mode)
  • ATT - sets the attack speed
  • PRB - sets the probability of each node being affected by the strike. Lower probability means not all nodes will be affected, this will give you more chaotic and noise sounds.

You can set the hammer mode with a button in left section below the label HAMMER. The supported modes are:

  • PLUCK- sets the node to the hammer position (ATT sets the transition speed from current position to hammer position).
  • STRIKE - set velocity of the node towards the hammer position.
  • HOLD - sets and holds the node to the hammer position until TRIG is released (ATT sets the transition speed from current position to hammer position).
  • STRUM - sets the node to the hammer position node by node from left to right (ATT sets the left to right speed).
  • CYCLE STRUM - like STRUM but continuously re-trigger STRUM until TRIG is released.


The filter works like the other shapes described above, but instead of affecting the nodes directly its applied when the node positions are converted to sound. The filter lets enhance and/or reduce all overtones of the wave individually. At the far left you find the fundamental frequency, every bar to the left of that is a factor of the fundamental frequency (so if the pitch is 220Hz, the second bar is 440Hz, the third bar is 660Hz etc.) If you set the position in the middle the overtone will be unaffected, by moving the bar down you reduce the amount of the overtone, by moving it up you increase the amount.

The AMOUNT knob lets you set how much the filter affects the wave, at 0 you get no filtering, at 1 you get the fully filtered wave. By default the AMOUNT is set to 0, you need to increase this to hear any effect of the filter.

The OFFSET knob can be used like a cutoff knob of a normal filter (try the different offset modes). If you try to use this as a normal filter, you will be disappointed (the normal filter modes like Syrup does a much better job here). You can however use this to shape the sound drastically (similar to additive synthesis). Try modifying a filter frame with the MASK at 2 to enhance or decrease the even frequencies.


At the top of the general section you find the usual pitch controls:

  • OCT - sets the octave of the selected oscillator. At -6 (all the way to the left) LFO mode is enabled, see below.
  • SEMI - sets semitone offset from -7 to +7 semitones.
  • FINE - fine tune between -1 and +1 semitone.

LFO mode is enabled by setting the OCT knob to -6. This turns the oscillator into a tempo synced LFO. FINE acts as a multiplier to the tempo, each step above 0 multiplies the tempo by 2 and each step below 0 divides it by 2. At 120 bpm you get a range of approximately 0.016Hz to 256Hz. This can be further brought down by using the inner and outer multipliers. In LFO mode the pitch / temp is not affected by the V/CV input, you can still change this with the assignable CV input.

Next to the pitch controls you find the RATE knob, this sets the change rate of the nodes. A low value will give you a slowly evolving sounds, a high value will give snappier decays and emphasize the spring like sounds.

The NOISE section lets you add random offsets of the nodes. The CHANCE knob defines how often this happens (at 0 no noise is applied.) The AMOUNT knob sets much a node is offset. You can set the type of noise with the button below the chance knob, the available options are:

  • NONE - no noise is applied.
  • CENTER - move the node towards the CENTER position.
  • HAMMER - move the node towards the HAMMER position.
  • OFFSET - move the node randomly from its current position.

The WAVE section handles drive and offset. The DRIVE knob amplifies the output up to a factor of around 60, the button below defines how extreme values are handled. The available options are:

  • NONE - no waveshaping applied (to avoid extreme values it still clips signals beyond +/- 15V).
  • CLIP - clips signal beyond +/- 5V.
  • SATURATE - saturates the signal (atan).
  • FOLD - folds the signal in on itself beyond +/- 5V.
  • EXPAND - scales down the entire wave to never go beyond +/- 5V.
  • ADJUST - centers the wave around 0V, after that its scaled down the entire wave to never go beyond +/- 5V.

The EXPAND and ADJUST can be used as an extreme compressor to enhance the small variation in node values when the initial trigger has subsided.

The OFFSET knob and button works just like the offset controls for the shapes described above. By default this is set to WRAP, for the wave that is the same as phase. You can use the CV input marked OFFSET to apply phase modulation (FM) to the wave. For a detailed description of the available offset modes, see the SHAPES section above.

The STEREO knob and button lets you set the stereo amount and mode. In the

  • OFF - stereo is off.
  • PHASE - apply phase offset (36 degrees) between the left and the right channel. The phase offset can be controlled with the CV parameter STEREO OFFSET.
  • PITCH - apply pitch offset (0.15 semitones) between the left and right channel. The phase offset can be controlled with the CV parameter STEREO OFFSET.

The stereo knob defines the weight of the two signals between the left and the right outputs. At 0.5 the weight is the same and the stereo effect will disappear.

The SUB knob and button adds a sub oscillator that sits either one or two octaves below the oscillator pitch. The knob sets the sub oscillator volume and the button sets the octave offset.

The HAMMER button is described in the hammer section above.

The RCLC (recalculation rate) sets how often the node positions are recalculated into the waveform that produces the sound. The available options are:

  • NODES - update frequency is the same as the node count (the node count is set in the row below)
  • 128 - update every 128 samples
  • 256 - update every 256 samples
  • ...
  • 16384 - updates every 16384 samples

COUNT lets you set the node count (from 8 to 256 nodes), by default node count is 128.

The ORDER button lets you set how the nodes are connected to each other. How the nodes are connected affects how a wave propagate between the nodes (since each nodes position is affected by its two neighbors), the higher the TENSION value is the stronger effect this will have on the wave. The available order options are:

  • WRAP - this is the default option. Each node is connected to the node directly to its left and directly to its right. The end nodes (leftmost and rightmost) are also connected.
  • OPEN - like WRAP but the leftmost and rightmost nodes are not connected, they can move freely.
  • ANCHOR - like WRAP but the leftmost and rightmost nodes are not connected, instead they are anchored to the CENTRE line.
  • ANCHOR LEFT - a mix of OPEN and ANCHOR. The leftmost node is anchored to CENTRE, the rightmost node is free.
  • MIRROR - nodes are mirrored around the mid point.
  • INTERLOCKED - maximize distance between each node.
  • DUAL WRAP - the first half of the node set is one independent WRAP, the second half of the node set is another independent WRAP.
  • DUAL INTERLOCKED - two independent INTERLOCKED sets one node apart.
  • MULT 3 - each node is connected to the node 3 steps away.
  • MULT 5 - each node is connected to the node 5 steps away.
  • MULT 7 - each node is connected to the node 7 steps away.
  • MULT 11 - each node is connected to the node 11 steps away.
  • MULT 13 - each node is connected to the node 12 steps away.
  • MULT 17 - each node is connected to the node 17 steps away.
  • MULT 19 - each node is connected to the node 19 steps away.
  • MULT 23 - each node is connected to the node 23 steps away.
  • MULT 29 - each node is connected to the node 29 steps away.
  • RAND - randomize node order.

Explaining how the nodes are connected is a bit tricky. The easiest way to understand is to take small node-set (32), set damping to 0.75 and tension to 0.75 and test by clicking on nodes in the WAVE view.


The oscillator have 4 assignable trigger inputs and 12 assignable CV inputs. Most CV target are control rate, not audio rate, if audio rate is supported this is marked with AUDIO RATE.

Trigger inputs can be triggered either by clicking the button or by sending in a GATE or TRIG signal. The available trigger options are:

  • NONE - no trigger effect
  • TRIGGER HAMMER - trigger the hammer
  • DAMPEN - sets damping really high until the total energy of the wave is close to 0.
  • TOGGLE FREEZE - when freeze is on the wave calculation is stopped (see RCLC under GENERAL).
  • DRAW WAVE - trigger DRAW mode (see DRAW WAVE below)
  • RECALCULATE - if this option is selected the automatic wave calculation is turned off (see RCLC under GENERAL). Instead you trigger recalculation by by sending a GATE or TRIG to the trigger input.
  • HARD SYNC - hard sync (AUDIO RATE)
  • RANDOMIZE ORDER - set a random node order option.

Each assignable CV group consists of a CV target (you change CV target with the triangle button next to the target name), an input and an attenuverter (-1 to 1). The available CV targets are:

  • NONE
  • RATE


You can manipulate the nodes directly using the mouse in the waveform view (just click on the WAVE button under the SHAPES label and draw something in the waveform view). Using the DRAW WAVE trigger input, the DRAW X POSITION CV and the DRAW Y POSITION CV you can automate this.

  • DRAW X POSITION - decides the target node
  • DRAW Y POSITION - decides the node value
  • DRAW WAVE - set the node X to the value Y


  • PHS - phase out, can be used to sync other oscillators or to sync an oscilloscope
  • L - left audio out
  • R - right audio out

If you have questions or suggestions, pleas reach out using the "Contact Manufacturer" link above.


May 21, 22

Unusual and brilliant.

One of the most impressive VM modules I've come across - a huge amount of scope for creating interesting timbres.

Genuinely exciting to dig into everything this has to offer, but so far I'm getting everything from convincing acoustic, gnarly basses, classic FM, through to truly amazing other-worldly FX.

The way this has been made is as impressive as the sounds it's capable of making - amazing stuff!