Pro
ject Title: Project Backing up my CD music collection with EAC – Part 1
Project Start: 10.04.2025
Project End: 10.09.2025
Motivation
Mitte der 90er wurde ich durch einen Arbeitskollegen zum Hi-Fi-Musikhören gebracht. Und so entstand in den Folgejahren eine „gemischte“ Musiksammlung mit mehr als zweitausend CDs. Ein Organisationskonzept gab es nicht, die erworbenen CDs wurden mehr oder weniger in den vorhandenen CD-Regalen verstaut und damit war die Sache erledigt. Erst im Laufe der Zeit wurden die öfter gehörten CDs räumlich gruppiert und der Rest alphabetisch nach „Künstler/Band“ geordnet in den Regalfächern abgestellt.
Nachdem mein CD-Player inklusive Verstärker wegen „Altersschwäche“ durch aktuelles Equipment ersetzt werden musste, gab es im Rahmen des Neuerwerbs auch Berührungspunkte mit dem Thema „Streaming“. Da die überwiegende Anzahl meiner CDs schon sehr betagt ist, lag es ohnehin nahe, eine Datensicherung in einem streamingfähigen Format durchzuführen und die dabei gewonnenen Daten wie Albentitel, Musiktitel, Künstlernamen sowie CD-Ablageorte zu archivieren.
Ein professionelles Tool zur Verwaltung meiner Musiksammlung kam für mich nicht infrage. Ich wollte ein möglichst einfaches und unabhängiges „listenbasiertes“ Verfahren, mit welchem ich die erstellten Sicherungskopien erfassen und bei Bedarf schnell auf die dazugehörige CD zugreifen konnte. Bei der vorhandenen Regalbelegung sollte lediglich die Sortierreihenfolge innerhalb eines Regalfaches sichergestellt sein. Für die Weiterleitung der Sicherungskopien an ein Netzwerkabspielgerät (Streaming) besteht z. Z. kein Bedarf. Sinnvoll wäre es allerdings, meine restlichen Discs (CDs, DVDs, Blu-rays), die nicht zu meiner Musiksammlung gehören, ebenfalls mit diesem Verfahren zu verwalten.
Bei ersten Recherchen bin ich auf die Youtube-Videos von In-Akustik aufmerksam geworden, deren Informationsgehalt und Wissensvermittlung mir sehr zugesagt haben. Als besonders hilfreich für den Anfang hat sich das Video „Wie rippe/kopiere ich meine CD-Sammlung verlustfrei | in-akustik HiFi Convention [8 von 18]“ mit Herrn Guido Lay erwiesen.
Verfahrensüberblick und angewandte Tools
Basis-Tool „meines“ Verfahrens ist der Audio-Grabber EAC (Exact Audio Copy) von Herrn Andre Wiethoff, welcher u. a. den Audio-Codec FLAC (Free Lossless Audio Codec) verwendet, der im Rahmen der Xiph. Org Foundation entwickelt und gepflegt wird.
EAC wurde auf einem Windows-7-Rechner mit 2 CD-ROM-Laufwerken und auf einem Windows-10-Rechner mit 1 CD-ROM-Laufwerk installiert. Um Lesefehler möglichst auszuschließen, wurden alle CD-ROM-Laufwerke im sicheren Lesemodus betrieben.
EAC bietet die Möglichkeit, mit Hilfe von Metadaten & Konstanten die Struktur der FLAC-Ablageverzeichnisse und der FLAC-Dateinamen zu gestalten. Die Metadaten können, falls nicht auf der CD vorhanden, von einem Datenanbieter angefordert oder händisch eingetragen werden. Alternativ können sie auch über die Zwischenablage bzw. aus einer Datei eingefügt werden. Da meine CDs doch schon sehr betagt sind und kaum Metadaten enthalten dürften, habe ich mich für eine lebenslange Lizenz des GD3-Metadaten-Dienstes entschlossen. Falls EAC nicht nur testweise genutzt wird, erachte ich es auch als sinnvoll, eine kleine Spende für die notwendige Software-Maintenance zu entrichten, damit weiterhin ein gut funktionierendes EAC zur Verfügung steht.
Bezüglich der Metadaten ist noch erwähnenswert, dass die Betriebssysteme Windows 7 und Windows 10 aufgrund unterschiedlicher Datenbank-Softwarestände auch unterschiedliche Query-Ergebnisse liefern. Wurden Metadaten beim Windows-7-Rip nicht gefunden, hat ein Windows-10-Rip mit wenigen Ausnahmen geklappt. Mit über 2.300 gerippten CDs ein Ergebnis, mit dem ich sehr zufrieden bin.
Die durch EAC geformte Datenstruktur ist i. d. R. für den Import/Verwaltung durch einen Media-Server gedacht, kann aber auch mit Windows-/DOS-Bordmitteln ohne Media-Server genutzt werden. Da das zeitintensive Rippen und der Datenaufbau für die Musiksammlung erst mal vorrangig waren und z. Z. auch kein Streamingbedarf besteht, wurde auf das Einbinden eines Media-Servers verzichtet.
EAC-Namensschema für FLAC-Verzeichnis- und FLAC-Dateinamen
Unter dem Menü EAC/EAC-Einstellungen/Dateinamen kann ein 2-teiliges Namensschema zur Beschreibung der Verzeichnis- und Dateinamensstruktur mithilfe von Metadaten-Stellvertreter-Variablen, auch Placeholder genannt, wie z. B. %albumartist%, %albumtitle% und %tracknr2% definiert werden. Unter dem Menüpunkt EAC/EAC-Einstellungen/Ordner kann ein Root-Verzeichnis zum Abspeichern der FLAC-Dateien inklusive der Verzeichnisstruktur eingestellt werden. Ich habe das Namensschema aus dem Video von Herrn Lay übernommen und die Verzeichnisstruktur mit einer Konstanten (Regalfachadresse) ergänzt.
Die Regalfachadresse „(RxxFy)“ ist quasi eine „Hausnummer“, um abgelegte CDs/Discs schnell auffinden zu können. Insgesamt sind 10 Regale (xx) à 6 Regalfächer (y) zu je 50 CDs verfügbar, also 60 Regalfächer für ca. 3000 Discs. Analog zur Regalfachadresse der Verzeichnisstruktur ist jedem Regalfach ein eigenes FLAC-Rootverzeichnis zugewiesen, unter dem die gerippten Daten der CDs dieses Regalfaches abgespeichert sind.
Beispiel EAC-Einstellungen für das CD-Regal 9 Fach 1 (R09F1):
FLAC-Rootverzeichnis : I:/R09F1-Flac/
Schema-Verzeichnisstruktur: %albumartist%\%albumtitle% (R09F1) \
Schema-Dateinamenstruktur : %albumartist% – %albumtitle% – %tracknr2% – %title%
Beispiel erzeugte Datenstruktur für einen R09F1-Rip:

Nach dem Rippen eines Regalfaches müssen das FLAC-Rootverzeichnis (Ordnernamen) und das Namensschema für das nächste Regalfach angepasst werden. Wie bereits erwähnt sollen auch Discs verwaltet werden, die nicht zu meiner Musik-Sammlung gehören und mit einer Ausnahme (Music-Companion-CDs) nicht gerippt werden müssen. Ist so eine Disc in einem Regalfach gelagert, so können die Discdaten manuell in die entsprechende FLAC-Rootverzeichnisstruktur des zur Lagerung verwendeten Regalfachs eingetragen werden. Ist sie nicht in einem Regalfach gelagert, so können die Discdaten in die FLAC-Rootverzeichnisstruktur eines „virtuellen“ Regalfaches (ab R11F1) eingetragen werden. Das „virtuelle“ Regalfach hat zur Spezifizierung seiner „Hausadresse“ einen entsprechenden Alias-Eintrag, der auf den Lagerort hinweist.
CDs, die nicht zur Musik-Sammlung gehören, besetzen die Stellvertreter-Variable %albumartist% mit den Namen „samples“, „software“, „magazines“, „mp3“, „midi“, „model airplanes“, „caraoke“, „music teaching“ und andere. Ausnahmen sind die Music-Companion-CDs von Autoren meiner Noten- und Musiklehrbücher. Sie nutzen die Stellvertreter-Variable %albumartist% wie normale Audio-CDs, haben FLAC-Dateien und gehören aber nicht zur Musik-Sammlung.
Weitere verwendete Tools/Hilfsmittel
Um den Aufbau eines brauchbaren Datenbestandes für meine Musik-Sammlung/Disc-Sammlung zu erleichtern, wurden 2 DOS-Skripte gebastelt, deren Inhalte mehr oder weniger aus dem Internet zusammengegoogelt/gepuzzelt wurden. Beide Skripte nutzen zwecks besserer Visualisierung mehrfarbige Schrift und zur Entwicklungsunterstützung/Fehlersuche DEBUG-Funktionen.
import_shelf.bat
Mithilfe des Skriptes import_shelf.bat können die beim Rippen der in Regalfächern gelagerten CDs erzeugten Metadaten (FLAC-Verzeichnis- und Dateinamen) „bereinigt“ und anschließend in eine „Music-Collection“ gespiegelt/importiert werden. Beim Importieren in 3 optionale Destinationen werden nur kleinere Anpassungen an Dateinamen (Dateierweiterungen/Regalfach-Adressen) durchgeführt. Dateiinhalte werden dabei nicht übernommen.
In der Phase I (Datenvalidierung) wird das Skript parametergesteuert so ausgeführt, dass alle Metadaten über die vom Skript erzeugten Listen/Output gesichtet und mit den CD-Covern abgeglichen und eventuell korrigiert werden können. Nach erfolgreicher Korrektur werden die CDs mit Hilfe einer Sortierliste wieder in die Regalfächer/das Regalfach zurückgestellt.
Sind alle Metadaten und Formate „korrekt“, werden sie in der Phase II (Merge) mit einer weiteren Skriptausführung in eine gemeinsame Verzeichnis- und Dateinamensstruktur der „Musik-Sammlung“ überführt.
Diese einfache Methode ermöglicht es, die EAC-Placeholder-Informationen (Verzeichnis- und Dateinamen) einer beliebig großen „EAC-gerippten“ CD-Sammlung zu archivieren, in Listenform zu dokumentieren und platzsparend in einer gemeinsamen Datenstruktur zusammenzuführen. Eine nicht „gerippte“ Sammlung kann durch Erfassen der Albumtitel/Künstler/Songtitel ebenfalls mit dem Skript dokumentiert werden. Allerdings muss die dazu erforderliche Datenstruktur händisch erstellt werden. Eine Erfassung der Musiktitel ist zwar sinnvoll, aber optional.
EAC-Datenstruktur „Regalfach-Collection“ nach dem „Rippen“:
Laufwerksbuchstabe : Flac-Drive:\
FLAC-Rootverzeichnis: RxxFy-Flac\
Künstlerverzeichnis : %albumartist%\
Albenverzeichnis : %albumtitle% (RxxFy)\
Songtitel-FLAC-Datei: %albumartist% – %albumtitle% – %tracknr2% – %title%
EAC-Datenstruktur “Regalfach-Collection” nach Skriptausführung ohne “Merge” (Phase I):
Laufwerksbuchstabe : Flac-Drive:\
FLAC-Rootverzeichnis : RxxFy-Flac\invokation_parameter_RxxFy.log (optional)
RxxFy-Flac\path_length_check_RxxFy.log (optional)
RxxFy-Flac\special_file_names_RxxFy.log (optional)
RxxFy-Flac\robocopy_RxxFy.log (optional)
RxxFy-Flac\zero_byte_files_RxxFy.log (optional)
RxxFy-Flac\flac_sorted_shelf_cd_list_RxxFy.txt (optional)
Künstlerverzeichnis : %albumartist%\
Albenverzeichnis : %albumtitle% (RxxFy)\
Songtitel-FLAC-Datei : %albumartist% – %albumtitle% – %tracknr2% – %title%
EAC-Datenstruktur „Music-Collection“ nach Scriptausführung mit „Merge“ (Phase II):
Laufwerksbuchstabe : Collection-Drive:\
Sammlungsverzeichnis: Collection-Directory (Name frei wählbar)
Künstlerverzeichnis : albumartists\
Albenverzeichnis: %albumtitle% (RxxFy)\
Songtitel-Datei : %albumartist%-%albumtitle% – %tracknr2% – %title%[RxxFy]. .flac
==> Collection-Drive:\Collection-Directory\albumartists\%albumtitle% (RxxFy)\%albumartist%-%albumtitle% – %tracknr2% – %title%[RxxFy]. .flac
Unter dem Collection-Directory befinden sich außer dem Unterverzeichnis „albumartists“ noch die Unterverzeichnisse lists, logs, jpgs, songtitel und songfile.
==> . . . . .\albumartists\%albumtitle% (RxxFy)\
\songtitle\%albumartist% – %albumtitle% – %tracknr2% – %title%[RxxFy].flac (optional)
\songlist\songlist.txt (Datei mit allen songtitel-Dateinamen, optional)
\lists\coll_sorted_shelf_cd_list_RxxFy.txt (Datei Sortierliste, optional)
\logs\%title%[RxxFy].log (gespiegelte EAC-Log-Datei, optional)
\jpgs\%title%[RxxFy].jpg (gespiegelte EAC-Image-Datei, optional)
Bei der Skriptausführung werden Hilfsdateien und Listen erstellt, die bei CD-Recherchen (Albumartist, Albumtitel, Titel) und bei der Validierung/Verwaltung/Nutzung der erfassten EAC-Daten unterstützen sollen. Die erzeugten Hilfsdateien werden in den Collection- und FLAC-Verzeichnissen abgelegt. Das Skript kann sowohl im „foreground (interactive)“ als auch im „background (unattended)“ ausgeführt werden. Im Background-Modus werden alle durchgeführten Aktivitäten in eine Logdatei geschrieben. Das Skript bietet die Möglichkeit, die zu bearbeitenden Regalfächer beliebig auszuwählen und zu kombinieren und jederzeit eine Musik-Sammlung mit geringem Datenvolumen aus den EAC-Daten zu erzeugen. Sollte die Sammlung außer zu Auskunftszwecken auch zum „Streamen“ verwendet werden, so kann dies mit minimalem Aufwand realisiert werden.
rename_flacs.bat
Das Skript rename_flacs.bat soll bei der Inspektion und Umbenennung von FLAC-Dateien mit komplexen Dateinamen unterstützen, wobei Namensänderungen im Dialog durchgeführt werden können. Es kann auch zur Überprüfung von eventuellen Pfadlängen genutzt werden.
Sollte es notwendig sein, die Dateinamen oder Verzeichnisnamen der Datenstruktur (%albumartist%\%albumtitle% (RxxFy)\ %albumartist% – %albumtitle% – %tracknr2% – %title%) einer gerippten CD anzupassen, bieten sich grundlegend 4 Methoden an:
– die direkte Anpassung in einem DOS-Konsolfenster,
– die Anpassung mit dem Windows-Datei-Explorer,
– Nutzung des Tools Mp3tag,
– der Einsatz des Skriptes rename_flacs.bat (nur Dateinamen).
Am elegantesten ist der Einsatz des Windows-Datei-Explorers und des Tools Mp3tag. Sind die Dateinamensänderungen komplexer und umfangreicher, ist das Skript rename_flacs.bat meine erste Wahl. Die Nutzung eines Konsolfensters ist bei sehr langen Dateinamen mit vielen Blanks und nur wenigen Genies vorbehalten.
Wichtigstes Kriterium bei Namensänderungen ist die absolute Dateipfadlänge. Überschreitet die absolute Dateipfadlänge die Länge von 260 Bytes (XP/W7/W10/W11) und sind die MAX_PATH-Restrictions (System/App) nicht aufgehoben, so ist eine Änderung nur möglich, wenn die alte und die neue Dateipfadlänge ≤ MAX_PATH ist. Da systemintern eine binäre Null an das Ende eines Dateipfadendes angehängt wird, beträgt die „sichtbare“ maximale absolute Dateipfadlänge 259 Byte. Ab Windows 10, Build 1067, kann die systemrelevante MAX_PATH-Restriction über eine Registry-Änderung aufgehoben werden.
MP3tag, Ansifilter, JMME Text File Editor & Sublime Text
Zur Pflege der Metadaten und zum Umbenennen von Dateien wird das Tool MP3tag eingesetzt. Für die Konvertierung und zum „Encoding/Decoding“ von Dateien werden die Tools Ansifilter und JMME Text File Editor genutzt. Bei der Ergebniskontrolle ist Sublime Text sehr hilfreich.
Praxis
Erste Aktivität vor dem „Mergen“ war die Versorgung des Skriptes import_shelf.bat mit den notwendigen Stammdaten. Da zur Kontrolle alle gerippten CDs pro Regalfach gezählt werden müssen, wurden für die physischen/virtuellen Regalfächer entsprechende Variablen für die ermittelten Werte angelegt (siehe nachfolgende Beispiele).
REM physical compartment shelfs
set /A cds_R01F1=0
REM virtual compartment shelfs
REM Diverses Case Logic CD wallet (22×4=48 Discs)
set /A cds_R11F4=0
set “cds_R11F4_alias=Diverses Case Logic CD wallet (22×4=48 Discs)”
Des Weiteren wurden Variablen für CDs/Discs spezifiziert, die in den CD-Regalen gelagert sind, aber nicht zur Sammlung gehören (siehe nachfolgende Beispiele).
REM Types of Non-Collection-Discs
set /A defect_cds=0
set /A wrong_shaped_cds=0
set /A burned_cds=0
set /A stickered_cds=0
set /A cleaner_cds=0
set /A duplicate_cds=0
set /a software_discs=0
set /a magazine_discs=0
set /a mp3_discs=0
set /a sample_discs=0
Da einige alte CD-Cases angeknackst bzw. zerbrochen waren, wurde entsprechender Ersatz beschafft. Mit den neuen Cases und Ersatzteilen war ich nicht happy, sie waren sehr filigran und passten nicht zur gewohnten Haptik. Einige waren schon in der Verpackung zerbrochen. Bei einem holländischen Hersteller (walvisproducts.nl) habe ich Teile gefunden, die mit meinen Ansprüchen „kompatibel“ waren. Sie waren brauchbar, stabil und sehr passgenau.
Da ich den seltenen, aber doch vorkommenden Absturz eines CD-Stapels aus meinen Händen unbedingt vermeiden wollte, wurde zum Transport der ausgeräumten CDs eine Wäschewanne mit Henkeln eingesetzt. Die CD-Cases wurden vor dem Rippen mit Wasser (mit Spüli- und Isopropanol-Zugabe) und einem Mikrofasertuch gesäubert und anschließend mit einem Küchentuch trocken gerieben.
Bei jahrzehntelang gelagerten Discs ist je nach Umgebung einiges an feinstem Staub in das CD-Case eingedrungen. Ich habe festgestellt, dass eine CD-Säuberung mit ISO-Propanol-Spray & Vlieskompresse (65 % Viskose & 35 % Polyester) die Rippzeit positiv beeinflusst. Es kann auch sinnvoll sein, bei der Gelegenheit die Innenseiten der Cases zu reinigen.
Geripped wurde primär auf einem alten Windows-7-Rechner mit 2 Laufwerken/2 EAC-Instanzen. Falls dieser keine GD3-Metadaten bekommen konnte, wurde die CD auf einem ebenfalls veralteten Windows-10-Rechner geripped. Falls auch hier keine GD3-Metadaten angeliefert werden konnten (was selten vorkam), wurde je nach CD entschieden, ob eventuell verfügbare Metadaten händisch eingepflegt oder ob die CD ohne die korrekten Metadaten geripped werden sollte.
Eine gute Quelle für fehlende Metadaten ist Discogs. Sinnvoll ist es auch hier, vor jedem Rip die vorgeschlagenen Metadaten mit dem CD-Cover abzugleichen.
Haben sich CDs, für die keine GD3-Metadaten auf dem W7-Rechner angeliefert werden konnten, mal gestapelt, wurden sie in das W10-Laufwerk eingelegt und die jetzt gelieferten GD3-Metadaten wurden in eine Datei auf dem W7-Rechner exportiert. Nun konnte die CD nach einem Import der Metadaten auch auf dem W7-Rechner gerippt und der Stapel abgebaut werden.
Nachdem alle CDs eines Regalfaches gerippt sind, werden sie gezählt und die ermittelte CD-Anzahl in das Skript import_shelf.bat eingetragen (z. B. set /A cds_R01F1=49). Bevor das Skript gestartet werden kann, müssen noch die entsprechenden Aufrufparameter angepasst werden. Beim ersten Skriptaufruf sollte auf das „Mergen“ verzichtet werden. Mithilfe des Skript-Outputs (Protoll/Dateien) können eventuelle Unstimmigkeiten erkannt und bereinigt werden. Danach können die CDs entsprechend der Sortierliste in das Regalfach zurückgestellt und das Skript mit der „merge“-Option ausgeführt werden. Alternativ kann der „Merge“ auch später durchgeführt werden. Sind alle EAC-Daten der gerippten CDs so weit bereinigt, kann eine finale Musiksammlung durch das Skript import_shelf.bat generiert werden.
– Phase II Merge-Protokoll (6839KB)
– songlist.txt (3326KB)
– invokation_parameter_R01F1 (9KB – first shelf in run)
– invokation_parameter_R11F5 (9KB – last shelf in run)
Fazit:
Aktuell sind Recherchen in meiner Musiksammlung mit Hilfe der erstellten Listen zwar technisch möglich, aber wenig komfortabel. Es ist deshalb ein Part 2 geplant, bei dem die Abfragen komfortabler gemacht werden sollen.

