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.
|