Free software · GPL-3.0 · no cloud, no accounts

Your PC's sound, on every screen in the house — in perfect sync.

Newfoundsync turns one Windows PC into a server that streams its audio — and optionally its screen — to every phone, tablet, laptop, or TV browser on your LAN. No app to install: devices just open a URL, buffer a couple of seconds, clock-sync, and play back in lock-step. Sonos-like multi-room sync, built in Rust.

Server · one Windows PC

WASAPI captures your sound → Opus (48 kHz), PTS-stamped on a single monotonic master clock → served over HTTPS + WebSocket, with optional royalty-free AV1 (or VP9) screen video.

WSS one shared clock,
N devices

Every browser client

Clock-syncs (NTP-style), buffers against jitter, decodes with WebCodecs, and schedules each frame to a deadline so every speaker emits the same sample at the same instant.

Why it's nice

Whole-home audio without the hardware.

No proprietary speakers, no subscription, no telemetry — just your own machines on your own network, kept in sync to the sample.

🌐

No client install

The "client" is a web page. Open https://<server>:47000 on anything with a browser and it plays. A QR code in the server UI makes it scan-and-go.

🎯

Tight, drift-corrected sync

Every client schedules each frame against one shared clock — sub-millisecond offset on a LAN. A gentle drift nudge bounds long-run clock skew so rooms never wander apart.

🛡️

Resilient over Wi-Fi

A few-second jitter buffer over a reliable WebSocket rides out Wi-Fi stalls without gaps — trading a little startup latency for whole-home robustness.

🎚️

Per-room tuning

Master + per-device volume, plus a per-device sync trim (ms) to compensate for Bluetooth / HDMI / soundcard latency — by ear, or auto-calibrated by mic.

🎤

Mic auto-calibration

A device emits a coded spread-spectrum signal and listens on its own mic to measure and correct its real speaker→ear offset. "Calibrate all" aligns several devices at once.

🖥️

Optional screen video

Share the screen alongside audio: royalty-free AV1 (GPU where available, else CPU) with a VP9 fallback, decoded via WebCodecs and kept aligned to the same master clock.

How it works

Three steps to a synced room.

1

Run the server

Launch newfoundsync on a Windows PC. Pick a source — all apps, one window, or full system output — and optionally enable screen video. It captures, encodes, and serves a tiny web app.

2

Open the URL

On any device, browse to the server's address (or scan its QR). Accept the one-time self-signed certificate — browsers only expose WebCodecs in a secure context, even on a LAN.

3

Tap Start

The client clock-syncs, fills its buffer, and joins. Add more devices and they all land the same sample together. Tune volume and sync per room from the server's mixer.

Get it

Build from source.

Newfoundsync is a Rust Cargo workspace. The web client is embedded into the binary, so there's no separate front-end build.

  • Needs Rust (stable) and, for the Opus codec, a C toolchain + CMake (vendored libopus builds at compile time).
  • Capture is Windows-only today (WASAPI loopback + Media Foundation video). The browser client works everywhere; a Linux server is a planned port.
  • Binary lands at target/release/newfoundsync.exe.

Full README & source ↗

# clone & build git clone https://github.com/ahurshey/newfoundsync cd newfoundsync cargo build --release # run the GUI server… newfoundsync # …or headless from flags newfoundsync --headless --video --fps 60