Skip to content

Flow Now Playing

Tobias Vorwachs edited this page Oct 26, 2026 · 1 revision

Part of the Plugin data protocol. Packet: Packet-mumcord-nowplaying. Sibling flow: Flow-Now-Gaming.

Flow: now playing

Shows the track a user plays in their media player to everyone on the server.

sequenceDiagram
    participant A as Client A (user plays music)
    participant S as Mumble server
    participant B as Client B (any other client)
    A->>A: player reports a new track, play or pause, or a seek
    A->>S: plugin data mumcord.nowplaying
    S-->>B: relayed
    loop every 30 s while sharing
        A->>S: same payload again
        S-->>B: relayed
    end
    Note over A,B: A newcomer gets the current payload once, after the hellos
    A->>S: payload without title (stopped)
    S-->>B: relayed, B clears the track
Loading

Steps

  1. The client polls the local media player every 2 seconds (POLL_INTERVAL). A change of track, of play or pause, or a seek that deviates more than 3 seconds from the expected position counts as a change.
  2. On a change, the client sends mumcord.nowplaying to everyone on the server. It also resends the unchanged state every 30 seconds (RESYNC) so that people who missed it catch up, and sends it once to each person who joins.
  3. The receiver shows title, artist, album, a progress bar and the cover. It anchors the position to its own arrival time, then advances it locally while playing is true.
  4. When the user stops or turns the setting off, the client sends {"v":1}; receivers clear the track.

For official Mumble clients, which ignore the packet, the client also writes a short "Artist - Title" line into the user's comment, after waiting a few seconds (COMMENT_SETTLE, 5 s) so that quick skips do not spam the server.

Limits and errors

  • Payload below 1000 bytes: the sender drops the cover link first, then the album, then shortens title and artist.
  • Title and artist at most 120 characters, cover link at most 300 bytes and only http or https.
  • Lost updates are repaired by the 30-second resend. There is no acknowledgement.
  • Unknown fields are ignored; v below 1 drops the message.

Packets used

Packet-mumcord-nowplaying, with Packet-mumcord-hello for joining people.

Clone this wiki locally