Get desktop application:
View/edit binary Protocol Buffers messages
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
Analyse tracks that have not been analysed yet, in the background.
How many to work through. Analysis is slow and this returns immediately, so a caller asking for the whole library gets a long-running background job rather than a long-running request.
How many were queued. Fewer than asked for means the rest are done.
(message has no fields)
Analysed tracks in the connected library.
Whether a background pass is running.
Still to do in the running pass.
(message has no fields)
Analyse it now if it has not been. Off by default: a client drawing a waveform wants whatever is ready, not a decode blocking the response.
Absent leaves the current target alone; present replaces it whole, so clearing a target means sending an empty one rather than omitting it.
Tracks that would sound good after a given one, best first.
day, week, month, quarter or year.
A floor, not an estimate: sources that record no duration (a bare scrobble) contribute nothing.
Tracks that most often open a session.
Mirror anything the player has recorded since the last call. Safe to call often — it is incremental and does nothing when there is nothing new.
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
The tracks the user has liked. On a remote provider these are *its* likes — Subsonic's starred songs, Jellyfin's favourites. There is no fallback to the local list: those ids belong to a different library, so the rows would render but not play.
Like/unlike a track. The like itself lives with the client; the daemon forwards it to Rocksky (no-op without a `rocksky login` token).
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
Snapshot of the DSP chain settings. Integer enums follow the Rockbox firmware conventions used by the desktop UI: - replaygain_type: 0 track, 1 album, 2 track (shuffle), 3 off - crossfade: 0 off, 1 auto track change, 2 manual track change, 3 shuffle, 4 shuffle or manual skip, 5 always - fade_out_mixmode: 0 crossfade, 2 mix
dB x10, 0..240
dB
dB
-100..100
dB x10, -120..120
s, 0..7
s, 0..15
s, 0..7
s, 0..15
(message has no fields)
(message has no fields)
Set a single audio setting by name; `name` is one of: eq_enabled, eq_precut, bass, treble, balance, rg_type, rg_preamp, rg_noclip, crossfade, fade_in_delay, fade_in_duration, fade_out_delay, fade_out_duration, fade_out_mixmode, dithering. Booleans use 0/1; eq_precut and rg_preamp are dB x10.
(message has no fields)
0..9 (32 Hz .. 16 kHz)
dB x10, -240..240
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
The playback modes, so a client can restore its own controls to what the daemon is actually doing rather than assuming "off".
0 off, 1 all, 2 one.
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
A meter needs tens of updates a second, which is no way to poll — the daemon pushes instead, and stops when the client goes away.
(message has no fields)
Output levels for a meter, measured on the PCM leaving the device.
0..1 RMS over one output buffer.
The same signal below roughly 200 Hz, which is what makes a meter move with the bass rather than with whatever is loudest.
Coarse spectrum, low band to high — what a bar visualiser draws.
Present for a smart playlist: the tracks are generated from this filter rather than taken from `tracks`, and regenerated whenever the library changes. Absent creates an ordinary hand-picked playlist.
(message has no fields)
(message has no fields)
How many tracks a filter would match, without saving anything — what the "N tracks match" line under a filter box calls.
How many tracks the filter matches.
The first few, so a form can show what it caught.
Why the filter did not compile; empty when it did.
Re-run a smart playlist's filter against the library as it is now.
Saved servers, and which one the library is read from. Connecting cannot interrupt playback: a provider is where the screens read, and nothing here can reach the player.
Omit to keep whatever is stored: the password is never handed back, so a blank field cannot mean "clear it".
(message has no fields)
(message has no fields)
Absent means the daemon's own library.
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
0 off, 1 all, 2 one.
(message has no fields)
(message has no fields)
Used in: ,
Tracks queued after the current one. Auto-DJ tops this up rather than choosing one track at a time, so the next few are always visible.
How many tracks it has to choose between. Zero means nothing in the library has been analysed yet, and auto-DJ can do nothing until it has.
Where auto-DJ should steer the set. Absent fields mean "wherever the music goes" — the set still flows, it just is not being pushed in any direction.
Used in: ,
Used in:
0 = Sunday.
Used in:
One parametric-EQ band. `q` is the Q factor x10, `gain` is dB x10 (so the wire format stays integer while the UI works in 0.1 dB steps).
Used in:
Hz
Q x10
dB x10
Used as response type in: PlaylistService.GetFolderDetails
Used as field type in:
Used as response type in: PlaylistService.GetPlaylistDetails
Used as field type in:
Present when the server reported one; a detail call carries the entries anyway, so this is for consistency with the listing.
Used in:
Used in: , ,
The artist, for a track or album row; empty otherwise.
Which listens a question is about. `since`/`until` unset means all of recorded history, which may span years once an export has been imported.
Used in: , , , , , , ,
Unix seconds, inclusive.
Unix seconds, exclusive.
Count only tracks the local library has. Matched on title+artist, so a play imported from Spotify still counts when the same track is in the library — the question is "my history, for music I own", not "plays that went through this player".
A remote music server the user has saved. This is where a library is *read from* — a different question from where the audio comes out, which is a cast device. The password is stored but never returned; callers are told only whether one is set.
Used in: , , , ,
The provider-registry key: "subsonic", "jellyfin", "music-player", ...
Absolute, scheme included.
The library screens are currently reading from this one.
Used in:
Median fraction of the track heard before moving on.
A smart playlist's rule: an RSQL filter over the track fields, plus how to order and cap the result.
Used in: ,
e.g. `genre==rock;year>2000`. Empty matches the whole library.
A track field to order by, or `random`.
`asc` or `desc`.
Maximum tracks. 0 is unlimited.
Where the history came from, and how much of it survived deduplication.
Used in:
One kind of server this build can talk to, straight from the provider registry — so a newly registered backend offers itself to every client without any of them being changed.
Used in:
False for backends with no login, so a form can hide those fields.
Set for a backend that always talks to one address, so a form can drop the url field instead of asking for something it ignores.
Used in:
Used in:
Peak per display bar, 0-255, left to right. Empty when the track has not been analysed.
How much to believe the bpm, 0-1.
-1 dark to 1 bright.
0 calm to 1 driving.
Integrated loudness, LUFS.
Seconds, as decoded rather than as the tags claim.
False means nothing has been computed yet; every other field is then empty rather than zero.
Used in: