back: HIB Homepage
  Prof. Urban
Materialien für Mathematik, Physik, Informatik
 
 
zurück
 

MP3 - ID Tags

'Rohe' MP3-Dateien enthalten ausschließlich Audioinformationen. Die Frames einer solchen Datei bieten keine Möglichkeit, Informationen über das Musikstück selbst (Interpret, Titel,...) zu speichern.

ID3v1.0

1996 hatte der Programmierer Eric Kamp für sein Programm 'Studio3' die Idee, Informationen in Textform einfach an die MP3-Datei anzuhängen. Wenn man darauf achtet, dass der MP3-Decoder dadurch nicht gestört wird, spricht nichts dagegen. Kamp machte es sich zunutze, dass die einzelnen Audio-Frames mit einem speziellen Bitmuster (dem SYNC-Signal) beginnen müssen. Vermeidet man dieses Signal (es handelt sich dabei um eine Reihe gesetzter Bits), dann übergeht der Decoder die Information einfach. Da in Kamps Version nur Textzeichen zugelassen sind, gibt es kein Problem.

Weiters muss aber auch erkennbar sein, ob tatsächlich Kamps Informationen, man bezeichnet sie als 'Tag' (=Anhängsel, Verzierung) angefügt sind. Dies erreichte er durch folgende Festlegung:

  • Der Informationsblock ist genau 128 Byte groß
  • Der Beginn des Blocks sind die drei Buchstaben 'TAG' (=Anhängsel, Verzierung)

Wir erkennen das Vorhandensein eines ID3v1 Tags also an der Zeichenkette 'TAG', die 128 Byte vor dem Dateiende steht.

Die einzelnen Einträge sind

'T' 'A' 'G' 3 chars
Song Title 30 chars
Artist 30 chars
Album 30 chars
Year 4 chars
Comment 30 chars
Genre 1 byte

Die ersten Einträge erklären sich selbst, 'Comment' kann ein beliebiger Kommentar sein. 'Genre' ist ein Zahlenwert aus einer Liste von Musikstilen, die Kamp aufstellte (0,1,2,..79 stehen für Blues, Classic Rock, Country,....,Hard Rock).

Alle unbenutzen Plätze der Textefelder müssen mit Nullbytes aufgefüllt werden.

ID3v1.1

Mit der Gewohnheit, ganze CDs und Plattenalben im Computer zu speichern zeigte sich ein Mangel: es gibt keine Möglichkeit, die Reihenfolge der einzelnen Titel zu vermerken. Die alphabetische Sortierung nach Dateiname oder Songtitel ist wohl nur selten richtig.

Michael Mutschler machte einen brauchbaren Vorschlag: das Kommentarfeld ist selten wichtig. Man kürzt es um zwei Byte und vereinbart

'T' 'A' 'G' 3 chars
Song Title 30 chars
Artist 30 chars
Album 30 chars
Year 4 chars
Comment 28 chars
NULLBYTE 1 byte
Track Number 1 byte
Genre 1 byte

Wie erkennen wir das Vorliegen eines Trackbytes: die vorletzte Stelle des v1.0-Comments ist ein Nullbyte und die letzte Stelle ist nicht Null (Bytewerte, nicht char!).

Diese Version der ID3-Tags ist diejenige, die heute zumeist verwendet wird. MP3-Player beziehen daraus ihre Informationen zur Sortierung und Kategorisierung der Musiktitel. 'ID3' ist ein Kurzwort, das später eingeführt wurde und aus IDentification und mp3 gebildet ist.

ID3v2.x

Seit Musik auch in Netzwerken übertragen wird (Internet, streaming media), hat die Version 1 einen schweren Nachteil: die Information über das Musikstück taucht erst NACH dem Musikstück auf. Sie sollte aber gleich zu Beginn vorliegen. Deshalb entstand eine Weiterentwicklung, die eigentlichen ID3-Tags.

