This post is a Wiki FAQ. It is intended to reflect Forum users’ current best understanding of the questions asked. It is not an official Roon post nor is it approved by Roon. The information set out may not be accurate and you should not rely upon it for any serious purpose without conducting your own enquiries.
As a Wiki post this post is editable by all users. Users who have some experience or knowledge of the subject matter are encouraged to correct errors or add additional information.
Additional questions may be added from time to time, but please propose any additional questions in a new post and flag @andybob or @BrianW to discuss. Mods reserve the right to edit generally and close the Wiki at any time.
What is the difference between file metadata and stream metadata ?
Music metadata is often contained in “file tags” within a digital music file. It can be either supplied by a music publisher or created when a user rips a CD or otherwise creates a digital music file. It can be edited using an editor such as “mp3tag” and accessed by Roon when playing a digital music file. The metadata resides at the beginning of the file so that a decoder can access relevant information and start playing without having to process the entire file.
Streaming media is constantly delivered by a provider to an end user. Tidal and Qobuz, for example, provide streaming media viewable in Roon. The audio stream is delivered within a container format, and whilst encoding information can be sent at the start of the connection, the continuous stream will have to deal with music metadata changing as the songs change. Sometimes the metadata is contained within the stream, and sometimes there is an associated link to an external source of the metadata. An attraction of the latter method is that richer metadata than simple artist and song title can be extracted and shown via the station’s website or a dedicated app. While this choice is obviously understandable, it has an impact on people using non- broadcaster branded apps, like Roon or TuneIn: no metadata are visible on those.
Metadata associated with or contained within a digital stream is not ordinarily editable by the end user, at least within the player software commonly used.
What types of stream metadata exist ?
An audio server is responsible for collecting the audio from the source, and delivering it to a client. The most common protocol used for the delivery is ICY (I Can Yell). The ICY protocol is a superset of HTTP (Hyper Text Transfer Protocol) and is embedded in the headers of HTTP packets using identifiers preceded by “icy-”.
In its simplest form, the metadata is inserted at regular intervals in an mp3 or aac stream. This is signalled by an icy-metaint flag detailing the interval used. This is by far the commonest format and Roon has no problems with these.
For other formats, the server inserts the metadata into the container stream and a number of these formats exist: ogg, adts, basic flac, mpeg etc. A particular problem here for Roon users of high quality streams is that many audio servers are unable to add the metadata to the ogg container of a flac stream. This is another reason why a broadcaster may decide to send the metadata separately from the audio stream.
What types of stream metadata does Roon Live Radio support ?
Roon can deal with metadata inserted in mp3 and aac streams, and also metadata held in the container formats. It can’t currently deal with metadata in the flac stream itself as that entails sending an end of session/start of session flag at the end of each song, resulting in Roon thinking the stream has stopped.
If the metadata is held in an associated web page, then Roon is currently also unable to deal with it.
How can a station stream metadata so Roon Live Radio displays it ?
For mp3 and aac, there is no problem, but the only way for flac streams is to use an audio server which correctly inserts metadata into an ogg container; currently only Rocket Streaming Audio Server does this.
If a station provides metadata that is not displayed by Roon, can users process the stream so it is displayed by Roon ?
Two approaches are possible.
A specific customization is developed on the client side (such as has been done by Bluesound for example): metadata are retrieved “out of band” as the regular player would do, and displayed to the end user.
Advantage: best and consistent metadata. Potentially much richer, with access to album covers, previous songs played, next song, etc.
Disadvantage: Roon needs to spend time and effort on this, and redo the work for each radio.
A relay server, explained below, which would provide, but be limited to, Artist/Title combination. However, if Roon identifies the track in the stream as it does now, then detailed metadata can be retrieved in the usual Roon way.
Advantage: Roon does not need to change and analyses the steams as before.
Disadvantage: Metadata consistency (album broadcasted by FIP is not always the one “identified” by Roon for example, or if the Artist/Song is not identified by Roon from the customer library (local + Qobuz/Tidal), then metadata presented to the client is limited to Artist and Title.
Using a Relay Server
If a station does not transmit the metadata in the audio stream, but instead maintains a site where the metadata is held, then it is technically possible, via an intermediate server, to combine the audio with the metadata.
The intermediate server, called a relay server, is set up which has the necessary combining capability - at present this necessitates Rocket Streaming Audio Server (RSAS) for ogg/flac streams, but otherwise an Icecast server is suitable. The relay server takes a single feed from the station and retransmits it to multiple clients with the user as that server’s administrator. In parallel, a process (Node-RED) runs which constantly monitors the site containing the metadata. When the song title changes, Node-RED extracts the song information, connects to our relay server and updates the stream metadata. This is done either via an HTML Server-Sent Event message (in the case of RSAS) or by accessing the metadata fields on the Icecast status page . Because it is our server, we can provide the relevant authentication.
Two tutorials have been set up by @Sebastien detailing the steps needed to set up the processes required for incorporating artist/song information in streams from FIP (Icecast based) and Radio Paradise (RSAS based).
Radio Paradise FLAC streams are now using Rocket Streaming Audio Server with metadata displayable by Roon meaning a relay server is no longer required to display RP FLAC metadata in Roon.
Are there any copyright issues arising from Relay Servers ?
Quite possibly. This is a complex area and we can’t give legal advice.
It may be that a fixed fee payment for a small radio station in the jurisdiction of the relay server is sufficient. That could be funded by donations from listeners.
It may be that in the UK that will not be sufficient, the appeal in the Sony/Warner v TuneIn case is yet to be heard.