Complex FM / Wavetable Oscillator


Dexter is a complex, 4 operator wavetable oscillator with DX style frequency modulation (FM) and extensive control possibilities. Its large number of possibilities and options enables it to produce a wide range of complex sounds, textures and timbres.



FM synthesis is a technique that is often shied away from due to its apparent complex nature and unfamiliar parameters. This perception usually stems from the bad interface design in the synthesiser that popularised the technique in the 1980s, the Yamaha DX7.

Dexter approaches FM synthesis from a usability perspective, as in all the parameters are brought out and made accessible to the user. It employs the traditional 4 operator, algorithmic approach with some neat twists, such as wavetables, phase distortion and sync in order to broaden the sonic pallet of FM synthesis. Sometimes it can be mellow, pristine and chilled, however with a simple knob twist it can becoming growling, snarling and noisy. Almost all of the parameters can be modulated by control voltages, allowing for easy exploration of FM, leading to new sounds and possibilities.

User Guide

Master Controls

The master controls are the main go-to controls in Dexter for basic parameters such as tuning, chords, algorithm selection and overall shape and brightness.

Master controls


An algorithm describes how each operator modulates and synchronises another, and to which output they are directed to, via a routing matrix. It can be thought of as a recipe for a particular type of sound, as algorithms are often optimised for particular timbres e.g. metallic, brassy, smooth, vocal etc. Dexter offers 23 algorithms where 12 of these share operators for both voices A and B, and the remaining 11 dedicate operators to either A or B allowing for independent timbres from each voice.

1 2 3 4 5 6 7 8 9 10 11 12
Algorithm 1
Algorithm 2
Algorithm 3
Algorithm 4
Algorithm 5
Algorithm 6
Algorithm 7
Algorithm 8
Algorithm 9
Algorithm 10
Algorithm 11
Algorithm 12

13 14 15 16 17 18 19 20 21 22 23
Algorithm 13
Algorithm 14
Algorithm 15
Algorithm 16
Algorithm 17
Algorithm 18
Algorithm 19
Algorithm 20
Algorithm 21
Algorithm 22
Algorithm 23

By default, the algorithms also determine the synchronisation source for each operator, where operators synchronise to their parent operator. This can be changed in the context menu to “neighbour” where an operator syncs to the operator to its right on the panel i.e. 1 → 2 , 2 → 3 and 3 → 4.


Dexter features 4 operators shared between two “Voices”, A and B. Voice A is able to output chords of up to 7 notes spread across stereo outputs (A L and A R), whilst Voice B outputs a mono signal from “B Out”. Both voices can be independently tuned allowing for multi-timbral patches. The individual operators outputs, OP 1 to 4, tap a signal directly from an operator of either Voice A or B regardless of the chosen algorithm.

Below is a diagram of the controls common to each operator:

Operator controls


Wavetable Menu

This menu allows you change the operator’s wavetable (or bank), and the sync and phasor shaping modes / methods.

Wavetable menu

Dexter features 35 different wavetables, providing a vast pallet of timbres and textures to work with. By default the “Opal” table is loaded, but this can be changed by going to the “Wavetable” page in the settings menu, and turning the blue wavetable knob to select another table. The following list gives a description about each table.

Wavetable NameDescription
Opal: Based on the waves from a chip used in an early 90’s PC soundcard
Basic: Sine, Triangle, Sawtooth and Pulse with PWM.
TeeEks: Waves from a popular 1U rack unit FM synthesiser.
SinHarm: Sine wave that increases in harmonic pitch.
AddSin: Sine wave with harmonic overtones that increase with pitch.
AMHarm: Sine wave that increases in harmonic pitch but also amplitude modulated with another sine wave.
SwpHarm: Sine wave that increases in harmonic pitch but also amplitude modulated with a falling ramp wave. Mimics a resonant filter sweep.
AddSaw: Additive synthesis of a sawtooth wave using an increasing number of partials.
AddSqr: Additive synthesis of a square wave using an increasing number of partials.
AddBank: Waveforms generated from partials with random harmonics.
Oboe: Single cycle wave snippets of an oboe.
Sax: Single cycle wave snippets of a saxophone.
Cello1: Single cycle wave snippets of a cello.
Cello2: Single cycle wave snippets of a cello.
Violin: Single cycle wave snippets of a violin.
Piano: Single cycle wave snippets of a piano.
OvrTne1: Soft yet rich in harmonic overtones.
OvrTne2: Soft yet rich in harmonic overtones.
Sym: Symmetrical above and below the 0V line.
Chip1: Lo-fi computer tones.
Chip2: Lo-fi computer tones.
BitCrush1: Bank of heavily bitcrushed waveforms.
BitCrush2: Bank of heavily bitcrushed waveforms.
Voice1: Softer, choir vocal tones.
Voice2: Richer, choir vocal tones.
Voice3: Vowel tones.
Voice4: Vowel tones.
Voice5: Nasal vocal tones.
PWM: Pulse width modulated square wave.
BiPls: Square wave that is gradually “pinched” to middle of the wave cycle.
SawGap1: Saw wave with a gradually increasing gap in the middle of the wave cycle.
SawGap2: Saw wave that is gradually “pinched” to middle of the wave cycle.
VGame: Collection of lo-fi video game type waveforms.

