Build complex waveforms using rotating epicycles (sine components).
How to Use This Tool
Any complex, repeating waveform — a square wave, a sawtooth, a musical tone, even a human voice — can be
built by adding together a set of pure sine waves, each with its own frequency, amplitude, and phase. This
tool lets you build a complex audio signal by hand: add sine wave "components," tune each one, and watch the
result take shape in real time. You'll see it three ways at once — as rotating vectors that build the wave
step by step, as the resulting waveform traced over time, and as a bar chart showing exactly which
frequencies went into it.
+ Add Component: Adds a new sine wave (up to 8 at once). Each becomes its own
rotating vector in the time domain view above, chained onto the others.
Square Wave Preset / Sawtooth Preset: Loads a specific, pre-tuned set of harmonic
components — the correct frequencies, amplitudes, and phases — that approximate a classic square or
sawtooth wave when added together. A good way to see how sharp, angular wave shapes are actually built
from nothing but smooth sine curves.
Clear All: Removes every component and starts over from a blank canvas.
Integer Harmonics Only: When checked, every component's frequency is locked to a
whole-number multiple of the fundamental (1×, 2×, 3×...). That's the condition for a truly
periodic (cleanly repeating) waveform — a real Fourier series. Uncheck it to allow fractional,
inharmonic frequencies, which produce a shifting, non-repeating wave — and, combined with Random Wander
below, a noticeably more organic, voice-like sound.
Freq / Amp / Phase sliders (on each component card): Each sine wave can be tuned
individually. Frequency sets how fast that vector spins — its pitch, once sound is
enabled. Amplitude sets the rotating vector's magnitude — how much that component contributes to
the combined wave's shape (and how loud it is). Phase sets the vector's starting angle —
shifting where in its cycle that component begins. Changing phase reshapes the combined waveform without
changing which frequencies are present in it.
Remove: Deletes that individual component.
Time Domain (top display): The chain of spinning vectors, added end to end. The tip
of the last vector traces the combined waveform over time — exactly what you'd see on an oscilloscope.
Frequency Domain (bottom bar chart): The "ingredients" of the current sound — one
bar per component, positioned at its frequency, with height equal to its amplitude. This is exactly what
a spectrum analyzer shows: the same signal, described by which pure tones are present and how
strong each one is, instead of by its shape over time.
Freeze / Resume: Pauses the animation and silences audio in place; Resume picks up
exactly where it left off. Useful for pausing to explain what's on screen without the picture or sound
continuing to change underneath you.
Playback Speed: Controls how fast the vectors visually rotate. This is independent
of audio pitch — see Tone Multiplier below.
Enable Sound / Mute: Turns on audio playback of the current waveform. Browsers
require a manual click before any sound can play, so this button doubles as that permission step. Once
enabled, it becomes a Mute/Unmute toggle.
Tone Multiplier: The frequency values used for the visual animation (0–30) are far
too low to hear directly — spinning that slowly would be silent, sub-audio motion. This control
multiplies every component's frequency by a chosen amount to lift the whole set into audible range
together, preserving their relative ratios — and therefore their musical relationship to each
other — while letting you pick a comfortable pitch range to listen in. The number shown under each
component's frequency slider is its actual audible pitch after this multiplication.
Volume: Overall loudness of the audio output. A limiter is applied automatically to
prevent harsh clipping even with several loud components stacked together.
🎲 Random Wander: Turns on continuous, organic variation. Instead of staying fixed,
each selected parameter drifts smoothly around whatever value you've set for it — new drift targets are
picked at randomized intervals and glided toward smoothly, rather than jumping abruptly or wobbling on a
fixed beat. Turning it off snaps every component straight back to its slider setting.
Wander Magnitude: How far each parameter is allowed to drift from your setting. Low
values give a subtle wobble; high values give a much wider excursion — clearly audible as pitch,
loudness, and shape variation — while still centering on whatever you set with the sliders.
Wander Speed: How quickly the drift happens — how often a new target is chosen and
how fast each parameter glides toward it. Low speed gives slow, breathing-like variation; high speed
gives quick, lively, chattering variation.
Freq / Amp / Phase (wander checkboxes): Choose which parameters are allowed to
wander, independently. Frequency-only wander sounds like vibrato (pitch drift); amplitude-only sounds
like tremolo (loudness pulsing); phase-only reshapes the waveform without changing pitch or loudness —
most noticeable with Integer Harmonics unchecked. Note: while Integer Harmonics Only is checked,
frequency wander keeps running but snaps to the nearest integer harmonic each step — you'll hear it hop
between harmonics rather than glide continuously, so the harmonic lock is never broken.
Why Random Wander is here: Real-world complex audio signals — a human voice being
the clearest example — are almost never perfectly static. Pitch, loudness, and the precise shape of the
waveform are all continuously and subtly fluctuating, even in a single sustained sound. A signal built
from a handful of perfectly fixed sine waves tends to sound synthetic and lifeless; the same signal with
small, continuous, organic variation in frequency, amplitude, and phase starts to sound noticeably more
natural — especially with Integer Harmonics Only unchecked and Magnitude/Speed pushed up toward 100%.
Try this for the clearest speech-like effect: select the Square Wave preset, turn on
Random Wander, and push both Magnitude and Speed toward the high end of their sliders — with Freq, Amp, and
Phase all checked. The fixed, buzzy square wave starts to breathe and waver in a way that reads as
strikingly organic, almost vocal.