Spotify works.
But <5ms is on local files.
Short answer: v1.0 ships Stream Mode — Spotify Connect and Apple Music work, with ~300ms drift (AmpMe-class). For studio-grade <5ms sync, you need Tight Sync mode with local files. Both modes clearly labeled in the UI, two parallel promises. Long answer below.
Technical: what does DRM block?
Choir's sync engine hands raw PCM audio buffers directly to each device's AVAudioEngine and uses AVAudioTime(hostTime:) to schedule playback against the mach clock with full precision. This architecture is mandatory for sample-level start (every device at the same microsecond).
Spotify and Apple Music don't expose raw PCM to apps because of DRM. The stream is decoded inside a closed player, sample-level access is deliberately blocked at the API. This is part of the music industry's licensing terms.
If we added Spotify integration, Spotify audio couldn't enter Choir's sync engine. Instead of the "one beat" we promise, you'd hear echo across devices.
How AmpMe does it
AmpMe uses acoustic matching: the master phone plays Spotify normally, slave phones listen with the microphone and try to align by ear. This bypasses DRM but the cost is heavy.
Typical AmpMe drift is 200-500 milliseconds. The human ear hears anything above 20ms as "echo" or comb filtering. The most common App Store complaint for AmpMe is exactly this: "sync doesn't hold".
Choir's position is clear: we either do it right or we don't do it. No half measures.
Spotify Connect Group Session already exists
For Spotify Premium subscribers, Spotify has its own "Group Session" feature. Multiple devices share a queue. But each device pulls its own stream from Spotify servers; there is no sync guarantee, devices can play seconds apart depending on network.
This is not the problem Choir solves. It's a problem Spotify doesn't want to solve, because the architecture isn't built for it.
v1.0 ships Stream Mode
The previous plan parked this in v2.2 as "Cast Mode". 90% of mainstream users live on streaming — closing that door felt too restrictive. v1.0 ships Stream Mode. Choir orchestrates Spotify Connect and Apple Music. Multi-phone stays one session, but ~300ms drift (AmpMe-class). The UI shows an aggressive warning when you pick the mode: "Stream Sync ~300ms drift".
So: Choir's "Tight Sync" mode (local file, <5ms) and "Stream Sync" mode (Spotify/Apple Music, ~300ms) are two parallel promises. Same app, clearly labeled, no mixing. You pay Spotify Premium yourself; Choir takes nothing from it.
I want to play my Spotify song on multiple phones now
Three realistic options, hard to soft:
- Use Choir's Stream Mode: v1.0 includes Spotify Connect and Apple Music. Drift ~300ms (AmpMe-class), but 32 phones in one session. Requires Spotify Premium.
- For local files: buy the track from Bandcamp or iTunes as mp3/FLAC. DRM-free → Tight Sync in Choir (<5ms). Direct artist support.
- For studio reference: use Choir's 3 royalty-free demo tracks. The <5ms sync theory showcase.
Does it work with Apple Music?
Same problem, same answer. Apple Music uses DRM too. Even on its own platform, Apple doesn't expose raw PCM access to Apple Music tracks. Lossless / Hi-Res content also flows through the closed pipeline.
Want to try an app
that keeps its sync promise?
Join the beta. Invite email once Phase 0 measurements are done.
Join beta