EV·ENGINESTART THE SIMULATOR

What GPS speed gives you

A rev counter needle mid-stutter between two positions, with a faint arc showing where it settles.

Most phones report speed directly through the Geolocation API's coords.speed field, but not all of them do, and when that field is missing EV·ENGINE works it out from the distance and time between two fixes instead. Neither path arrives smooth, so both are filtered before the gearbox ever sees them.

Two ways to get a speed

The Geolocation API can return more than a latitude and longitude. When a device's GPS chipset has enough fixes to work out a velocity, it attaches that value to the position as coords.speed, in metres per second, and EV·ENGINE reads it directly. Most Android phones supply it. Some browsers and some older devices return null instead, every time, with no indication that anything is missing.

When coords.speed is absent, EV·ENGINE works the speed out itself, from the distance between the current fix and the last one, divided by the time between them. It is the same calculation anyone would do with a stopwatch and a map, and it runs on every device that can report a position at all, which is why it is the fallback and not the default. Whether a browser exposes coords.speed in the first place is one of the checks on the browser support page.

Why raw GPS speed steps

Every fix carries a position, and that position carries an uncertainty of several metres even with a clear sky, so two consecutive fixes rarely fall on a perfectly straight line even when the car itself is travelling in one. Derive a speed from the distance between two such fixes and that positional noise comes with it, arriving as a sequence of discrete steps rather than a continuous reading, because each fix is a fresh measurement rather than anything mechanical, unlike a wheel-speed sensor in a real car.

Feed a stepped speed straight into the gearbox and the step does not stay hidden. Road speed divided by the current gear ratio gives rpm, so a step in speed becomes a step in rpm, and near a shift point a small step is enough to flip the load calculation from one side of the threshold to the other, since load is inferred from acceleration rather than read from a pedal. The needle does not glide through a shift, it jumps, and it can jump back.

Smoothing the speed, smoothing the needle

Before the gearbox sees a speed at all, it passes through a smoothing stage with a time constant of 130 milliseconds, so the reported speed chases the true value rather than jumping straight to it. That is enough to turn a staircase into a curve without the response feeling laggy, and it applies whichever path produced the speed, coords.speed or the distance-between-fixes fallback, because by the time either reaches this stage they are indistinguishable.

Smoothing the speed does not by itself smooth the needle, because a gearshift is a step of its own, the ratio changing abruptly the moment the gearbox decides to shift. Displayed rpm gets a second, shorter smoothing stage, with a time constant of 95 milliseconds, so the needle settles into a new gear rather than snapping to it. A shift cooldown of 500 milliseconds sits alongside both, stopping the gearbox from reconsidering a shift it made moments earlier, the fix for a bug that once let it cascade through four gears in half a second.

What the smoothing costs

Both time constants are short on purpose. GPS was already the slower half of this pipeline, so every extra millisecond of smoothing is a millisecond further between the car accelerating and the engine catching up. Widen either constant and the flutter above would disappear, but the note would trail the road by something a driver could feel; narrow them further and the flutter returns. 130 and 95 milliseconds are where that argument settled, not the output of a formula with one correct answer.

How much of this a given driver ever notices depends on how noisy their own fixes are, which is one of the readings the signal watcher reports directly: GPS update rate and accuracy, alongside the motion sensors, GPU and audio latency a browser is offering that session.

The BAC Mono is a fair test of the needle smoothing on its own: six close ratios shifting at 5,000 rpm mean a small change in road speed moves rpm a long way, so a flutter would be least forgivable here, and instead the note glides between shifts rather than stepping. The four-cylinder-2-0, the reference point every other preset on this site departs from, has longer gears and shows the same smoothing doing gentler work.

None of this is visible anywhere in the interface. It is only audible, in whether the engine note reads as a road speed or as a sequence of fixes with a note bolted on, and coords.speed, its fallback, and the two smoothing stages between them exist so that a driver never has a reason to ask which one is running.

More notes

All notes