A sound-level dashboard needs to keep up with the room. If an instructor lowers the volume, they should be able to see the change without wondering whether the reading is out of date.
For Studio Audio Monitor, I use 250 milliseconds as the target from measurement to display. That’s a design target, not a claim that every update will arrive within it. Network conditions and load still matter, so the timing needs to be measured.
Do the audio processing in the studio
The computer in the studio handles the audio analysis. It calculates the readings locally and sends the results to the server, rather than sending a continuous stream of raw audio for the server to process.
That keeps the outgoing data small. It also means the studio can keep taking measurements when its connection drops. The local buffer holds readings until they can be sent again.
Give the live display its own path
The dashboard and the historical record have different needs. A dashboard needs the latest value promptly. The historical record needs readings saved reliably, including any that arrive after an outage.
I keep those jobs separate. One path delivers new readings to the dashboard. Another writes them to time-series storage. A database retry shouldn’t hold up a screen update.
Readings → stored history
The stored data is still important. It lets someone look back over a session or compare measurements over time. Separating the paths gives that work room to buffer and retry without making the live view wait for it.
Measure more than the average
An average delay can look fine while hiding occasional long pauses. I want to know how long the whole trip takes, how much it varies, and what happens when the connection gets worse.
That means checking when a reading was taken, when it reached the server, and when it appeared in the browser. Measurements across different computers also need a consistent time reference; otherwise, clock differences can look like network delay.
I’d also check how the dashboard behaves during an outage. It should make the age of a reading clear, rather than leaving an old number on screen that looks current.
There’s a practical reason to do this work early. If every screen update has to wait on a slow database operation, changing a font or speeding up a chart won’t solve the delay. The route the data takes matters before it reaches the interface.