Brian AndersonAV Systems

2026-04-16 · AUDIO · 7 min

Sub-250ms: Latency in a Live Telemetry Platform

"Real-time" is a number, not a vibe. On a platform that monitors sound across distributed physical spaces, I treat 250 milliseconds as a hard budget - the line between a dashboard that feels live and one that feels like a report. Here's the architecture that holds it.

When someone says a system is "real-time," ask them for the number. Real-time isn't a feeling - it's a latency budget, and if nobody's defined it, nobody's defended it. On a live sound-monitoring platform I built to measure sound pressure across many physical spaces at once, that number is 250 milliseconds: the time from a microphone sensing a change to that change appearing on a screen. Everything in the architecture exists to protect it.

Why 250 milliseconds, specifically

The threshold isn't arbitrary. Around a quarter of a second is roughly where human perception stops reading two events as cause-and-effect and starts reading them as the same event. Under it, a number on a dashboard moves as the room gets louder - the operator trusts it, reacts to it, makes decisions on it. Over it, the value is always reporting a moment that has already passed, and people quietly stop believing it. The latency budget isn't a performance stat. It's whether the tool is trustworthy.

Real-time is a latency budget, not a vibe. If nobody can name the number, nobody is defending it.

The tension: fast and durable pull in opposite directions

Here's why this is hard. A live platform has two jobs that fight each other:

If you try to serve both from one pipeline, you lose both. Make the live path go through the durable database and every screen update inherits write latency, retries, and indexing. Make the durable path keep up with the live cadence and you hammer storage with traffic it was never shaped for. The fix isn't a faster single path - it's two paths.

The dual-path architecture

So the system splits the instant the data leaves the sensor. An edge agent in each space samples the sound level, does the signal processing locally, and emits a compact stream of readings. From there the data forks:

The two never block each other. The live view stays instant because the slow, important work of persistence happens off to the side. Decoupling them is the whole trick - and it's a pattern that shows up in every responsive system, not just this one.

<250ms sensor → screen budget · 2 decoupled data paths · edge processing at the source

Why the processing has to live at the edge

You can't make latency you've already spent come back. If raw audio had to travel to the cloud to be turned into a sound-pressure number, the round trip alone would blow the budget before the data even reached a dashboard. So the meaningful computation happens in the room, on the edge agent: it ingests the signal, computes the metric, and ships a small, finished value instead of a fat raw stream.

That single decision - process at the source, transmit the result - buys back most of the budget. It also makes the system resilient: a space keeps measuring and grading locally even if its connection to the cloud hiccups, then reconciles through the durable path when the link returns. The edge isn't just faster; it's what keeps each room honest on its own.

Measure the budget, don't assume it

The discipline that keeps a system like this honest is refusing to trust your own optimism about it. "It feels fast" is not a latency measurement. So the budget gets treated like any other requirement: instrument the path end to end, watch the real distribution, and care about the worst case, not the average. A system that's quick most of the time but stalls for a full second under load isn't real-time - it's real-time-ish, and the one moment it lags is the moment an operator needed it. You defend the tail, or you don't have a budget at all.

"It feels fast" is not a measurement. Instrument the path, watch the worst case, and defend the tail.

The principle: latency is a feature you design for

It's tempting to treat speed as something you tune at the end - ship the features, then optimize. But responsiveness can't be bolted on. The 250ms budget shaped every structural decision here: where computation lives, how many hops the data takes, whether persistence and delivery share a pipeline. By the time you're "optimizing," those decisions are already made. Latency is an architecture choice, made first, or it's a problem you can't fix later.

This is the same reason a reactive room feels alive and a real-time dashboard feels trustworthy: someone decided, up front, that a human's perception threshold was a hard requirement - and then engineered backward from it. Make the budget explicit, design the whole path around it, and "real-time" stops being a marketing word and becomes a property you can actually point to.

Need something that's actually real-time?

I design live telemetry and sensing systems with explicit latency budgets - edge processing, decoupled data paths, and the discipline to defend the worst case. Let's talk about yours.

Start a conversation →