RF Spectrum — 470–614 MHz
Shaded band is the local TV whitespace picture for the simulation; markers are your assigned channels. Watch for markers drifting toward an occupied channel.
Event Log
Dropouts, battery warnings, and segment changes, newest first.
Find your name. Green means your mic is healthy — if your card turns red, hand the mic to the stage manager before the next song.
ProPresenter · Clock
Countdown Timer
Service Flow
Mic Status
Roster & assignments
Who is on which mic this Sunday — pulled from the service plan, not typed from memory. Load the simulated Planning Center plan below and the board fills every channel card, Green Room card, and mix label across all views. Change an assignment here and it changes everywhere.
Positions come from PCO (Worship Leader, Lead Vocal, BGV, Pastor, Prayer…). The mapping table decides which position lands on which channel slot — Worship Leader → VOX LEAD, Pastor → PREACH, and so on. Anyone scheduled whose position has no mapping is flagged, never dropped.
Channel assignments
Slot = the channel label on the receiver (VOX LEAD, PREACH…). Mix = whose personal mix it is. Reassign a slot with the dropdown — Engineering, Green Room, and Video Wall update on the next tick.
| Slot / Channel | Assigned to | Position | Mix | Reassign |
|---|
Position → channel mapping
This is the rule the import follows. Change a mapping, then load the plan again to re-apply it. Set a position to “No channel” and everyone in it will be flagged as unassigned.
Service order — from the plan
Currently showing the board’s built-in segments. Loading the PCO plan replaces these with the plan’s service-order items and drives the segment rotation, Green Room header, and Video Wall flow.
Sunday team — roster cards
The same people as the table, the way the Green Room reads them: photo-initial avatar, name, position, slot, and mix. These are the cards talent looks for backstage.
What the simulated import contains
Structured the way the PCO Services API returns it — so the real relay is a data swap, not a redesign.
| PCO object | Fields used here | Drives on this board |
|---|---|---|
| Plan | title · service type · date / time | Plan header above |
| Item (service order) | title · length · item type | Segments, countdown flow, Video Wall “Service Flow” |
| Team member | name · position · status (confirmed) | Channel name, avatar, role on every card |
| Position mapping (ours) | position → slot | Which channel a person lands on; unmapped = flagged |
Sample plan below is fictional demo data for BCX week (Sunday, November 15, 2026). Photos are initial avatars in this prototype — the real import can carry PCO person photos through the same relay when available.
This page is the hosted site
You’re looking at it on a real hosted website right now — that’s why the link works on any phone, tablet, or booth computer at BCX with nothing to install. The board, views, and alerts are finished. What’s still simulated is only the data source behind the cards.
To pull an actual feed, you don’t rebuild the website. You add one small program — a collector — on the same network as the wireless receivers, and point this page at it. Below is the exact plan, the hardware check, and a live connection slot you can test the moment a collector exists.
- Now: Demo / layout reference with simulated channels
- At BCX: Ask for the receiver make & model (photo of the RF rack is enough)
- When live: Same link, same cards — collector data replaces the simulator
How do I hook things to it? — physical hook-up, in order
You don’t plug mics or audio cables into this board. The board only watches data — audio keeps flowing receiver → console exactly as it does today. If you unplug the board, the sound never notices. You’re adding one small data network beside the audio, in about 10 minutes.
- 1
Put a small network switch by the RF rack
Any unmanaged gigabit switch (5–8 ports is plenty). Place it next to the wireless receivers and plug it into power. This switch is the meeting point for everything below — nothing connects to the internet or the house network.
- 2
Cable each receiver to the switch
One Cat5e / Cat6 Ethernet cable per receiver: from the receiver’s rear NETWORK / CONTROL / Ethernet port (not the audio XLR out) into any port on the switch. No Ethernet port on the back = that receiver can’t report data — see the Receiver check below.
- 3
Cable the collector laptop to the same switch
A second Ethernet cable from a spare laptop / mini-PC into the same switch. Turn its Wi-Fi off so it stays on the show network, and set its wired address to a fixed
192.168.1.50. This laptop runs the collector program — it’s the only new software in the chain. - 4
Give each receiver a fixed address
In each receiver’s front-panel menu (Network → IP → Manual), set
192.168.1.101,102,103… one per unit, subnet255.255.255.0. Fixed addresses mean the collector finds the same receiver in the same place every Sunday, even after a power cycle. - 5
Power up in order, then connect this board
Switch first → receivers second → collector last. Wait ~30 seconds, start the collector, then on this page go to Live Feed Tester below, leave the address as
ws://192.168.1.50:8765/rf, and press Connect to live feed. The badge at the top flips from SIMULATED to LIVE and the cards start moving on real data.
What plugs where — at a glance
| From | Cable | To |
|---|---|---|
| Each receiver — Ethernet port | Cat5e / Cat6 | Network switch (any port) |
| Collector laptop — Ethernet | Cat5e / Cat6 | Same switch |
| Receiver audio out (XLR) | XLR — unchanged | Console / Fairlight, as today |
| Booth / green-room screen | Wi-Fi or Ethernet | This board’s link — or the same switch if you run the board locally |
| Antennas | Coax — unchanged | Receiver antenna A / B, as today |
What you don’t need: internet at the rack, a cloud account, or any change to the audio path.
Stuck? Work down the list: is the switch light on for that receiver’s port? Is the laptop’s Wi-Fi off? Do the receiver IPs and
192.168.1.50 share the same 192.168.1.x range? Those three checks fix almost every no-feed case.
To undo a live connection, press Back to simulation in the tester — or press ↺ Reset board at the top of any view, which disconnects the feed and restores the soundcheck state.
Wireless receivers
Shure / Sennheiser networked receivers already know RF level, audio, battery, and frequency for every channel — continuously.
Collector program
A tiny program on a laptop / mini-PC on the venue network. Polls the receivers every 250 ms over Ethernet. This is the only new piece of software.
WebSocket feed
Collector publishes one simple JSON stream: { ch, rfDbm, audioDb, batteryPct, freq } — no accounts, no cloud needed on a local show network.
RF Board (hosted)
This hosted page subscribes to that stream and drives the exact cards you see now. Engineering, Green Room, and Video Wall all read the same feed.
Why the browser can’t talk to receivers directly
This is a browser rule, not a limitation of this board — and it’s why every product like this uses a collector.
- !Different networks: This hosted page lives on the public internet. Receivers live on a private venue LAN with addresses like 192.168.1.x that the internet can’t reach.
- !Different protocols: Receivers speak vendor network protocols (Shure / Sennheiser control ports), not web protocols a browser is allowed to open.
- ✓The fix is small: The collector sits on that LAN, translates vendor data → WebSocket JSON, and this page does the rest. Put the collector and the viewing screens on the same show network and no internet is even required.
Deployment options for the live version: (a) keep this hosted page and connect it to a collector via a secure tunnel / venue VPN, or (b) run this same single HTML file locally next to the collector — it’s fully self-contained, so both work with zero rebuild.
Will it work with the rig? — Receiver check
Pick what’s in the rack. This decides live vs. impossible in one step.
| System class | Live feed? | Path |
|---|---|---|
| Shure ULX-D / Axient | Yes | Network poll — RF, audio, battery, freq |
| Sennheiser EW-D / D6000 | Yes | Network poll / Sennheiser Control Cockpit |
| G4 with WSM | Partial | Via WSM data — RF + battery, slower rate |
| Analog, no Ethernet | No | No data exists to pull — hardware limit |
Plan — functionality to build
In priority order for a real show. The board already handles everything in the right column visually.
- 1
Collector v1 — read-only
Poll one receiver brand, publish the WebSocket stream, auto-reconnect. No control, only monitoring — safest first step.
- 2
Channel mapping
Map receiver channels → names / roles / photos (Daniel, Sarah, Pastor…) in a small config file the engineer edits per show.
- 3
Alerts that reach people
Same thresholds as this prototype (RF < −78, battery < 30 / 20%) plus a push / sound cue in the booth so a dropout isn’t missed.
- 4
Show mode for BCX
Read-only Green Room link for talent, Engineering link for FOH — same feed, different views, no login on the local network.
Later — only if wanted
Useful, but not needed for v1 to be genuinely live.
- Frequency coordination — import a scanned / coordinated frequency list and flag conflicts on the spectrum strip
- Recording / replay — log the whole show’s RF history to replay a dropout after the service
- Remote control — mute / gain from the board (requires write access — add only with a kill switch, like the Fairlight bridge plan)
- ProPresenter + NDI, real — replace the simulated clocks / cameras in Video Wall with the actual ProPresenter stage display and NDI sources on the same LAN
What I need from you
Three facts unlock the entire live build. Everything else is already decided above.
- ✓Hosted board — done. This site, shareable link, three views.
- 1Receiver make + model — a photo of the RF rack front + back (network ports) at BCX or CAC
- 2Network access — can a laptop join the same wired network / switch as the receivers during a show?
- 3Channel list — who’s on which mic for the show you want to run it on first
Send the rack photo and I can name the exact collector to build — Shure and Sennheiser need different pollers, and there’s no generic one that does both well.
Live feed tester — connect this board to a collector
This is real, working code in this page — not a mockup. When a collector is running, paste its WebSocket address here and the Engineering cards switch from simulation to the live stream.
Note: a public https page can’t open a plain ws:// connection to a private LAN address from home — that test has to happen on the show network (or with the board file running locally next to the collector). The “demo frame” button proves the live path inside this page right now.
Collector — what gets built
Small, single-purpose, runs on any spare laptop. Sketch for planning — brand-specific polling fills in once the rack is known.
- A
Discover
Find receivers on the LAN (fixed IPs recommended — set them once in the receiver menu so addresses survive power cycles).
- B
Poll
Every 250 ms read per channel:
rfDbmaudioDbbatteryPctfreqMhzantenna - C
Publish
Serve
ws://<collector-ip>:8765/rfwith the JSON frame above. That’s the whole API — this page is the only client it needs. - D
Survive the show
Auto-restart on receiver dropout, heartbeat in the feed status above, and a plain-text log file for after-show review.
BCX checklist — ask at the rack
- Receiver brand + model for every RF channel?
- Are receivers on a network switch I can plug a laptop into?
- Who owns RF coordination — can I get the frequency list?
- Is there a spare wired drop / switch port near FOH or the RF rack?
Data contract — every field on the cards, mapped to its real source
Nothing on this board is decorative. Each reading has a named source in a networked receiver, which is how you know the live version is a swap, not a redesign.
| Board field | Receiver source | Rate | Shure | Sennheiser |
|---|---|---|---|---|
| rfDbm | RF signal level, active antenna | 4–10 Hz | Yes | Yes |
| audioDb | Receiver audio output level | 4–10 Hz | Yes | Yes |
| batteryPct + ETA | Transmitter battery telemetry | ~1 Hz | Yes | Yes |
| freqMhz | Tuned frequency | On change | Yes | Yes |
| antenna A/B | Diversity antenna activity | 4 Hz | Yes | Yes |
| RF history graph | This page — rolling 60 s buffer of rfDbm | — | Built from the stream, no receiver support needed | |