Jets that sound like jets
The report was five words long and completely right: “the jets still have the propeller sounds.” Since the day the Starfang joined the hangar, every airframe in the game has shared one engine voice — two detuned sawtooths humming at piston frequencies. Strap into a Rhino, firewall the throttle, and out came the same 60 Hz radial drone as a Sparrowhawk. The whole early-jets era shipped — heat-seekers, flares, SAM rings — and the sky still sounded like 1943. That's fixed: jets now carry a real turbojet voice, and the same probe that proved it broken proves it fixed.
One voice for every engine
All of Warbirds' audio is synthesized — pure WebAudio oscillators and filtered noise, no sample assets — and the engine drone was the oldest patch in the rack: two sawtooth oscillators a few cents apart, through a lowpass, pitched by throttle and speed. It's a lovely little piston engine. It is only a piston engine, and it was wired to every hull with wings. The probe numbers made the symptom concrete: at full military power the Starfang's “turbine” sat at 123 Hz — the exact same fundamental as the Sparrowhawk's radial, because it was the exact same oscillator.
What a turbojet actually is, to an ear
A jet has no firing order, so it has no drone. To an ear it's two things stacked: a broadband thrust roar — combustion noise, brightening as the engine spools — and a thin turbine whine riding on top, the compressor blades screaming somewhere in the kilohertz and climbing with RPM. Both are cheap in WebAudio: the roar is looped noise through a lowpass whose cutoff opens with the throttle (340 Hz at idle, past 2 kHz at full burner), and the whine is a sawtooth whistling through a tight bandpass (Q = 6) that rides from ~950 Hz to nearly 3 kHz. The spool is the character: the jet chains answer the lever through deliberately slow time constants, because a turbine takes a beat to wind up in a way a piston engine never did. Chop the throttle and the whine doesn't stop — it spools down out from under you, which also keeps the engine-out story intact: damage scales the throttle the voice reads, so a flamed-out turbine falling off its note is the warning, same as the piston mutter always was.
The spectator side got the same treatment. The positional flyby voices — the engines that pan and swell when a plane tears past the camera on the stream — now build the right chain per hull. A jet flyby Dopplers differently, too: the whine shifts by pitch like the old saws, but the roar Dopplers by resampling the noise loop itself, so an approaching Balalaika's whole spectrum climbs and falls as it passes.
Which planes are jets? Not the table I thought
Here's the honest confession. The codebase already had a jet
discriminator: CLASS_JETPIPES, the table that gives jet
types an afterburner plume instead of a propeller. Obvious choice
— key the sound off the plume. Except the Arclight
carries her eight turbojets in underwing pods and draws no burner
plume at all: her jetpipe is deliberately
null. Key the audio off the visuals and the biggest jet
in the sky drones on like a Leviathan — the exact bug this
pass exists to kill, surviving on the one airframe with the most
engines. The ear and the eye needed separate tables:
CLASS_JET now says what an airframe sounds
like, the jetpipe table keeps saying what it looks like, and the era
roster wiring sets both.
A second trap the flyby rework surfaced: a spectated pilot can die in a Sparrowhawk and respawn in a Starfang under a live voice, which would happily keep droning pistons at a jet. The voice pool now checks the hull on every frame and retires-and-rebuilds a voice whose engine no longer matches.
Before and after, in numbers
The proof is a headless playtest that joins a real server from Chromium, holds the throttle a player would hold, and reads the live WebAudio graph off the client. Before: Starfang at full throttle, piston chain at gain 0.22, oscillators at 123 Hz, jet chains nonexistent. After, on the jets-era server: piston chain silent (gain 0), thrust roar at 0.24 with the lowpass opened to 2371 Hz, turbine whine singing at 2852 Hz — and on chopping the lever, the whine spooled down through 1936 Hz with the roar closing behind it. The WW2 server re-ran as the regression guard: a Sparrowhawk still drones at gain 0.22 with both jet chains flat at zero. Spectating each theater audited the flyby pool the same way — every voice over the WW2 map built as a prop (63–106 Hz), every voice over the jets-era Gulf built as a jet, whines Dopplering between 2065 and 3272 Hz as the bots crossed the camera.
Fly it: any jet, either hangar. Hold the lever down and listen for the beat the turbine takes before it answers — then chop it, and hear 1965 wind down.