EML Synthesizer

Additive synthesis, one complex EML node per partial, given its leaf: Im eml(i·2π·r·f·t, 1) = sin(2π·r·f·t). The sound is computed by evaluating those nodes — which, by Euler’s formula, means sines.

Presets
one partial
Amplitudes are hand-chosen approximations, not measured instrument spectra.
Waveform · 4.5 ms, before fades
Spectrum · multiples of 440 Hz
×1
×2
×3
×4
×5
×6
×7
×8
Partials · ratio × 440 Hz, amplitude
P1
440 Hz
1.00
P2
880 Hz
0.00
P3
1320 Hz
0.00
P4
1760 Hz
0.00
P5
2200 Hz
0.00
P6
2640 Hz
0.00
P7
3080 Hz
0.00
P8
3520 Hz
0.00
Decay
held 1.5 s
complex EML nodes: 1given their leaves
1.5 s
y(t) = Σ aₙ · Im eml(zₙ, 1), evaluated at every sample:
1.00 · Im eml(i·2π·1·440·t, 1)

How to read the count. Each sounding partial is one complex EML node: eml(zₙ, 1) = exp(zₙ) − ln 1 = exp(zₙ), which is Euler’s formula once you take its imaginary part. The leaf zₙ is supplied, not built — making i, π and those products from 1 and t would take more nodes, and none are counted here. Im(·), the amplitudes and the sum are ordinary arithmetic, not EML nodes. So the count above reads 1 node given its leaf, not 1 node built from scratch — the ledger’s “EML + projection” accounting. Built entirely from eml, one sine’s cost: at most 243 nodes.

Why the detour through the complex numbers. Over the reals, no finite EML tree equals sin(x). See the boundary →

What you hear. Each node is evaluated as Im eml(z, 1) = eRe z·sin(Im z), with the browser’s own exp and sin — so underneath, what you hear is sines, exactly as Euler’s formula says. That happens at every sample at your device’s audio rate, then the partials are summed, faded in over 5 ms and out over 50 ms, and scaled so the peak sits at −6 dBFS — no setting can clip. The decay lives in the real part of the leaf, so a struck partial costs the same one node as a held one, and the ratio need not be a whole number: that is what lets the bell be inharmonic.