
JamLink
Network music app · macOSLow-latency audio and MIDI for musicians playing together from different places.

Overview
Streams audio and MIDI between musicians playing together from different locations. One app can send, receive or both, for one-to-one, one-to-many and many-to-many sessions: route any input channel — mono, stereo or up to eight at once — to any peer and mix incoming streams into any output. Audio travels as uncompressed PCM over UDP with no codec latency, and a jitter buffer that follows each player’s sound-card clock keeps playback steady without letting delay build up. Every stream shows its delay, and Align streams can hold all players to the same delay so they stay in time with each other. JamLink finds other JamLinks nearby and sets up the connection itself, on the same network or directly Mac-to-Mac over peer-to-peer Wi-Fi, and its optional JamLink Send and JamLink Return audio devices let any other app — a DAW, a video call, OBS — play into a session or record it. It is also a test-bed for the lab’s continuous-time packet-loss-concealment model, so a dropped packet doesn’t become a jarring gap mid-performance.
How it works
Audio on the wire
JamLink sends raw 16-bit PCM over UDP. There is no codec, so there is no encoding delay, and packets are kept under 1500 bytes so they are never fragmented on the network. Each Send To row takes a mono channel or a block of 2, 4 or 8 channels to one peer's address and port; each Receive From row listens on a port and mixes what arrives into any output channels. Receivers resample to their own device rate, so players don't need matching sample rates.
Keeping time
Every incoming stream has a lock-free jitter buffer (20 ms by default) that fills before playback and continuously corrects for clock drift between the two machines' sound cards, dropping old audio rather than letting delay build up. A TCP control link to each peer carries MIDI — over TCP so no note-off is ever lost — and measures delay: send rows show round-trip time, receive rows show network plus buffer delay. Align streams holds back the faster streams so every player arrives with the same delay as the slowest, easing changes in over a few seconds.
Finding each other
JamLinks advertise themselves with Bonjour. + Nearby… lists them and sets up both directions once the other player accepts, so nobody types addresses or ports. Peer-to-peer Wi-Fi lets Macs that share no network reach each other directly over the radio AirDrop uses; it hops channels about once a second, so allow a larger jitter buffer (around 40–60 ms).
Concealing lost packets
JamLink is also the test-bed for the lab's closed-form continuous-time packet-loss-concealment network, which predicts what a dropped packet should have sounded like, so a lost packet doesn't become a jarring gap mid-performance.