freeman-jiang/beatsync: High-precision web audio player for multi-device playback and spatial audio.

by oqtey
freeman-jiang/beatsync: High-precision web audio player for multi-device playback and spatial audio.

Beatsync is a high-precision web audio player built for multi-device playback.


beatsync-demo.mov


  • Millisecond-accurate synchronization: Abstracts NTP-inspired time synchronization primitives to achieve a high degree of accuracy
  • Cross-platform: Works on any device with a modern browser (Chrome recommended for best performance)
  • Spatial audio: Allows controlling device volumes through a virtual listening source for interesting sonic effects
  • Polished interface: Smooth loading states, status indicators, and all UI elements come built-in
  • Self-hostable: Run your own instance with a few commands

Warning

Beatsync is in early development. Currently, only desktop Chrome browsers are fully supported.

Mobile device synchronization is experimental and may be unstable.

This project uses Turborepo.

Fill in the .env file in apps/client with the following:

NEXT_PUBLIC_API_URL=http://localhost:8080
NEXT_PUBLIC_WS_URL=ws://localhost:8080/ws

Run the following commands to start the server and client:

bun install          # installs once for all workspaces
bun dev              # starts both client (:3000) and server (:8080)

Directory Purpose
apps/server Bun HTTP + WebSocket server
apps/client Next.js frontend with Tailwind & Shadcn/ui
packages/shared Type-safe schemas and functions shared between client & server

Related Posts

Leave a Comment