-
Notifications
You must be signed in to change notification settings - Fork 0
FM Synthesis and Algorithm Mathematics
The Yamaha DX7, released in 1983, revolutionized commercial synthesis by implementing digital Phase Modulation (PM), commercially branded as Frequency Modulation (FM). Based on patents by Dr. John Chowning at Stanford University (CCRMA)[^1], the DX7 generates complex harmonic and inharmonic acoustic spectra using six digital sine wave oscillators (Operators) configured in 32 discrete algorithmic topologies[^2].
This document details the underlying digital signal processing (DSP) mathematics, Bessel function sideband expansions, and envelope generator curves that bipluk.com parses and visualizes.
While commonly termed "FM", Yamaha digital sound engines implement Phase Modulation:
where the instantaneous phase deviation
Yielding the canonical Chowning Phase Modulation equation:
where:
-
$f_c$ is the Carrier frequency in Hertz. -
$f_m$ is the Modulator frequency in Hertz. -
$\beta = \frac{\Delta \theta}{\text{rad}}$ is the Modulation Index, directly controlled by the modulator Operator Output Level ($0$ to$99$ ). -
$A(t)$ is the Carrier Envelope Generator amplitude.
Note
Mathematical Equivalence: In continuous time, Phase Modulation by a sinusoidal source produces an identical spectrum to Frequency Modulation, with the effective FM modulation index defined as
Expanding the sinusoidal PM equation via Jacobi-Anger Fourier series yields a carrier flanked by an infinite series of sidebands spaced at integer multiples of the modulation frequency
where
flowchart TD
Index["Modulation Index beta (0 to 99)"] --> BesselCalc["Bessel Amplitudes Jn(beta)"]
BesselCalc --> Harmonics["Harmonic Ratios (fc : fm = 1:1, 1:2, 1:3.14)"]
Harmonics --> Spectrum["Output Timbre: Harmonic Series or Inharmonic Bell/Metallic"]
The harmonic nature of the resulting timbre is strictly governed by the ratio
-
Integer Ratios (
$1:1, 1:2, 1:3, 1:4$ ): Produce harmonic spectra identical to acoustic brass, strings, reeds, and woodwinds. -
Fractional Ratios (
$1:1.414, 1:3.1415$ ): Produce non-integer sidebands characteristic of metallic bells, chimes, gongs, and cymbals. -
High Modulation Index (
$\beta > 5.0$ ): Distributes acoustic energy into dozens of sidebands, producing bright, cutting lead and digital bass timbres.
The DX7 arranges 6 Operators into 32 pre-wired routing algorithms:
flowchart LR
subgraph Algo1 ["Algorithm 1: Deep FM Stack"]
Op6["OP 6 (Modulator)"] --> Op5["OP 5 (Modulator)"]
Op5 --> Op4["OP 4 (Modulator)"]
Op4 --> Op3["OP 3 (Modulator)"]
Op3 --> Op2["OP 2 (Modulator)"]
Op2 --> Op1["OP 1 (Carrier)"]
Op1 --> Out1["Audio DAC Out"]
end
subgraph Algo32 ["Algorithm 32: Pure Additive"]
A1["OP 1"] --> SumNode["Summing Bus"]
A2["OP 2"] --> SumNode
A3["OP 3"] --> SumNode
A4["OP 4"] --> SumNode
A5["OP 5"] --> SumNode
A6["OP 6"] --> SumNode
SumNode --> Out2["Audio DAC Out"]
end
Tip
Algorithm 1 provides intense harmonic richness with multiple cascaded non-linearities, ideal for complex acoustic simulations. Algorithm 32 functions as a 6-drawbar additive organ engine where each operator directly contributes a fundamental or overtone directly to the output DAC.
Click to expand DX7 Carrier-to-Modulator Algorithm Archetypes
| Algorithm Class | Member Algorithms | Carrier Count | Modulator Count | Acoustic Application |
|---|---|---|---|---|
| Deep Serial Stacks | Algorithms 1, 2, 3, 4 | 1 Carrier | 5 Modulators | Brass, bowed strings, distorted guitars |
| Dual Stacks | Algorithms 5, 6, 7, 8 | 2 Carriers | 4 Modulators | Electric pianos, mallet instruments, bells |
| Triple Branches | Algorithms 9, 10, 11, 12, 13 | 3 Carriers | 3 Modulators | Complex acoustic pianos, harpsichords |
| Multi-Carrier Clusters | Algorithms 14 through 31 | 3 to 5 Carriers | 1 to 3 Modulators | Split instruments, ensembles, pads |
| Pure Additive | Algorithm 32 | 6 Carriers | 0 Modulators | Pipe organs, additive tone wheels, sine clusters |
Unlike traditional analog ADSR (Attack, Decay, Sustain, Release) envelope generators, Yamaha FM engines implement piecewise linear 4-Rate, 4-Level (R1-R4, L1-L4) contour generators:
flowchart LR
Start["Key On (Start: Level 4)"] --> Step1["R1 to Target L1 (Attack)"]
Step1 --> Step2["R2 to Target L2 (Decay 1)"]
Step2 --> Step3["R3 to Target L3 (Decay 2 / Sustain)"]
Step3 --> KeyOff["Key Off Event"]
KeyOff --> Step4["R4 to Target L4 (Release)"]
The transition duration
where
Important
Non-Linear Rate Mapping: A rate value of
Alongside Yamaha FM, Casio developed Phase Distortion (PD) synthesis in 1984 for the CZ series (CZ-101, CZ-1000, CZ-5000, CZ-1)[^4]. Instead of modulating carrier phase with an independent audio-rate oscillator, Casio distorted the reading phase angle of a cosine lookup table using non-linear piecewise phase accumulators:
where the distorted phase
flowchart LR
PhaseCounter["Linear Master Phase Counter: 0 to 2*pi"] --> DCW["DCW Non-Linear Transfer Function g(theta)"]
DCW --> CosTable["Cosine Waveform ROM Lookup"]
CosTable --> DCA["DCA Amp Level Control"]
DCA --> AudioOut["Audio Output"]
The Casio CZ engine replaced standard ADSRs with flexible 8-stage Rate and Level envelopes across DCO (Pitch), DCW (Timbre), and DCA (Amplitude):
This allows complex multi-transient sweeps, secondary attacks, and looped modulation cycles without external LFOs. For the byte packing structure of Casio CZ Sysex parameters, inspect SysEx Specifications and Checksums.
[^1]: Chowning, John M. "The Synthesis of Complex Audio Spectra by Means of Frequency Modulation." Journal of the Audio Engineering Society 21, no. 7 (1973): 526-534. [^2]: Yamaha Corporation. Yamaha DX7 Digital Programmable Algorithm Synthesizer Operating Manual, Nippon Gakki Co., Ltd., 1983. [^3]: Bristow, Derek, and John Chowning. FM Theory & Applications: By Musicians for Musicians. Tokyo: Yamaha Music Foundation, 1986. [^4]: Casio Computer Co., Ltd. CZ-101 Operation Manual & MIDI Implementation Chart, Tokyo, 1984.
© 2026 bipluk.com. Open source under the GNU General Public License v3.0.
- Home
- Hardware Compatibility Matrix
- Web MIDI Protocol Engine
- SysEx Specifications and Checksums
- FM Synthesis and Algorithm Mathematics
- Reverse Engineering SysEx Protocols
- REST API and Integration
- Vintage Hardware Maintenance Guide
- Hardware MIDI Troubleshooting Guide
- MIDI OX and Snoize Modern Alternatives