Sie stehen als Tag-Block am Anfang der MP3-Datei und erlauben wesentlich mehr Einträge. Daraus ergeben sich allerdings Probleme:

  • alte MP3-Player spielen diese Dateien möglicherweise nicht ab, da sie nicht mit dem SYNC-Signal beginnen (war nur in den ersten Jahren ein Problem)
  • es ist einfach, einer Datei auf Festplatte einen Datenblock an ihr Ende anzufügen (v1). Muss man am Beginn der Datei nachträglich etwas einfügen, ist die gesamte Datei neu zu erstellen. Dieses Umkopieren kostet allerdings Zeit.
  • Was ist, wenn die Eintragungen nach Version 1 und diese neuen Eintragungen einander widersprechen (Albumtitel, Interpret). Welcher Eintrag wird dann als richtig akzeptiert? Antwort: ungeklärt.
  • Ein MP3-Player, der ID3 nicht erkennt, soll unsere Daten einfach überlesen, bis er ein SYNC-Signal findet. Aber was geschieht, wenn in unseren Daten etwas steht, was genauso aussieht, wie ein Sync-Signal (%11111111 %111xxxxx)? Dann muss unser Header den Vorgang der 'Unsynchronisation' durchlaufen: jedes $ff wird durch $ff $00 ersetzt, was das Problem beseitigt. Zusätzlich muss im ID-Header vermerkt werden, dass dieser Prozess stattgefunden hat.

Die einzelnen Einträge werden anders organisiert: sie sind nicht mehr in ihrer Größe festgelegt, es gibt eine Liste von 'offiziellen' Einträgen aber auch die Möglichkeit von selbstdefinierten (die von anderen Playern einfach überlesen werden sollen).

Weiters wurde die Liste der Genres erweitert - vom beliebten 'Winamp' übernahm man die Werte bis 125 ('Dance Hall').

Der Kompromissweg - behalte die Kompatibilität zu älteren Versionen, verwirre alte Player nicht, bringe gleichzeitig möglichst viele neue Möglichkeiten - ist tückisch. Die ersten Entwürfe der ID3 waren gut gemeint, doch nicht weit genug durchdacht.

Beispiel: was passiert, wenn das Genre 'unbekannt' ist? Null eintragen geht nicht, da dieser Wert leider definiert ist. Also nimmt man den größtmöglichen, $ff. Dies ist nirgends untersagt. Nun stellt aber $ff ein mögliches SYNC-Problem dar und wird nach obiger Festlegung zu $ff $00 gemacht. Die Folge - eine Software nach v1 findet nun ein Byte zu viel und statt der Kennung 'TAG' 128 Byte vor Dateiende nur mehr 'AG', woraufhin sie keinen v1-TAG erkennt (und möglicherweise noch einen hintendranschreibt). Bis zur Version ID3v2.3 beließ man lieber das &ff unverändert, um alte Software nicht zu verwirren. In Version ID3v2.4 ist es nun aber erlaubt, ID3-Tags sowohl an den Dateianfang, als auch an deren Ende zu setzen. Hier hat man also Kompatibilitätsprobleme neu eingebaut...

Tip: Beherzige den Programmiererwahlspruch: Sei möglichst tolerant beim Einlesen von Daten und möglichst strikt beim Schreiben.

 

Die wichtigen neuen Standards sind

 

ID3v2.3.0

vom Februar 1999.
Diesem Standard folgt neue Computersoftware. Er organisiert die Daten in einzelne Blöcke ('Frames') am Beginn der Datei

ID3v2.4.0

vom November 2000.
Dies ist der modernste Standard, wird jedoch noch nicht breit unterstützt.

Wichtigste Neuerung ist die mögliche Teilung der Daten auf Dateianfang und -ende, vor allem um den Start von Streaming Media zu beschleunigen. Aufgrund des sich dadurch (und wegen einiger nicht ganz sauber definierter Details) ergebenden Programmieraufwandes wird diese Version von Programmierern auch gerne als ID3vPARANOIA bezeichnet...

Für die Festlegung und Veröffenlichung des (freiwilligen! - niemand überprüft, ob die Software diesen auch wirklich erfüllt) MP3-Standards ist www.id3.org zuständig.

 

 

 


--- © Wolfgang.Urban@schule.at ---