The RCWeb Soundboard (app/soundboard) is a shared room sound effects board. It is designed for phones, tablets, laptops, kiosks, or shared displays where any participant in the same RCWeb room can trigger sounds for everyone.


Soundboard turns each browser in a room into the same set of large sound effect buttons. Pressing a sound button on one device broadcasts a play command to every open soundboard app in that room, so all connected browsers attempt to play the same effect.
The app includes bundled sound effects, supports adding new audio files, and can record microphone audio directly in the browser. Added sounds become new buttons on the board and are shared with other room members through RCWeb's file proxy.
/soundboard/ in a browser.soundboard app in the room.... menu to rename or remove a sound.If the browser blocks audio playback, tap anywhere on that browser once. Browsers usually require a local user gesture before remote audio commands can produce sound.
soundboard client in the same room.Uploaded and recorded sounds are not stored on the RCWeb server. The browser that added the sound keeps the File or Blob locally and shares it through RCWeb's /x-file/ proxy.
That means the source browser must stay open while other browsers use those added sounds. If the source browser closes, refreshes, or leaves the room, other clients may no longer be able to load that audio. When this happens, Soundboard fades the affected button and marks it with an error indicator instead of silently failing.
Soundboard is a symmetric RCWeb app: every browser runs the same app and can both control and play sounds. New or reconnected clients request the current board from peers so they can pick up renamed, removed, uploaded, and recorded sounds.
Board edits such as adding, renaming, removing, clearing, resetting, and importing are broadcast to the room. Playback errors are local to each browser, because a sound may be available on one client but unavailable on another.
RCWeb gives every browser tab a room, app name, and client ID, then connects clients in the same room over WebSocket. Soundboard exposes a small global API and uses rc.sendFunctionCall() to broadcast sound playback and board updates to other soundboard clients.
Large audio data is not sent through WebSocket messages. Instead, the source browser advertises a proxy URL such as /x-file/<room>/<client>/<file-id>/<file-name>. When another browser needs the sound, the RCWeb server asks the source browser for file chunks through rc.sendFileChunk(), and the source browser uploads those chunks back to the requester.
Soundboard is a single symmetric app. Open the same /soundboard/?r=<room> URL on every device that should trigger or hear sounds.