RCWeb Radio Controls

The RCWeb Radio Controls app (app/radio-c) is the phone and tablet controller for the RCWeb Radio (app/radio).

icon

Screenshot

screenshot

Overview

This app gives users a remote control surface for every active radio display in the same RCWeb room. It loads the station list from /radio/stations.m3u, presents it as a searchable list, and sends the selected stream to the display app for playback.

Multiple phones can use the control app at the same time. Each controller receives display state updates and can select stations or adjust playback for the shared room.

How to use

  1. Open /radio/ on the main display.
  2. Scan the QR code shown by the display.
  3. Search or scroll the station list.
  4. Tap a station to start it on the display.
  5. Use the playback and audio controls to pause, resume, mute, or change volume.
  6. Use the display controls to show or hide the station title, QR code, and stats panel.

Station controls

  • Loads stations from the display app's stations.m3u file.
  • Extracts station names from each #EXTINF header.
  • Filters stations locally as you type in the search box.
  • Shows each station name with its stream URL.
  • Highlights the currently selected station when the display reports it.
  • Sends the selected station name and stream URL to all matching radio displays in the room.

Playback controls

  • Play and pause the current radio stream.
  • Mute or unmute the display audio.
  • Adjust viewer volume with the volume slider.
  • Restore the selected station to a newly opened or refreshed display.

Display controls

  • Show or hide the station title on the main display.
  • Show or hide the QR code on the main display.
  • Show or hide the main display's diagnostic stats panel.

Multiple viewers and controllers

The control app sends commands to all radio display apps in the room while excluding control apps. This means one phone can control many screens, and several phones can operate the same shared radio display state.

When the control app starts, it requests the current state from displays in the room. This keeps the controller aligned with the station, playback status, overlay settings, mute state, and volume currently active on the display.

How RCWeb makes it possible

RCWeb assigns each browser tab an app name, room ID, and client ID, then connects clients in the same room through WebSocket messaging. radio-c uses the RCWeb communication helper to call functions on matching viewer apps.

The key target for display commands is radio!*-c. In RCWeb targeting terms, this means "send to radio apps, but exclude radio-c apps." That lets controls update all viewers in the room without accidentally sending player commands to other control screens.

State also flows back the other way. Viewers publish snapshots containing the current station, player state, overlay settings, mute state, volume, and room details. Controls render those snapshots so the phone UI reflects what the display is doing.

Related app

Use this app with RCWeb Radio Display (app/radio).

DocumentationServer TelemetryServer StatsServer HTTP LogServer WebSocket Log