eminor.net

fmlab

fmlab's Bessel function plot, showing how tall each pair of sidebands is at every modulation index

fmlab is an interactive guide to FM synthesis. Short chapters go from a single sine wave up to the Yamaha DX7's operator algorithms, each with controls you can play with while you hear the sound and watch its waveform and spectrum change. A sandbox at the end has every control and an on-screen keyboard.

It's written in vanilla TypeScript with Vite, drawing with Canvas 2D, and the sound comes from a phase-modulation engine in a Web Audio AudioWorklet.

© 2026 Jeremy Ellington