Historically, metadata information (i.e. information related to composer, artist, title, date, track number, etc.) has been embedded in the media files themselves, in data fields commonly known as "tags".
This practice has various disadvantages:
- Different media formats can have (and usually do have) different metadata formats, so a media player must be capable not only to decode the media (audio and/or video), but also to read the tags, whatever their format and restrictions (in terms of number and types of defined tags, value lenghts, etc.) may be;
- Although, by its nature, media is "read-only", any serious media player must have the capability to update the metadata tags, effectively forcing the transformation of what is conceptually a read-only source into a read-write-source;
- For media that is physically unalterable (e.g. media streamed from a server, or media on a cd-rom), it is impossible to update the metadata.
Quite apart from the above considerations, the main problem with embedded metadata is that, while media is context-independent, metadata is context-dependent. For example, the exact same music track can have different "track numbers" depending on the various albums the track belongs to. The same can be said of common tags like "album artist" or "album title" (the exact same track can appear in an artist album and in several "various artists" compilations). With embedded metadata, the only way to have a media file properly tagged according to its context is to have several copies of the file itself. A media file can be quite large, so for large media collections or large media distribution systems this solution is unpractical and, in the long run, unsustainable.
CUE files
The most commonly used solution for separating media from metadata is a CUE file. A CUE file, or CUE sheet, is a metadata file which was originally developed to describe how the tracks of a CD or DVD are laid out. But because the CUE file format also allows to specify titles and performers for the disc and its tracks, CUE files has been widely (mis)used as a stopgap solution to the media-metadata separation problem.
PERFORMER "Faithless" <- album artist TITLE "Live in Berlin" <- album title FILE "Faithless - Live in Berlin.mp3" MP3 <- media file and media kind TRACK 01 AUDIO <- album track number TITLE "Reverence" <- track title PERFORMER "Faithless" <- track artist INDEX 01 00:00:00 <- offset of track within media file TRACK 02 AUDIO TITLE "She's My Baby" PERFORMER "Faithless" INDEX 01 06:42:00 TRACK 03 AUDIO TITLE "Take the Long Way Home" PERFORMER "Faithless" INDEX 01 10:54:00 TRACK 04 AUDIO TITLE "Insomnia" PERFORMER "Faithless" INDEX 01 17:04:00 TRACK 05 AUDIO TITLE "Bring the Family Back" PERFORMER "Faithless" INDEX 01 25:44:00 TRACK 06 AUDIO TITLE "Salva Mea" PERFORMER "Faithless" INDEX 01 30:50:00 TRACK 07 AUDIO TITLE "Dirty Old Man" PERFORMER "Faithless" INDEX 01 38:24:00 TRACK 08 AUDIO TITLE "God Is a DJ" PERFORMER "Faithless" INDEX 01 42:35:00
Because CUE files were never intended as full metadata containers, they have all sorts of limitations in terms of what kind of metadata they can contain. These limitations have in turn caused the introduction, by developers of media editors, converters and players, of all sorts of non-standard workarounds, tipically using the CUE file remark ("REM") field.
REM GENRE "Electronica" <- workaround for "GENRE" tag (not defined in CUE file standard) REM DATE "1998" <- workaround for "DATE" tag (not defined in CUE file standard) PERFORMER "Faithless" TITLE "Live in Berlin" FILE "Faithless - Live in Berlin.mp3" MP3 TRACK 01 AUDIO TITLE "Reverence" PERFORMER "Faithless" INDEX 01 00:00:00 TRACK 02 AUDIO TITLE "She's My Baby" ...
Other metadata formats have been introduced, but in most cases the purpose was to satisfy very specific needs in a very specific (often proprietary) context. By virtue of not having any predetermined knowledge abot the media format, the m-TAGS format is totally generic and applicable to virtually any media source. To learn how m-TAGS works, please see the Overview section.