A canonical waveterrain oscillator has two parts, the terrain and an orbit. The orbit traces a path across the terrain, with its elevation drawing out a signal over time.
Imagine a submarine searching for something at the bottom of the ocean. It maintains a fixed distance above the sea floor as it glides over seamounts and dives into trenches. The depth of the submarine is the signal output, and the sea floor is the terrain.
Inspired by the Richter Miniwave, SCANNER is a world of surfaces playing the role of the terrain; your system provides the orbit by way of a set of coordinate inputs.
A signal into just the X input instructs the submarine to travel back and forth due east and west. It will cross peaks and troughs, creating a signal. Connecting a source to the Y input will cause it to also travel along the north/south axis. The X and Y offsets shift its path to a different part of the search area.
In practice, the surface is generated from a pair of basis functions for the two dimensions. If you find the terrain concept hard to grasp, think of SCANNER as a pair of intertwined waveshapers, one for each input.
When an input reaches the edge of the map, it "bounces" off the edge, getting reflected back inside. This is akin to traditional wavefolding. The following image shows an example surface and 5 potential orbits. The brightness of the gradient represents the level of the surface at any given point.
The map is deformed along the Z dimension, allowing a signal to morph the surface itself.
The deformation occurs at a geological pace, so high frequency Z inputs aren't properly represented.
The JUMP input allows for an instantaneous change in the orbit, either by teleporting by the distance from your origin or reversing the direction of travel.
If you haven't yet, take a glance at this introduction of Via's controls, IO, and user interface.
X, Y, Z knobs offset the X/Y/Z position. Changing the offset changes the origin of the path, moving it to a different location on the map.
is a signal input for the Z dimension, controls the X dimension, and controls the Y dimension. The optional attenuators on and are particularly useful, scaling the range of the orbit in the X and Y dimensions. A full scale signal into either the X or Y inputs will fold over the edges of the map, so turning up the level of the CV is akin to turning up the level on a wavefolder.
JUMP changes the path of the orbit on a rising edge, according to the setting of the JUMP parameter.
S+H on the expander provides control of the sample and holds at the A and B inputs. They are sampled while that input is high and tracked while it is low.
The module scans 4 surfaces derived simultaneously from the same sources, with an output dedicated to each.
A X B represents the most complex, detailed surface. The level at the scan position is mapped to the A and B inputs in a crossfader configuration.
is smoother and less bright than the AXB output and is unaffected by the Z dimension and A/B inputs. It preserves the wavefolding effects imposed by the edges of the map.
is a scan of a one-bit representation of the main surface. The X and Y basis functions are combined using logical rather than algebraic operations.
uses the same logical operations on a more complex one-bit representation derived from the direction of change in the surface.
When not showing menu information, the LEDs are arranged to show you the current state of several aspects. The LED connected to the A and B inputs is illuminated whenever those inputs are being sampled. The LED connected to the output shows its state. The lower LEDs display the current MAP mode.
The RGB display shows the level of the scan CV inputs, with red for X, blue for Y, and green for Z.
Arrows and MAP
The direction arrows and MAP parameter modify the shape of the surface. As mentioned in the introduction, surfaces are constructed from a pair of basis functions, one for the X dimension and one for the Y dimension.
The logic outputs are computed using the same basis functions: for the output "true/high/on" is when the basis function is greater than 50% of full scale, and for the output "true/high/on" is determined by whether the basis function is sloped up or down.
The direction arrows page through the available basis functions; up and down select the basis function for Y, left and right for X.
The basis functions are combined into a surface according to the MAP parameter. The MAP modes include an algebraic map function derived from common blend modes for images and a logic operation for the 1-bit outputs: add(OR) , multiply(AND), difference(XOR), and lighten(>).
Together, these parameters set the shape of the surface.
A rising edge at the JUMP logic input causes an instantaneous change to the scan function. Mode (1), Reverse, switches the scan direction along both the X and Y axes. Mode (2), Teleport, restarts the scan from an origin set by the X and Y offsets. The diagram below shows a possible orbit (dashed line) interrupted by a jump (star). The arrows show the direction and location of travel before and after the jump.
- Slopes - Smooth tanh waveshaping morphs into a cliff, plateau, and peak.
- Hills - A steep slope followed by gentler hills with increasing number of hills.
- Physics World - A bouncing ball trajectory with increasing bounciness.
- Shapeshifting Range - Start with a simple slope and add peaks and valleys.
- Multiplier Mountains - An increasing number of sinusoidal slopes with steep dropoffs.
- Synthville - Samples of 2-op FM with increasing modulator frequency.
- Steppes - Staircases with 1 - 5 steps
- Blockland - Ascending patterns of 8 steps.
- Slopes - Exponential to logarithmic shaping.
- Hills - Evenly spaced peaks and valleys comprised of half sine waves.
- Physics World - Samples of the position of a model of a vibrating string.
- Shapeshifting Range - A trio of peaks change shape.
- Multiplier Mountains - An increasing number of linear slopes with steep dropoffs.
- Synthville - Samples from a modeled lowpass filter with increasing cutoff.
- Steppes - Bitcrushing from 1 - 5 bits.
- Blockland - Ascending and descending patterns of 16 steps.
The module ships with 6 presets with paired basis functions for X and Y. The MAP and JUMP parameters default to add and reverse respectively. Try an example patch for each at the link