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:

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.


(c) Luigi Mercurio