Part of #2 Blocked by: #12
Given a room's transport, the patch's loops sound in phase with every other device, whatever this device's output latency: a late joiner lands on the beat, a tempo change lands at its moment, and a loop started by somebody else starts here at that moment.
The transport's rules are the one implementation atmosynth.at's server uses, moved to a public crate first; what cannot be shared between Rust and JavaScript is held together by fixtures both suites run (ADR 0020). Needs that move.