Repository navigation
Artwork and Metadata
What the player shows while a station plays comes from three places: what the station transmits, what the broadcaster publishes, and what a music database knows about the song the station names.
| FM | DAB / DAB+ | |
|---|---|---|
| Station name | RDS programme service name | service label |
| Text | RDS RadioText, and RadioText Plus tags where sent | Dynamic Label (DLS), and DL Plus tags where sent |
| Pictures | none | slideshow pictures (MOT) |
| Identity | RDS programme code (PI) | ensemble and service identifiers |
RDS needs clearly better reception than listening does. A station that plays with some noise may show no text at all.
- Title: the station's name.
- Text: where the station's text names a song, its artist and title; otherwise the text as sent, or, with song recognition on, the artist and title recognised from the sound.
-
Picture, in this order:
- On DAB, the newest picture the station sends with its programme (slideshow), as it arrives.
- The cover of the song, when the text names one and a cover is found, or when the song was recognised from the sound.
- The station's logo; see Station Logos.
- The FM or DAB icon.
Which picture is shown at a given moment:
flowchart TD
slide{"DAB station sending<br/>a slideshow picture?"}
slide -- "yes" --> p1["The newest picture<br/>from the station"]
slide -- "no" --> song{"Does the text name a song<br/>clearly enough?"}
song -- "yes" --> lookup{"What does the<br/>music database say?"}
lookup -- "a cover" --> p2["The song's cover"]
lookup -- "known, without a cover" --> logo
lookup -- "not known" --> kept
song -- "no" --> kept{"Is a cover still kept?<br/>(persistence, timeout)"}
kept -- "yes" --> p3["The cover shown before"]
kept -- "no" --> logo{"Station logo<br/>known?"}
logo -- "yes" --> p4["The station's logo"]
logo -- "no" --> p5["The FM or DAB icon"]
With covers kept per artist, a song by the same artist keeps that artist's cover where the song itself has none.
The plugin reads the station's text, works out whether it names a song, and looks the song up at Last.fm for its album and cover. For classical works that Last.fm has no cover for, the composer is looked up at Open Opus. It is called best effort because broadcast text is inconsistent: stations format it differently, RDS has bit errors, and slogans, adverts and presenters' lines are mixed in.
- Text arrives ("Now playing: Dua Lipa - Levitating").
- The plugin looks for artist and title: from the tags the station sends with the text where it does, otherwise from the shape of the text.
- It gives the result a confidence, according to how clearly the text reads as artist and title.
- If the confidence reaches the threshold and nothing in the text is on the block list, the song is looked up.
- A cover that is found is kept, so that the same song shows at once the next time.
- The station sends no text, or only its name.
- The text is not about a song (news, adverts, a presenter).
- The confidence is below the threshold.
- The song is not known to the database, or is known without a cover.
- A phrase in the text is on the block list.
- There is no internet connection.
A station's text changes every few seconds: the song, a slogan, the presenter, the song again in other words. The picture on the screen follows the song, not the text:
- The song whose cover is shown, named again: nothing changes.
- A new song: the picture on the screen stays until the new cover has been found, and is then replaced by it. The station's logo is not shown in between.
- A song that is known and has no cover: the station's logo is shown, not the cover of the song before (unless covers are kept per artist and the artist is the same).
- A text that names no song, or a line read as artist and title that no music database knows: the picture stays, for as long as the persistence and timeout settings keep a cover.
Plugin settings > Artwork Settings:
| Setting | What it does | Suggested |
|---|---|---|
| Best Effort Artwork | Switches text parsing and cover lookup on or off. Off, the raw text is shown with the station's logo. | On; off for a player without a screen |
| Confidence Threshold | How clearly the text must read as artist and title before a lookup: 0 % (always), 20, 40, 60, 80, 95 % | 60 %. Lower it if covers are missing, raise it if wrong ones appear. |
| Artwork Persistence | When a cover gives way: Keep until artist changes, Keep until track changes, Always refresh | Keep until artist changes |
| Artwork Timeout | Returns to the station's logo after 2 to 30 minutes without a new artist. A cover whose time is up leaves the screen with the next text that brings nothing to take its place. | Disabled; a few minutes for speech and long mixes |
| Artwork Cool-off | The shortest time a picture stays before another may replace it: off, 1, 2, 3, 5 or 10 seconds. Changes that come within that time are skipped except the last. The text is never held back. | 2 seconds |
| Artwork Debug Logging | Writes every lookup to the player's log | Off |
Many stations send no text, or text that names the programme and not the song. With a key of your own from AudD, a service that identifies music from a short piece of audio, the plugin can tell what is playing from the sound itself: artist, title and cover, as the apps that listen to a song do.
This project is not associated with AudD and endorses no paid service. AudD is the service the plugin can talk to because its interface identifies a short piece of broadcast sound, which is what a radio has to offer; the account, the token and whatever it costs are yours, not the plugin's. AudD offers no plan for developers or for open-source projects, so there is no key that comes with the plugin, and the plugin does everything else without one.
- Setting it up: Song Recognition on the plugin's settings page, or Station Manager > Maintenance > Song Recognition; both set the same switch, token and choice. Off keeps the token. The token is shown in clear on the settings page, and in the Station Manager on a press of the eye beside its field. Without a token nothing is sent anywhere.
- When it asks: by default only when the station's text names no song; set to Always it asks for every song. It asks fifteen seconds after a station starts, with twenty seconds of the sound on its way to the loudspeaker, and shows a song only once a second question thirty seconds later gives the same answer, so that a single odd answer (a remix named for the original, a mash-up) is not shown. The service also says where in the song the sound was, and nothing more is asked until that song is over. Where it recognises nothing (talk, advertisements, a song it does not know) it asks again after a minute and a half, then after three minutes, then six, until a song is recognised or another station plays, so that talk does not spend the questions. A music station costs a question or two a song.
- What it shows: the song's artist and title ahead of the station's text, and its cover from Apple Music or Spotify, as the service names it, until the song is over by the service's time or another is recognised. A song the broadcaster itself tags in its text (RT+ on FM, DL Plus on DAB) comes first; a song merely read out of plain text does not push a recognised one aside.
- What it costs, and where the sound goes: each question counts against the plan of your AudD account; a music station takes a question or two a song, and a station whose text names its songs takes none. Prices are AudD's, not the plugin's, and may change: as of October 2026 a new account starts with 300 free questions, and the smallest paid plan is US$5 a month for 1,000. Twenty seconds of the broadcast leave the player to AudD with each question. The token is kept in the plugin's settings and goes with a settings backup; the Station Manager shows only its last four characters.
- When it stops: switched off, nothing is asked and the token is kept. If the service refuses the token (wrong, or its plan used up), recognition stops and the Maintenance section says so; enter a token to go on. A request that fails for other reasons is tried again after five minutes.
FM and DAB alike. The player's log says what was recognised ("Song recognised: Ariana Grande - One Last Time (1:43 into it)") and why a question was not asked.
Station Manager > Artwork Block List: one phrase per line. Text that matches a phrase is never looked up as a song. Matching is tolerant of small differences, so RDS errors and variations are caught.
Use it for what your stations send that is not a song: slogans, show names, presenters, local adverts. When a wrong cover appears, add the text that caused it.
The plugin also has built-in patterns for frequencies, web addresses, telephone numbers and technical data. They are always active and are not part of the list.
Reset to Defaults restores the list the plugin comes with. The block list has its own backup; see Backup and Restore.
- A DAB station is listed under the name its ensemble gives it.
- An FM station is listed as "FM" and its frequency until its name is known. The name comes from the broadcaster's own list once the station's RDS programme code has been received, or from RDS itself after the name has stood unchanged for half a minute.
- A name you give a station in the Station Manager is never changed by any of this.
FM/DAB Radio for Volumio · Source · Community thread · GPL-3.0
Using the radio
- Installation
- Getting Started
- Playing Radio
- Scanning
- Gain, Frequency and Loudness
- Artwork and Metadata
- Station Logos
Managing it
Hardware
Help
Reference