Oscillators
FM Op
A DX7-style FM operator — sine oscillator, envelope, and feedback in one — the building block of frequency modulation synthesis.
Try one in your browser →
What is a FM Op?
An FM operator is the atomic unit of FM synthesis — a sine oscillator, an envelope, and an input that lets another operator modulate its phase. By itself one operator is just a sine with an amplitude envelope. Patch a second operator into its phase modulation input, and the carrier's spectrum splits into a series of sidebands whose pitches are determined by the *ratio* between the two operators' frequencies. Patch a third, a fourth, a sixth — and you can build any sound from a single primitive.
The technique was discovered by John Chowning at Stanford in the late 1960s, licensed by Yamaha, and unleashed on the world as the DX7 in 1983. The DX7 used six operators per voice, arranged in 32 algorithms (which operators modulate which), and could produce sounds — electric pianos, metallic bells, vocal pads, digital basses — that no analog synthesizer of the era could approach. It defined the sound of 1980s pop music.
What confuses people first encountering FM: the M doesn't really stand for frequency — it stands for phase. Yamaha and most modern implementations use phase modulation (PM): the modulator signal is added directly to the carrier's phase, sample by sample. Phase modulation and frequency modulation are mathematically related (one is the integral of the other) but PM is more stable, more predictable, and is what the DX7 actually does. The community kept calling it FM, and the name stuck.
The two parameters that define an FM voice are the frequency ratio between operators (integer ratios — 1:1, 2:1, 3:1 — give harmonic, musical results; non-integer ratios — 1.41:1, 7.13:1 — give inharmonic, metallic, bell-like results) and the modulation index, which is essentially how loud the modulator is when it hits the carrier. A small modulation index gives a few sidebands and a subtle timbre; a large one gives many sidebands and a brighter, denser sound. Modulating the modulation index over time — typically with the modulator's own envelope — is what makes FM sounds *evolve*: bell strikes that decay into pure sines, pianos with bright attacks fading into mellow sustains.
Our FM Op
Each FM Op in our rack is a *complete* DX7-style operator: a sine oscillator, a built-in ADSR, self-feedback (with the same 1-sample delay + 2-sample averaging waveshaper Yamaha used), and a phase-modulation input. The envelope controls both output level *and* modulation depth, just like on the DX7, so when you chain operators the timbre naturally evolves over the life of the note without any extra envelopes patched in.
Because each operator carries its own envelope, building a multi-op FM voice is just patching MOD outputs into MOD inputs. Want a Rhodes? Two ops, both ratio 1, modulator's decay shorter than the carrier's. Want a bell? Modulator ratio 7 or 14. Want an algorithm 5-style stack? Three ops in series, with the last one's output going to the audio path. The full 32-algorithm DX7 vocabulary is reachable by cabling rather than menu-diving.
Feedback is implemented with the canonical DX7 FBL 0-7 table — each step roughly doubles the feedback gain, from π/16 (subtle harmonic distortion) up to 4π (chaotic, near-square output). At the high end the operator stops being a sine and becomes a noise source. Vel-sens and a velocity input let an external MIDI velocity scale the modulation depth, which is the secret to expressive FM playing — louder notes get brighter, softer notes stay mellow, just like a real piano.
In a patch
The simplest FM voice: two operators. Set carrier ratio = 1.00, set modulator ratio = 1.00, patch modulator OUT → carrier MOD. With ratio 1:1 you get a sawtooth-like spectrum; modulator's level controls brightness. Now give the modulator a *shorter* envelope decay than the carrier and you have a Rhodes electric piano: bright on attack, mellower on sustain. Change modulator ratio to 7 or 14: bells and tubular metallophones.
Three- and four-operator stacks unlock more realistic instruments. Carrier ← Modulator A ← Modulator B (B modulates A, A modulates the carrier) is how the DX7 produced complex evolving timbres: B's envelope shapes the *modulator's brightness*, which in turn shapes the *carrier's brightness*. Add a parallel carrier at ratio 0.5 for sub-octave reinforcement and you have a complete bass voice from four operators.
Drive the operator's V/Oct from a sequencer, the Gate from the same sequencer's gate output, and the operator behaves like a complete monosynth voice. Patch operators together with cables instead of fixed algorithms and you get the flexibility modular brings to FM: any algorithm, any number of operators, mixed and matched with the rest of your patch.
Inputs
- V/Oct (cv) — Pitch input. 1V per octave standard. 0V = C4. The operator frequency is this base pitch multiplied by the Ratio parameter.
- Gate (gate) — Gate input for the built-in ADSR envelope. Rising edge triggers attack; falling edge triggers release. The envelope shapes both output level and modulation depth.
- MOD (audio) — Phase modulation input. Connect another FM Op output here for FM synthesis. The incoming signal adds directly to the oscillator phase - this is how DX7 FM works (technically phase modulation, not frequency modulation).
- Vel (cv) — Velocity input. Scales the output level based on the Vel Sens parameter. 10V = full velocity, 0V = minimum. Latched on each gate rising edge.
Outputs
- OUT (audio) — Operator output. The sine oscillator shaped by the built-in envelope. Connect to Output for a final voice, or to another FM Op MOD input for modulator duty.
Controls
- Ratio — Frequency ratio from 0.25x to 16x the base pitch. Integer ratios (1, 2, 3...) produce harmonic tones. Non-integer ratios (1.5, 2.7) create metallic, bell-like, or dissonant sounds. Ratios below 1 (0.25, 0.5) shift the operator into sub-octave territory for sub-bass or organ-style 16ft/32ft stops.
- Fine — Fine detune in cents, -50 to +50 cents (a quarter-tone either way) around the ratio. Use for subtle detuning when stacking operators.
- Level — Output level from 0 to 1. For a carrier (final output), this is the volume. For a modulator, this controls modulation depth - how much this operator affects the next one.
- Feedback — Self-feedback level from 0 to 7 (DX7 FBL scale). 0 = pure sine. 1-2 = subtle harmonics. 3-4 = saw-like character. 5-6 = aggressive, distorted. 7 = chaotic, noise-like. Uses 2-sample averaging just like the original DX7.
- Attack — Envelope attack time from 1ms to 10 seconds. How quickly the sound reaches full level after a gate trigger.
- Decay — Envelope decay time from 1ms to 10 seconds. How quickly the sound falls from peak to the sustain level.
- Sustain — Envelope sustain level from 0 to 1. The level held while the gate stays high. For a modulator, this controls steady-state modulation depth.
- Release — Envelope release time from 1ms to 10 seconds. How quickly the sound fades after the gate goes low.
- Vel Sens — Velocity sensitivity from 0 (ignores velocity, always full volume) to 1 (full velocity response). At 1, soft notes are quiet and hard notes are loud.
- Mod Depth — Scales the MOD input from 0 (no external modulation) to 1 (full modulation). Use to fine-tune how much an incoming modulator affects this operator.
Inspired by
A canonical phase-modulation operator: sine oscillator + ADSR + self-feedback, frequency expressed as a ratio of the V/Oct base pitch. Self-feedback uses the DX7 1-sample-delay / 2-sample-average waveshaper. Patch operators together to build any FM algorithm.
- Yamaha DX7 operator
- Yamaha TX81Z
- Native Instruments FM8
← Back to all modules