🎹 Sound · Synthesis · Signal Processing
📅 July 2026 ⏱ ~9 min read 🟡 Intermediate

Sound Synthesis: FM, AM & Additive

Every synthesizer patch, from a warm analogue pad to a glassy digital bell, is built from one of a handful of core mathematical techniques for generating a waveform. Understanding the three classics — additive, amplitude modulation, and frequency modulation — explains both why a Yamaha DX7 sounds nothing like a Minimoog, and how to build either one from scratch in code.

Additive synthesis

The most direct method, and the one that follows straight from the Fourier series: build a complex tone by summing many sine waves, each with its own frequency, amplitude, and phase.

x(t) = Σn=1N Aₙ(t) · sin(2π n f₀ t + φₙ)

Setting Aₙ ∝ 1/n gives a sawtooth-like brightness; giving each harmonic its own time-varying envelope Aₙ(t) — decaying faster for higher harmonics — recreates the way a real bell or piano string loses its high-frequency content faster than its fundamental as the sound decays. This is exactly what pipe organs have done mechanically for centuries (drawbars mixing different harmonic ranks) and what the Hammond organ's tonewheels do electromechanically.

Trade-off: Additive synthesis is the most flexible and the most literal implementation of Fourier's theorem — it can produce any periodic waveform exactly — but a rich, evolving tone can require dozens of independently controlled oscillators, which was prohibitively expensive before digital synthesis.

Amplitude modulation (AM) and sidebands

Instead of adding sine waves, multiply two of them: a fast carrier at frequency fc and a slower modulator at frequency fm that varies the carrier's amplitude:

x(t) = [1 + m·sin(2π fm t)] · sin(2π fc t)

Using the product-to-sum trigonometric identity, this expands into three components: the original carrier, plus two new sidebands at fc ± fm:

x(t) = sin(2π fc t) + (m/2)·sin(2π (fc+fm) t) − (m/2)·sin(2π (fc−fm) t)

If fm is a slow LFO (a few Hz), you hear tremolo — a rhythmic volume pulse. If fm rises into the audio range (above ~20 Hz), the sidebands become audible as new pitches, and the tremolo is heard instead as a change in timbre.

Ring modulation

A close cousin: multiply two audio-rate signals directly, with no "1 +" offset added to keep the carrier present. This is ring modulation, and it produces only the sum and difference frequencies — the original carrier and modulator both vanish entirely:

x(t) = sin(2π fc t) · sin(2π fm t)
  = ½ cos(2π (fc−fm) t) − ½ cos(2π (fc+fm) t)

Because the resulting frequencies are usually not simple integer multiples of either input, ring modulation produces inharmonic, metallic, bell-like or robotic tones — used famously for Dalek voices and metallic percussion synthesis.

Frequency modulation (FM) synthesis

Instead of modulating amplitude, modulate the carrier's instantaneous frequency directly. John Chowning discovered at Stanford in 1967 (later licensed to Yamaha for the landmark 1983 DX7) that a remarkably simple two-oscillator equation produces an astonishingly rich range of timbres:

x(t) = sin( 2π fc t + I · sin(2π fm t) )

Here I is the modulation index — how strongly the modulator deflects the carrier's phase. The ratio fc : fm (the "C:M ratio") determines whether the resulting sidebands land on the harmonic series (integer ratios, like 1:1 or 2:1, giving pitched, musical tones) or off it (non-integer ratios like 1:1.4, giving clangorous, bell-like or metallic tones).

Why FM took over 1980s pop music: A single pair of digital oscillators, modulating each other with time-varying envelope control over I, could recreate the evolving brightness of electric pianos, bells, brass, and bass — sounds that previously needed banks of analogue filters and dozens of additive oscillators — using a fraction of the computation.

Why FM sidebands follow Bessel functions

Expanding the FM equation reveals infinitely many sidebands at fc ± k·fm for every integer k, and — unlike AM — their amplitudes are not simple constants but Bessel functions of the first kind, Jk(I):

x(t) = Σk=−∞ Jk(I) · sin(2π (fc + k fm) t)

At I = 0 there is only the carrier (J₀(0) = 1, all other Jₖ = 0) — a pure sine. As I increases, energy spreads into more and more sideband pairs, and the number of significant sidebands grows roughly as I + 1. This is precisely why raising the modulation index on an FM patch makes a sound get progressively "brighter" and more complex — you are watching a Bessel function redistribute energy across an ever-widening spectrum in real time.

Choosing a synthesis method

Modern software synthesizers often combine all three: additive layers for the harmonic "body" of a sound, an FM operator pair for an evolving attack transient, and ring modulation for metallic texture — the same mathematical building blocks arranged into a much larger instrument.

Try it yourself

Add harmonics one at a time and hear additive synthesis build a waveform live, from a pure sine to a bright sawtooth:

🎛️ Open Fourier Synthesis Simulation →

Then build the FM equation yourself with just two Web Audio API oscillators in the companion tutorial:

🎹 Build a Synthesizer in 100 Lines →

Sources