Try it now

History

Nine months.
One system.

Every prototype, rewrite, and shipped feature in the path from one AnalyserNode to a real-time sync platform.

App
About
Design System
History

Nine months. One developer. A new way to listen together.
Every prototype, every rewrite, every shipped feature — from a single AnalyserNode to a full real-time sync platform running on WebRTC, Cloudflare, and encrypted remote file transfer.

Prototype · Aug–Dec 2025

Phase 01
Prototype

Three independent threads — frequency analysis, P2P sync, channel routing — built separately, merged in January.

MUSIXQUARE starts as a solo-device audio visualizer in August 2025. No sync, no network — just a single AnalyserNode, frequency bands, and a Canvas loop. But the audio-graph plumbing laid down here — configurable cutoffs, per-band smoothing — survives into the final product.

October brings the first real P2P attempt: two phones, PeerJS over WebRTC, a dual-strategy sync algorithm with hard-jump and playbackRate nudge. November strips it down to a countdown-based start — simpler, more reliable. December shifts to channel routing: ChannelSplitter, per-band GainNodes, a subwoofer LPF. The name, the wordmark, the signature #3b82f6 blue — all settle into final form in late December.

Build · Jan–Apr 2026

Phase 02
Build

The three prototype threads merge into a single app. Git history begins. The 12,000-line monolith gets rewritten into TypeScript ES modules.

Between December's channel lab and the first git commit on January 25, everything converges: frequency analysis, P2P sync, and channel routing become one app. That month of intense iteration was only ever saved as the final file. By the time git history starts, MUSIXQUARE already ships Host / Guest + QR invite, a full audio-effect chain (reverb, 5-band EQ, virtual surround), Nudge Sync, and a 7.1-channel role picker.

February unlocks remote connections via Metered TURN and starts the TypeScript rewrite — 12,018 lines of app.js broken into strict-mode ES modules under src/. March and April pile on: chat with slash commands, beat detection with Phase Sync, the SharedClock architecture that makes sync genuinely reliable across flaky networks, and YouTube 2-stage sync with rendezvous handshake.

Ship · May 2026

Phase 03
Ship

RAM-only storage, encrypted remote file sharing, Cloudflare TURN and Realtime SFU, and a full WebRTC transport migration — all in one month.

Milestone · May 1, 2026
Product Hunt — Featured · #13 of the day · 80 upvotes
First public launch. Listed on Product Hunt the same week remote file sharing and the Cloudflare SFU path shipped. Featured within hours, finished 13th for the day with 80 upvotes — enough to validate the core idea and surface the next set of real user needs.

Infrastructure · Today

Current
Live

Two vendors, deliberately chosen. No proprietary lock-in beyond what each does best.

Cloudflare
Signaling · TURN · SFU · Remote storage
Durable Objects handle WebRTC signaling — ICE candidates, offers, and answers route through a persistent Worker per room. TURN relays traffic when direct P2P fails (Metered fallback retained). Realtime SFU carries remote system audio — host publishes once, remote guests subscribe. R2 holds encrypted remote file transfers for the duration of the sharing session.
Netlify
Hosting · Edge functions
Static site hosting with edge-deployed functions for OG image generation (Satori + resvg-wasm, per-page) and TURN credential issuance (short-lived signed credentials, not exposed client-side). SPA fallback, security headers, and immutable asset caching configured via netlify.toml.
WebRTC · In-browser
P2P sync · Chat · Local system audio
Data channels carry playback control, playlist sync, chat, and nudge-sync payloads between all peers. Local system audio travels direct P2P via a media call — no relay, lowest latency. Remote system audio routes through the Cloudflare SFU path above. ICE candidate handling is fully queued and flushed per peer — no candidate is lost during SDP negotiation.
Browser · Client
Audio engine · Storage · Build
Native Web Audio API — no Tone.js. AnalyserNode → BiquadFilter → ChannelSplitter → per-channel Gain → Merger → Convolver → destination. RAM-only slot pool for audio tracks — no disk writes, no OPFS. Vite + TypeScript ES2022 strict-mode build. Service Worker for offline shell caching.

Ahead

Upcoming
Planned

No commitments, no dates. These are the next honest priorities once the Cloudflare infrastructure proves stable.

Pro tier — large rooms and license flow
Free rooms stay conservative. A license path unlocks larger participant counts for the host. The SFU removes the worst remote system-audio pressure, but host CPU and support burden still need clear caps.
Next
7.1-channel UI
The engine already supports FL / FR / Center / LFE / Side L·R / Rear L·R routing. The UI was parked for UX complexity. Will re-surface when demand is clear.
Gated
Native mobile app for system audio
iOS and Android don't implement getDisplayMedia({audio}). A native app would route system audio through screen-capture APIs, at the cost of install friction.
Later
Infrastructure consolidation
Netlify handles hosting and edge functions well. A future move to Cloudflare Pages / Workers would reduce vendor count, but only after Worker limits and billing alerts are fully understood.
Later

Platform Walls

Won't fix
Not ours

Documented to stop re-litigating them. These are external constraints, not product decisions.

YouTube effects and channel routing
The YouTube IFrame API does not expose raw audio to Web Audio. EQ, reverb, surround, and channel routing cannot apply to YouTube playback — this is a Google DRM / CORS wall, not a missing feature.
Google
System audio on iOS and Android
getDisplayMedia({audio: true}) is not implemented by mobile browsers. System audio sharing is a desktop-only feature until mobile OS APIs allow it.
OS Limit
Spotify · Apple Music · Tidal and DRM streaming
DRM-protected streams cannot be captured or routed through Web Audio. Integration would require per-platform licensing agreements — not viable for a free solo project.
DRM