Audio Werkzeuge Bibliothek (AWB)
Eine Sammlung von Klassen zum Auslesen von Audio-Informationen (Bitrate, Samplerate, Dauer, etc.) und Bearbeiten von Metatags (Interpret, Titel, Album, Cover-Art, ...) in verschiedenen Audio-Dateitypen.
Der Name ist ein direkte Anlehnung an die Audio Tools Library, die seit einigen Jahren nicht weiter gepflegt wird und einen ähnlichen Funktionsumfang, aber auch ein paar sehr unschöne Eigenschaften hat (besonders in bezug auf mp3-Dateien). Auch die Klassenstruktur ist hier etwas angenehmer, da (fast) alles von einer abstrakten Basisklasse abgeleitet wird. Das Auslesen der Audio-Informationen bei den exotischen Dateifomaten ist von dort (modifiziert) übernommen.
Features (Zusammenfassung)- Lesen und schreiben von ID3Tags in mp3-Dateien (ID3v1, v1.1, v2.2, v2.3, v2.4)
- Lesen und schreiben von Metadaten in Flac-Dateien (Comments, Cover-Art)
- Lesen und Schreiben von Metadaten in Ogg-Vorbis-Dateien (Comments)
- Lesen und Schreiben von ApeV2-Tags (Comments, Cover Art, Binary Data) (z.B. in Dateien vom Typ Monkeys Audio, MusePack, OptimFrog, WavePack, TrueAudio)
- Auswerten von Audiodaten (Bitrate, Samplerate, Dauer, Channels) in mp3, ogg, flac, ape, mpc, ofr, wv, tta
Das ganze mit voller
Unicode-Unterstützung und ziemlich weitgehendem Zugriff auf die Tags, ohne das für Anfänger unnötig kompliziert zu machen. So können beliebige eigene Frames (bei id3) bzw. Keys (bei ogg, flac, ape) definiert werden. Cover können mehrere parallel gespeichert werden (front, back, usw.). In id3 und ape sind auch beliebige Binärdaten erlaubt.
Getestet mit Delphi 7 und Delphi 2009. Delphi 6 sollte auch noch laufen, bei Delphi 5 machen die Mp3FileUtils und einige UTF8/
Unicode-Routinen Probleme.
Ein paar Hinweise zur Nutzung:
Die Unit AudioFiles.pas mit der Klasse TAudioFile
Die Superklasse. Folgender Code (leicht gekürzt) reicht, um einen Basis-Tagger für alle Formate zu erzeugen:
Delphi-Quellcode:
procedure TSimpleTagger.FileListBox1Change(Sender: TObject);
begin
MainAudioFile := TAudioFile.Create(FileListBox1.FileName);
EdtTitle.Text := MainAudioFile.Title;
EdtArtist.Text := MainAudioFile.Artist;
EdtAlbum.Text := MainAudioFile.Album;
EdtGenre.Text := MainAudioFile.Genre;
EdtYear.Text := MainAudioFile.Year;
EdtTrack.Text := MainAudioFile.Track;
Memo1.Clear;
Memo1.Lines.Add(Format('Type: %s', [MainAudioFile.FileTypeName] ));
Memo1.Lines.Add(Format('FileSize %d Bytes', [MainAudioFile.FileSize] ));
Memo1.Lines.Add(Format('Duration %d sec', [MainAudioFile.Duration] ));
Memo1.Lines.Add(Format('Btrate %d kBit/s',[MainAudioFile.Bitrate div 1000]));
Memo1.Lines.Add(Format('Samplerate %d Hz', [MainAudioFile.Samplerate] ));
Memo1.Lines.Add(Format('Channels: %d', [MainAudioFile.Channels] ));
end;
procedure TSimpleTagger.BtnSaveClick(Sender: TObject);
begin
MainAudioFile.Title := EdtTitle.Text ;
MainAudioFile.Artist := EdtArtist.Text;
MainAudioFile.Album := EdtAlbum.Text ;
MainAudioFile.Genre := EdtGenre.Text ;
MainAudioFile.Year := EdtYear.Text ;
MainAudioFile.Track := EdtTrack.Text ;
MainAudioFile.UpdateFile;
end;
Die Klassen <*>Files.pas mit den Klassen T<*>File
Abgeleitet von der abstrakten Basisklasse
TBaseAudioFile
implementieren diese Klassen die Basismethoden und liefern - je nach Typ - weitere Informationen aus den Dateien. Die Klasse
TAudioFile
hat dafür die Properties
<*>File
, über die weiterführender Zugriff möglich ist. Das wird in der ExtendedDemo vorgeführt. Die Dateitypen, die ApeTags nutzen, sind dabei von einer Zwischenklasse
TBaseApeFile
in der
Unit Apev2Tags.pas
abgeleitet. Die Klasse
TMp3File
hat als Property auch
Id3v2Tag
, über den dann der ganze Quatsch möglich ist, der in den MP3FileUtils-Demos beschrieben wird (z.B. rekursive mp3-Dateien bauen).
Bei den Methoden
T<*>File.ReadFromFile
bzw.
WriteToFile
wird bzgl. der Meta-Tags (ID3, ApeV2, Ogg-Vorbis-Comments) folgendes angenommen:
- ID3-Tags kommen NUR in mp3-Dateien vor. Einige der ApeV2Tag-Formate erlauben auch ID3-Tags. Wenn diese in solchen Dateien vorhanden sind, wird das zwar erkannt, die darin enthaltenen Informationen werden aber ignoriert. Wer diese lesen/schreiben möchte, muss dies selber über die (hier auch enthaltenen) Mp3FileUtils machen.
- Ogg-Vorbis-Comments kommen in Ogg-Vorbis- und Flac-Dateien vor (eingebettet in den entsprechenden Container)
- ApeV2Tags kommen nur in den exotischen Formaten (ape, mpc, ofr, wv, tta) vor. Gelegentlich kommen die auch in mp3-Dteien vor - wer das unbedingt braucht, kann das selbst über ein BaseApeFile machen
Lizenz
LGPL oder
MPL
(Die Audio Tools Library, von denen hier auch einiges drin steckt, stehen nur unter der
LGPL. Da ich auf eine Anfrage keine Antwort bekommen habe, das Projekt seit einigen Jahren nicht mehr weiter entwickelt wird, und der Anteil von ATL-Code nicht sonderlich groß ist, habe ich mir die Dual-Lizenz einfach so erlaubt.
)
The angels have the phone box.