intercom at the yard
overview
web intercom for multi-zone voice announcements at nyu tandon at the yard. raspberry pis in different parts of the building run the app in a browser, hooked up to speakers, and someone at a mic can hold talk to broadcast into one zone, several zones, or all of them at once. built on p5LiveMedia (webrtc over p5.js). during my internship at nyu idm i added a music mode: pick blackhole 2ch or a mic as input and route system audio through the same talk pipeline, so you can send music to endpoints without rebuilding the whole intercom stack. my contribution is in pr #7 on the idm repo.
features
- hold-to-talk interface sends live audio to specific zones or every zone at once
- each endpoint is just a browser on a pi pointed at the deployed app
- music mode lets you broadcast from blackhole 2ch instead of a microphone
- audio input selector in settings, default mic stays default when nothing else is picked
- minimal diff on upstream: keeps existing peer handling, zone routing, and hold-to-talk behavior
technical details
- p5.js + p5LiveMedia for webrtc peer connections between controller and endpoints
- zone array messages, receiver muting, and hold-to-talk routing unchanged from upstream
- settings popup adds microphone vs blackhole 2ch selection with matching existing ui styling
- selected device id saved to local storage; page reload reconnects capture through original p5LiveMedia init
- optional music mode reuses the same talk path instead of a separate audio pipeline
- deployed on vercel with a private room name in env (see upstream readme)
source
github.com/IDMNYU/Intercom-At-The-Yard · pr #7 (music feature)