Skip to content

styrene-lab/nex-jamkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nex-jamkit

A nex profile for remote musical collaboration. Installs the network-music-performance stack — JackTrip, SonoBus, Jamulus, Mumble — on top of low-latency PipeWire.

Mesh networking + WireGuard tunneling between collaborators is handled out-of-band by styrened (Reticulum/LXMF). Install styrened separately and join the same RNS net — this profile installs the music tooling that runs over the resulting WireGuard interface.

Designed to bolt onto an existing NixOS install in one command.

What you get

  • Three NMP protocols so you can pick whichever your collaborators run:
    • JackTrip — uncompressed UDP, tightest possible latency (sub-15ms one-way on fiber). Technical CLI/Qt frontend.
    • SonoBus — peer-to-peer with built-in NAT punch via the public sonobus.net broker. Friendliest GUI, no server needed. Recommended default for new collaborators.
    • Jamulus — central-server model with a polished GUI. Public server directory or self-hostable. Slightly higher latency, lowest setup bar.
  • Mumble for low-latency voice chat (separate from the music tracks).
  • PipeWire at 48 kHz / 64-sample quantum with JACK API enabled — ~1.3 ms per period.
  • Ardour for recording your local side of the session.
  • qpwgraph + pavucontrol for routing.
  • qmidinet for sharing MIDI clock between machines.
  • mtr + iperf3 for diagnosing connection quality before a session.

Install

nex profile apply styrene-lab/nex-jamkit

Bring up the WireGuard tunnel via styrened (one-time setup; out of scope for this profile — see styrened docs). Once the WireGuard interface is up and your collaborator is reachable on it, open SonoBus and connect by session name. Done.

See docs/quickstart.md for first-session details. For the local Roland TD-50 MIDI drum rig, see docs/td50-drum-stack.md. Latency probe profiles are documented in docs/td50-latency.md. The dependency boundary with polyrhythm is tracked in docs/dependency-contract.md: nex-jamkit installs/provides the graph nodes, while polyrhythm is the validated runtime authority for safe DRS start/check/monitor routing and explicit COSMIC audio recovery.

Latency reality check

The physics floor is ~25 ms one-way. That requires:

  • Both sides on fiber-class connections with < 15 ms RTT to each other
  • A wired (not wifi) audio interface with hardware monitoring
  • Closed-back headphones (open-back back-bleeds into the mic)
  • No CPU governor doing aggressive frequency scaling (musnix RT kernel handles this if you set realtime = true in the profile)

Asymmetric DSL or congested wifi will dominate the latency budget no matter what software you use. Run mtr <peer-wg-ip> before a session — if jitter is > 10 ms or packet loss is > 0.1%, you'll feel it.

Does it work without NixOS?

The profile itself is NixOS-only. But the applications — JackTrip, SonoBus, Jamulus, Mumble — all have native binaries for macOS and Windows too. A non-Nix collaborator can install those four apps directly and join your sessions. They just don't get the reproducible PipeWire tuning. (The styrened mesh side does have macOS/Linux support; check styrened docs for current platform coverage.)

Pairing with the studio rig

This profile is the lean sibling of nex-gamingpc, which adds the studio-machine layer (drum kit / Stream Deck / OBS / COSMIC desktop / AMD gaming stack). If you're the host of the jam and want all that, use nex-gamingpc. If you're a guitarist joining someone else's session, nex-jamkit is what you want.

License

MIT

About

Lean nex profile for remote musical collaboration — JackTrip + SonoBus + Jamulus over Tailscale

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors