Audio Werkzeuge Bibliothek (AWB)

Eine Klassensammlung zum Anzeigen von Audio-Informationen und Bearbeiten von Metadaten in vielen verschiedenen Audio-Formaten. Dabei wurde auf größtmögliche Einfachheit geachtet, ohne die Funktionsvielfalt einzuschränken.

Kurzer Einstieg

Folgender Code reicht z.B. aus, um alle gängigen Informationen anzuzeigen. Dabei ist es egal, ob es sich dabei um eine mp3-Datei mit ID3v1- oder v2-Tag handelt, oder eine Ogg-Vorbis-Datei, Flac, Monkeys Audio, WMA, oder exotische Formate wie Musepack, Optimfrog oder True Audio mit Apev2-Tag handelt. 

procedure TForm1.ShowFileData(aFilename: String);
var MainAudioFile: TGeneralAudioFile;
begin
  MainAudioFile := TAudioFile.Create(aFilename);
  try
    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]     ));
  finally
    MainAudioFile.Free;
  end;
end;

Für tieferen Zugriff auf die einzelnen Metadaten-Konstrukte lässt sich die Eigenschaft FileType auswerten:

case AudioFile.FileType of
  at_Mp3: begin
    MemoSpecific.Lines.Add(Format('ID3v1    : %d Bytes', [AudioFile.MP3File.ID3v1TagSize]));
    MemoSpecific.Lines.Add(Format('ID3v2    : %d Bytes', [AudioFile.MP3File.ID3v2TagSize]));
  end;
  at_Ogg: AudioFile.OggFile.GetAllFields(listboxKeys.Items);
  at_Monkey,
  at_WavPack,
  at_MusePack,
  at_OptimFrog,
  at_TrueAudio: AudioFile.BaseApeFile.GetAllFrames(listboxKeys.Items);
// ...
end;

Features

  • Lesen und schreiben von ID3-Tags (alle Versionen, d.h. v1, v1.1, v2.2, v2.3 und v2.4)
  • Lesen und schreiben von Ogg-Vorbis-Comments in *.ogg- und *.flac Dateien
  • Lesen und Schreiben von Apev2Tags
  • Lesen und Schreiben von Cover-Art in ID3v2, Apev2, Flac
  • Lesen von Tags in Windows Media Audio (*.wma)
  • Ermitteln von Spieldauer, Samplerate, Bitrate, Channels in folgenden Dateitypen
    Mp3, Ogg-Vorbis (*.ogg), Flac (*.flac), Monkeys Audio (*.ape), Musepack (*.mpc), Wavpack (*.wv), OptimFrog (*.ofr), True Audio (*.tta), Windows Media Audio (*.wma), Wave-Dateien (*.wav)
  • Volle Unicode-Unterstützung (ggf. über Compilerschalter in der config.inc und die TNT Unicode Controls)
  • Umfangreiche Tag-Unterstützung, z.B. Lyrics und "Private Frames" bei ID3v2, Direktzugriff auf ID3v2-Frames, Zugriff auf beliebige Werte bei Ogg-Vorbis und Apev2. Wer also eine mp3-Datei in den Apev2Tag einer OptimFrog-Datei speichern möchte, kann das mit den bereitgestellten Methoden tun. Ob das eine gute Idee ist, weiß ich allerdings nicht...

Lizenz

LGPL oder MPL.

Die Audio Werkzeuge Bibliothek (AWB) enthält Teile der Audio Tools Library (ATL). Diese steht nur unter der LGPL. Da ich persönlich die Verwendung auch in Closed-Source-Software erlauben möchte, habe ich die Entwickler der ATL um Erlaubnis der Relizensierung unter der MPL gebeten, aber keine Antwort erhalten.

Da das Projekt ATL seit einigen Jahren tot zu sein scheint und sich die übernommenen Teile auf das Ermitteln der Audio-Daten in den exotischeren Formaten beschränkt, habe ich mir die duale Lizenz auch ohne explizite Erlaubnis der ursprünglichen Urheber erlaubt.