Each voice builds four OscillatorNodes and four GainNodes, one envelope per operator, and wires them according to the selected algorithm. The modulation itself uses the fact that an AudioParam is a summing junction: a modulator's envelope feeds a GainNode whose output is connected to the target oscillator's `frequency` parameter, so the gain's value is added to the target's pitch sample by sample. That value is the peak frequency deviation in hertz. This is genuine frequency modulation rather than the phase modulation a DX-style chip runs, and for sine operators the two produce the same spectrum, which is what makes the approximation a fair one, and which stops being true exactly when feedback makes operator 4 non-sinusoidal.
The deviation for each connection is the modulating operator's index multiplied by the frequency of the operator it modulates, so every frequency in a patch scales with the played note together. The ratio between deviation and modulator frequency is therefore constant across the keyboard, and so is the spectrum. A deviation fixed in hertz would be a whole tone at the top of the keyboard and two octaves at the bottom, which is why nothing here is set in hertz except the five ratio entries that are meant to be, those are fixed-frequency operators, and they stay put while the keyboard moves under them.
The ratio control is stepped rather than continuous, and that is a usability decision with teeth. The musically meaningful ratios are a measure-zero subset of any continuous range, the whole numbers, plus a handful of irrationals, and everything between them is a detune that sounds like a mistake. Twenty positions cover the whole numbers from 0.5 to 8, the √2 family that produces inharmonic bell spectra, and five absolute frequencies.
Operator 4's feedback is closed form. A cycle in a Web Audio graph must contain a DelayNode, and the smallest available delay is a whole 128-sample render quantum, which would be a comb filter at a sample-rate-dependent frequency rather than feedback. Instead the steady state is computed: a sine phase-modulating itself at depth β has harmonic amplitudes 2·Jₙ(nβ)/(nβ), the Bessel series that also solves Kepler's equation, and a PeriodicWave built from those coefficients is that steady state exactly. It is deterministic, band-limited by the oscillator like any other periodic wave, and costs nothing per sample. The one thing it does not reproduce is the loop's build-up transient, which arrives fully formed here.
Velocity does two separate things. Carrier levels are scaled by velocity squared, the repo's standard curve, because loudness is not linear in amplitude and a straight mapping leaves the quiet end of the keyboard feeling dead. Modulator indices are scaled by a separate curve under the Vel → Index control, and because index is brightness that is what makes playing harder sound harder rather than only louder.
Envelope decays are scheduled as an exponential ramp to the sustain level and then a step onto it, because an exponential ramp cannot reach zero and most of this instrument's operators decay to exactly that. Releases start from wherever the envelope has actually got to rather than from the sustain level, so letting go during an attack fades from the partial level instead of jumping up first.
Levels, brightness and feedback are pushed onto sounding voices as they move, because those are the controls a player sweeps while holding a chord. The algorithm, the four ratios and the envelope times are read at note-on and take effect on the next note: rewiring a live graph or re-pitching a ringing operator would click, and a patch edit that lands on the next note is the honest behaviour rather than one worth hiding.
Voices are capped at eight with oldest-first stealing, and a re-pressed key replaces its own voice rather than summing with it. Nothing in the signal path is random, there is no exciter and no noise, and a four-operator FM voice has nothing to be random about, so the same patch, note and velocity produce the same waveform every time.