Hear the room.
Tap the four pads. Every other person who has this page open right now will hear your taps in your color, and you'll hear theirs in theirs. It's the same drum bus the rest of PointCast runs on. Latency is about two seconds. Send this link to a friend and you'll be in the same room.
RECENT TAPS
Your taps appear in flame. Others appear in their own color, hashed from their session.
How this works
When you tap a pad your browser POSTs a small JSON event ({type:'drum',seed,sessionId}) to /api/sounds. The server hashes your session into a 10-character pid and stores the event in a rolling 50-event KV buffer with a 30-second age cap.
This page polls /api/sounds?since=<lastT> every ~1.8 seconds. Any event whose pid isn't yours fires the corresponding drum locally — slightly quieter than your own taps, slightly pitched up or down by a hash of the sender's pid so two strangers don't sound identical. The activity row at the bottom paints a small dot per recent tap in each pid's color.
It's the same bus the rest of PointCast runs on. Tap a noun on the home page, an emoji on a profile, a drum on /drum-v2, or here — every cast surface (/drum-tv, /drum-radio, /drum-viz) reads the same buffer.
Why latency is ~2 seconds: it's KV + polling, not WebSockets or Durable Objects. The trade is "good enough for room vibes" against operational complexity. If three of you are in the same room with your phones, the loop closes — you can play call-and-response slowly across the latency.
Send this link to a friend in iMessage. The page renders a rich preview, and when they tap through both of you are in the same room.