Beatsync is a high-precision web audio player built for multi-device playback. The official app is beatsync.gg.
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
Note
Beatsync is in early development. Mobile support is working, but experimental. Please consider creating an issue or contributing with a PR if you run into problems!
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 |