The following lists show the different phasor shaping and operator sync modes.

Shape ModeDescription
BendThe phasor is dragged to one side from the middle so that the 1st half of the table is read faster than the last half.
TiltThe phasor reads the table faster and then waits at the end until a new cycle begins
LeanThe phasor follows a curve, so the table is initial read slowly then gradually faster towards the end of the cycle
TwistTwists the middle third of the phasor around the centre, making read the table forwards, backwards, then forwards again
WrapThe end of the phasor is wrapped back to the beginning several times, creating an effect similar to classic hard sync
MirrorBoth ends of the phasor are mirrored when either reaches the start or end
ReflectAt a given point, the phasor is switched from an rising ramp to a falling ramp
PulseThe phasor is switched off an on at several positions, giving a type of PWM effect
Step 4Blends the phasor into a 4-step staircase, creating a very lo-fi, bit crushed sound
Step 8Same as above but with an 8-step staircase
Step 16Same as above but with an 16-step staircase
Var StepGradually makes the phasor increasingly stepped until it dissapears completely
Sync ModeDescription
HardClassic hard sync effect where the phasor restarts from the beginning
5thReads the table at 1.5x speed until another sync event occurs, where it will return to 1x
+1 OctReads the table at 2x speed until another sync event occurs, where it will return to 1x
-1 OctReads the table at 0.5x speed until another sync event occurs, where it will return to 1x
Rise 1A value of 0.5 is added to the read speed until it reaches 2x, where it after it will return to 1x
Rise 2A value of 0.5 is added to the read speed until it reaches 4x, where it after it will return to 1x
Fall 1Same as Rise 1 but in reverse
Fall 2Same as Rise 2 but in reverse
Pull 1Is pulled back by 1/2 a cycle
Pull 2Is pulled back by 1/4 a cycle
Pull 2Is pushed back by 1/4 a cycle
Pull 2Is pushed back by 1/2 a cycle
HoldIs held at its current value until the next sync signal is received
One ShotWhen it receives a sync event, phasor starts from the beginning and performs one cycle before waiting for another event
Lock ShotSame as above, however, the operator rejects any sync events whilst performing a cycle. This creates a harmonic locking effect

Modulation Menus

Dexter features 4 assignable modulation inputs. These two menus allow you to route each modulation input to 13 different operator parameters.

Modulation menu

The following table gives all of the possible modulation destinations.

PitchV/Oct modulation of the operator’s pitch
MultipleOperator’s frequency multiplier
Wave PositionThe position of the wave table the operator reads from
Wave BankSelects which wave bank the operator reads from
ShapeOperator’s shape
LevelOperator’s level
Ext FMExternal FM input that is mixed with the operator’s modulator’s signal
Ext SyncExternal synchronisation input. Syncs when a zero to positive transition is detected
Shape ModeSelects the phasor shaping mode
Post ShapeSelects if the FM is performed before or after the phasor shaping
Sync ModeSelects the operator’s sync mode
Sync EnableActivates the operator’s synchronisation mode
Weak SyncEnables weak synchronisation

How it works


The operators generate a tone using lookup wavetable synthesis using a rising ramp, known as a read phasor, to read the contents of a table. Waves can be scanned through by cross fading between adjacent tables within the same bank of tables. FM synthesis is achieved by offsetting the read phasor’s value with another signal, effectively speeding up / slowing down the read speed. Whilst this is technically known as phase-modulation (PM) and is not true FM, this still modulates the frequency and gives the same effect. If anything, PM is easier to implement, and it is a standard method in commercial FM synthesizers such as the DX series. To expand the versatility of FM synthesis, the read phasor can be shaped in several ways that can distort and mangle the output waveform. Dexter offers 12 shaping modes. By default, the modulator signal is added to the read phasor before shaping, however it can be added post shaping by engaging the “Post Shpe” button. This allows for an alternative timbre and at times can make the shaping sound more pleasant.


Half of Dexter’s front panel is covered in jacks, where most of these are in fact CV inputs. However, whilst it seems intimidating at first glance, there is a lot a of repetition. The following table describes the functionality of each jack:

A L and A RStereo outputs of voice A. Chord notes are spread between the L and R outputs, or summed to the L output if only L is connected.
OP 1 to 4These are the individual output taps from a voice's operators. Can be either pre- or post-fade level.
B OutMono output of voice B
A and B V/OctVolts per octave pitch control of voices A and B
ChordChord CV
InvChord inversion CV
DetuneChord detune CV
AlgoAlgorithm CV
FB (Feedback)Feedback CV
BrightBrightness CV
ShapeShape CV
PitchVolts per octave pitch control. Note: 'Mul' can be modulated via an assignable mod input
WaveModulates the wave table position
ShapeModulates the phasor shape
LevelModulates the operator level
Mod 1 to 4Assignable modulation inputs

Context Menu

This menu is accessed by right-clicking on any blank area of Dexter.

Video Demos

Omri Cohen has created this great introductory video for Dexter

Andrew Mercer has created a great set of tutorial videos on how to use Dexter