Cadence · 2025
Real-time arrangement, without the lag
A collaborative tool for songwriters. I owned the interaction model for a canvas that stays in sync while four people edit the same track.
Cadence is a writing room for musicians — a shared canvas of loops, takes, and notes that a band can arrange together from four different cities. The hard part isn’t audio. It’s making a multiplayer canvas feel immediate when the network never is.
The problem
Early builds waited for the server to confirm every edit. Drag a loop, wait 120ms, watch it snap into place. In user sessions people described it as “typing through mud.” The arrangement view is the product, and it felt broken.
Approach
I prototyped the interaction model in code — not Figma — because the whole question was how does latency feel. Three things came out of it:
- Optimistic by default. Every edit applies locally on the frame it happens. The server reconciles in the background; conflicts resolve to the most recent intent and animate to their resolved position over 200ms so the correction is legible rather than jarring.
- Presence you can predict. Other people’s cursors and selections render with a subtle trailing smear in their color, so you read their direction and instinctively give them room.
- A latency budget in the UI. A quiet indicator shows round-trip time; above 400ms the canvas shifts to a “catching up” state instead of pretending.
Result
We shipped the optimistic canvas to beta and the “typing through mud” feedback disappeared entirely. Median interaction latency as perceived went from ~130ms to under one frame; the actual network didn’t change. The prototype became the reference implementation the team built the production canvas from.