Wie ich meine MP3-Sammlung aufbaue (hier nur die Interpreten)

Ich will mir eine MP3-DB aufbauen um mir damit z.B. eine m3u-Datei zu generieren *)
Ich will die MP3-Dateien insoweit egalisieren das alle Tag-Felder gleich gefüllt sind. In meinem Fall 'Jahr' und 'Cover'.
Ich will alle Künstler in einer einheitlichen, fehlerbereinigten Schreibweise haben.
Ich will in einem späteren Schritt meine eigene Genrezuordnung erstellen. *)
Ich will in einem späteren Schritt diverse Filterungen und Zusammenstellungen vornehmen. *)
(Der/Die eine oder andere erinnert sich an meinem erwähnten MP3-Ingineer, den ich vor ca. 20 Jahren eingestellt habe. Ich will das Access-Programm jetzt mithilfe des genialen 'Mp3tag' weiterführen. *)
*) später mehr, wenn gewünscht

Bitte unbedingt bedenken: das ist nur einer der vielen Möglichkeiten der Normalisierung! Es ist mit Sicherheit nicht der Königsweg, aber er klappt.

Da m.E. die Interpreten die Grundlage allen weiteren Tuns sind müssen alle Künstler erst auf einen vernünftigen Stand gebracht werden.

Verwendete Programme:

  • Mp3tag
  • Access 2010
  • Path Scanner (zur Bestimmung der Gesamtlänge einer Datei)
  • Mouse Recorder Premium 1.0.45 (damals noch Freeware, wird jetzt zum Kauf angeboten (wesentlich mehr Funktionen))
    Für Faule, wie ich mich, sollte ein Makro-Recorder benutzt werden.

Mein Vorgehen am Beispiel der Interpreten

  • Die Länge der MP3-Pfade ermitteln, sie sollten 250 Zeichen nicht überschreiten, sonst kann es zu mysteriösen Fehlern kommen. https://pathscanner.com/ aktuell Freeware.

  • Entscheiden, ob "The", "Die", "Der" usw. vorangestellt werden, dann mittels 'Mp3tag' entsprechend kürzen oder erweitern.

  • Falls vorhanden: die falsch gesetzten Trennzeichen 'accent aigu' sowie 'accent grave' gegen ein Apostroph tauschen. (anm: Access mag auch diese Apostrophen nicht)

  • Eine DB erstellen (hier Access) mit:
    zwei Tabellen: tblArtist und Importtabelle
    zwei Formulare: frmStart und frmStart_2
    VBA-Code

2.) Mit Hilfe des Mp3tag einen Export der zu bearbeiteten Files erstellen (in meinem Fall csv).

Parameter:

$filename(csv,utf16)Titel;Interpret;Album;Track;Jahr;Pfad;Dateiname;Cover;Genre;Kommentar;Laenge;BitRate;PlattenLabel;
$loop(%_filename_ext%)%title%;%artist%;%album%;%track%;%year%;%_folderpath%;%_filename_ext%;%_covers%;%genre%;%comment%;%_length_seconds%;%_bitrate%;%plattenlabel%;
$loopend()Erstellt am %_date% mit %_app% - dem universellen Tag Editor - mp3tag

Für alle meine bisher mit dem Mp3tag gemachten Arbeitsschritte reichen die o.g. Felder aus.

3.) Export-Daten mittels des Formulars 'frmStart_2 ' und dem hinterlegtem VBA-Code in die Hilfstabelle 'Importtabelle' einlesen https://abload.de/img/2022_02_13_frmstartwek1r.jpg
(ACHTUNG: hier lauern allerlei Fußfallen: TAG-Felder sind nicht ausgefüllt, Felder haben das falsche Formate, etc.)

4.) Aus dieser Tabelle eine Anfüge-Abfrage erstellen. [Importtabelle]-[Artist] --> [tblArtist]-[Artist]
Felder: Artist (gruppiert)

Diese Abfrage füllt die 'tblArtist' mit allen zu bearbeitenden Künstlern und vergibt beim Einlesen automatisch eine 'ArtistID', die später weiterverwendet wird.

5.) ein Formular erstellen, um parallel zur TAG-Vervollständigung, wie Cover und Jahr, die DB-Felder 'Herkunft', 'Gruppe/Duo... und 'Bewertet' auszufüllen. https://abload.de/img/2022_02_13_frmstart_2h3k3f.jpg

Jetzt beginnt die nervige Handarbeit:
Meine Arbeitsumgebung: http://abload.de/img/2022_02_13_arbeitsbil6qjkv.jpg

6.) Artists:

  • auf gleiche Schreibweise achten (Schreibfehler, Umlaute, etc)
  • bei Änderungen die Daten in der DB-Tabelle UND im 'Mp3tag' ändern.

Hier kommt der Makro-Recorder ins Spiel.
Ich setze den Cursor ins Interpreten Feld, so als wenn ich eine Eingabe machen wollte (das gesamte Feld ist markiert).
Starte das Makro.
der Eintrag wird kopiert und in die Eingabemaske eingefügt und die Eingabe wird verarbeitet.
Der Cursor spring wieder in die Mp3tag-Maske und ruft mittels einer selbst erstellten Aktion (Strg & 1) die Google-Webseite auf
(siehe Mp3tag-Forum: Automatische Kopie in die Zwischenablage / Umgehungslösung via Tools am Beispiel hitparade.ch ) [Danke LyricsLover & ohrenkino]
Makro Ende

Übernahme von Jahr und Cover aus der gefundenen Googleseite, trage sie in das Formular frmStart_2 die benötigten Daten ein und speichere es.
Nach Abschluss der Interpreten-Arbeit, in ca. 2-4 Wochen, das Gleiche mit den Songs. Das ist im Moment noch in der Feinplanung.

Mit der jetzt teilweise schon fertigen DB kann man schon vielerlei Dinge anstellen.
Ich möchte den Mitstreitern, die auf vorgefertigte Abspielprogramme mit hinterlegten DBs zugreifen empfehlen über eine selbst gemacht MP3-Verwaltung nachzudenken, da in diesem Fall keinerlei Kompromisse eingegangen werden müssen.

Weitere Ideen:

  • nach der Song-Bearbeitung alle MP3s, die nicht dem Mainstream für 'Charts' entsprechen, per Knopfdruck in die Abteilung Raritäten verschieben und umgekehrt. Natürlich wird dann das korrekte Jahr berücksichtigt.

Alle Leser sind herzlich eingeladen weitere Ideen beizusteuern.

(Stand 14.02.2022)

Wirklich? Oder machen die nur beim Import des von MP3tag erstellten Export Probleme?
Ich würde nämlich kein echtes CSV exportieren, also wo ein Komma oder Semikolon als Feldtrenner verwendet wird, sondern immer $char(9) (also das Tabulatorzeichen) einsetzen. Mit dem Tabulatorzeichen kann man sicher sein, dass das nicht im Feldtext vorkommt (naja, meistens jedenfalls - wenn da nicht vorher ein anders Programm ganz seltsame Inhalte produziert hat - aber das wäre ggf. ein Bereinigungsgang in MP3tag).

Ich weiß nicht, was du mit der ARTIST-ID anfangen willst.
Ja, Access vergibt eindeutige Schlüssel, wenn man möchte, aber die haben doch erst dann einen Wert, wenn sie auch wirklich auf den eindeutigen Datensatz zeigen.
Oder andersrum: wenn ich unbereinigte Daten in Access importiere, Access treu und brav seine IDs vergibt, dann muss ich doch irgendwo eine Gleichsetzung machen, dass ein Klarschriftname, wie er in den unbereinigten Daten gefunden wird, auf einen eindeutigen Namen zeigt.
Der Klassiker sind The Rolling Stones vs. Rolling Stones oder Swing Out Sister vs. SwingOut Sister. Am Ende möchte ich doch nur einen eindeutigen Namen haben, hier würden doch aber insgesamt 4 statt der gewünschten 2 IDs vergeben.
Also: wo findet die Bereinigung statt?

Auch interessant wird, wie du mit der Familienaufstellung bei etlichen Hip-hop-Künstlern verfährst, wo kreuz und quer EInzelkünstler zusammen mit anderen auftreten und dann ge-feature-d sind.
Beispiel:
Jay-Z mit I Know What Girls Like <& Lil' Kim & Puff Daddy>
Lil' Kim mit Single Black Female <& Mario ''Yellowman'' Winans>
Puff Daddy mit It's All About the Benjamins [Remix] <& Lil' Kim & the Lox & Notorious B.I.G>

Würde man in deiner Datenbank alle diese Titel jeweils beim einen und beim anderen Künstler finden? Wie würdest du dann die Titel zusammenstellen, damit auch dort die einheitliche Schreibweise ankommt?

Ich betrachte das Semikolon als Trennzeichen. Die VBA-Routine zerlegt die einzelnen csv-Textzeilen in ihre Bestandteile und fügte Inhalt in die entsprechenden DB-Felder. Hier stören die Trennzeichen also in keinster Weise. Wo Apostrophen stören ist in Suchparametern, aber das ist umgehbar.

Wie ich schrieb, wird das Schlüsselfeld erst später, bei den Songs, benötigt.

Stimmt, ich behandle alle Unterarten der Künstler, wie z.b. bei den Stones, als einen Eintrag.
Bei Auswertungen, in denen ich nach Stones suche, suche ich mit Wildcards und den "oder" etc. Parametern. Da sehe ich absolut keine Probleme.

Das Einlesen der Titel geschieht auf ähnliche Weise wie bei den hier beschriebenen Interpreten.
Während des Einlesens der Songs wird eine Song-ID generiert und aus der Tabelle tblArtist die Artist-ID mit zum Song-Datensatz geschrieben.

wie kriegst du die Daten zurück in die Dateien?
Schreibst du ein Feld, das zeigt, dass die Daten schon in der DB sind?
Oder muss der ganze Import jedes Mal wieder neu durchgeführt werden?

Ich sehe, nach dem Import der Songs, pro Song folgendes Bild:
image001a2

Hier werde ich bei der Songbearbeitung die entsprechenden Kästchen markieren.
Das ist mein Entwurf von vor ca. 20 Jahren :slight_smile:
Und natürlich hat sich die Welt weiterbewegt, es bedarf noch einiges an finetuning.

Das sieht mir nur nach der Datenbank aus.
Es wäre ja jetzt arbeitssparend, wenn die Musik-Dateien dieselben Daten enthielten wie die Datenbank. Denn sonst macht man ja alle Arbeiten doppelt und dreifach.
Deshalb die Frage: wie kriegst du die Daten wieder zurück?

OK, das stimmt, aber da ich keine Musik weitergebe ist es NUR für den Eigenbedarf. Von meinen Klassifizierungen passt m.W. eh nur eine in das Tag-Feld 'Genre'.
Ich vergebe, je nach Songart auch mehrere Genres und die werden nur in der DB gespeichert.

Und ja, es stimmt. ich habe das ganze Gedöns schon mal vor 20 Jahren gemacht. Leider hat der Programmierer des damaligen MP3-Quellprogrammes die Programmentwicklung mit Windows XP eingestellt. So wie auch ich das Thema MP3 völlig aus den Augen verloren habe.

Das damalige Programm kam auch lange nicht an das aktuelle 'Mp3tag' heran.

Naja, dann ist ja der Allgemeinnutzen eher begrenzt.
Dazu: du kannst ja mit Konverter>Textdatei-Tag auch wieder Daten importieren.
Und das geht auch mit bennutzerdefinierten Feldern, so dass vermutlich alle Daten aus der Datenbank auch wieder in den Dateien landen könnten.
Und dann kannst du bestimmt ähnliche Abfragen in MP3tag entwerfen (filter) mit denen dann du viel direkter Widergabelisten erstellen kannst.

Ja und Nein. Ich wollte im Prinzip nur meine 'Normalisierung' von Künstlern und ihren Songs vorstellen.

Hier im Forum wird oft geklagt, dass es kaum fertige DBs gibt, die die Ansprüche der User vollständig abdecken.
Warum also an vorhandenem Klimmzüge machen, wenn es doch die Möglichkeit gibt sich selbst eine DB zu erstellen, die GENAU auf meine Bedürfnisse gestrickt ist.

Ein Beispiel für die Sinnigkeit einer wie auch immer gearteten ext. DB: Doppelte Songs finden.
Die Songs erscheinen im Original auf einer CD und tauchen, oft identisch, viele Jahre später auf Samplern wieder auf.
Ich stehe auf dem, vielleicht falschen, Standpunkt: "Nichts ist origineller als das Original".
Von daher:
Ich erfasse alle Daten, verwerfe aber die neueren Veröffentlichungen komplett aus den Auswertungen, es sei denn andere Künstler wirken an der Neuaufnahme mit, aber dann wird es eh ein neuer Eintrag.

Das mit den eingangs erwähnten m3u-Listen war nur ein kleines Beispiel.
Ich denke das kann Mp3tag effektiver erstellen, wenn auch nicht so flexibel wie eine Liste, die aus anklickbaren Genres zusammengestellt wird.
Ich will meinen Ansatz nicht schön reden, es ist, wie alle zugeschnittenen Lösungen, von begrenztem Allgemeinnutzen.

Da wäre dann interessant, zu sehen, welche Daten der Datenbank wirklich die Dubletten finden - und was man dann mit der Erkenntnis macht.
Konkret: nur nach dem Titel zu sortieren, wird zu falschen Treffern und vermeintlichen Abweichungen führen, wenn nicht zuvor der Titel ganz genau recherchiert wurde und alle Rechtschreibfehler oder andere Abweichungen (z.B. mal mit mal ohne Klammern eine Ergänzung eingefügt) ausgemerzt sind.
Und dann müsste man sich den Titel anhören, ob nicht irgendwo was fehlt oder was auch immer am Audio-Teil anders sein kann, so dass eigentlich nur ein akustischer Fingerabdruck hilft.
Und zu guter Letzt: wenn ich dann die Dublette aus der einen Sammlung lösche, dann habe ich da eie Lücke, kann diese aber nicht wieder herstellen, es sei denn, ich habe irgendwo eine Liste rumliegen, die mir sagt "und für Nummer 11 guck bitte in Origirnalalbum Y, um dieses Album wieder komplett zu kriegen". Das wäre für mich regelmäßig doppelte Arbeit und bei den niedrigen Preisen für Speicherplatz einfach ein zu geringer Stundenlohn.
Bei mir bleiben solche Dubletten.
Und wer dann doch mal einen Überblick bekommen möchte, wie viele Dubletten er in seiner Sammlung hat, werfe das auch als Freeware erhältliche Programm Similarity an und lasse es vergleichen. Manchmal kommen dabei Stücke zu Tage, die von den Tag-Daten her nie und nimmer als Dubletten erkannt worden wären ...
Ja, ich unterstütze deine Idee, so viele Schreibweisen wie möglich zu vereinheitlichen.
Aber ich glaube, dass es dafür genügend öffentlich erhältliche Werkzeuge gibt. MP3tag, um die Bearbeitung durchzuführen, Foobar2000, um auch große Sammlungen zu verwalten und schnell mal die Namen von Interpreten rauszusuchen, die man schon verwendet hat. Die kann man dann ganz einfach auf die neuen Dateien übertragen und hat die Daten dann wirklich nur an 1 Stelle und einige in einer DB und ganz andere in den Dateien.
Aber das ist nur mein Ansatz, basierend auf den obigen Überlegungen. Wie das genau lokal passiert, muss jeder selbst rausfinden.

1 Like

stimmt, aus diesem Grund verwende ich die IDs
Beispiel: Rolling Stones haben die ArtistID 2547, der Song Angie die SongID 23574
Jetzt kann ich Abfragen "welche Künstler haben die SongID noch verwendet?"
Im Ergebnis hab ich dann alle Künstler meiner Sammlung, die diesen Song auch gesungen haben.
Wie ich schon vorher schrieb, mich persönlich interessieren nur die ursprünglich veröffentlichen Songs. Alle Neuaufnahmen des selben Interpreten lasse ich unbeachtet, obwohl sie in der erwähnten Abfrage auch auftauchen würden (erkennbar am Veröffentlichungsjahr und am Albumtitel).

Ich lösche keine Songs aus den Alben, sie bleiben unangetastet. Was ich lösche sind identische Songs die in verschiedenen Jahren meiner Charts-Liste auftauchen. Hier nehme ich nur den Titel aus dem Veröffentlichungsjahr. (z.B. 'Satisfaction' taucht gefühlte 20 mal bei mir auf, ich verwende für meine Zusammenstellungen oder ähnliches, nur die Version von 1965)
ohrenkino, ich glaube du warst es der mal schrieb: die Genre-Zuordnung der offenen Tag-Quellen wie FreeDB und ähnliche sind im Grunde nicht verwendbar. Deshalb mach ich mir meine eigene Zuordnung.
Klar, das ist eine Jahresaufgabe. Aber was solls, ich mache lieber was, was ich gerne mache, als mich von den Streamingdiensten oder TV berieseln zu lassen.

Ich bin gespannt, welche Überraschungen/Fußangeln mich beim Einlesen der Songs erwarten :slight_smile:

Danke für den Hinweis, das klingt interessant.

Warum ich so skeptisch bin ...
In meiner Sammlung gibt es einen Sampler mit "Summertime (40 versions)". Da heißen alle Titel "Summertime", werden aber von 40 unterschiedlichen Künstlern dargeboten.

Und dieser Titel wird auch gerne mal als "(I can't get no) Satisfaction" abgelegt ...
Bei mir gibt es dann davon noch die extended version von den Stones und den vom Text her gleichen Titel als Variante von Benny Benassi, Britney Spears, Cat Power, Eve, Laura Branigan, Wendy & Lisa.
Das soll nur den Variantenreichtum zeigen.
Gefunden habe ich diese Varianten im Handumdrehen mit Foobar2000 und seinen flexiblen Abfragemöglichkeiten. Und diese Vorgehensweise hat den Vorteil, dass nur die Metadaten aus den Dateien gelesen werden, ohne dass man erst noch eine weitere Anwendung öffnen muss.
Mir ist immer noch schleierhaft, wie denn die ganzen schön vereinheitlichten Daten später im Abspieler weidergefunden werden - da müsste es doch ohne Rückführung der aktualisierten Daten aus der DB weiterhin wie Kraut und Rüben aussehen.

Macht nichts, denn JEDE dieser Versionen ist nur EINEM Künstler zugeordnet.
Ich Suche so: (Platzhalter) & "Summertime" & (Platzhalter). So bekomme ich dann 40 Ergebnisse, die dann nach belieben weiterverwenden kann (sollten andere Titel das Wort 'Summertime' beinhalten, werden sie natürlich auch angezeigt).
Ich lese keine Daten in das MP3-File zurück. Sollte es dann doch mal sein, gibts hier im Forum genug funktionierende Anleitungen.

Ich habe solch eine Abspielanlage (noch) nicht. Am Laptop habe ich das gute alte Winamp, im Auto ein ähnliches System.

Mein Ansinnen ist viel rudimentärer, ich Klicke mir die Genres, die ich hören möchte zusammen und spiele sie auf einen Stick.
(Ich benutze dazu die Freeware "AmoK Playlist Copy": https://www.amok.am/en/freeware/amok_playlist_copy/

Wenn ich sie dann noch in einer bestimmten Reihenfolge haben möchte, setze ich einen Zähler vorweg 0001 -> 9999.
Ich habe noch keine Ahnung, ob ich jemals mehr Funktionen brauche.
Aber das sind Aufgaben, die ich im laufe des Jahres angehen werde.

Das kann man auch sehr schön mit einem Filter in MP3tag machen:
genre HAS x OR genre HAS y OR genre HAS z
Dann Datei>Playlist (alle Dateien). Fertig.
Das setzt natürlich voraus, dass die Genres auch in den Dateien zu finden sind. Wenn die nur in der DB stehen, ist es hoffnungslos.
Allerdings hat der Weg über MP3tag den Vorteil, dass man nicht noch ein Tool einsetzen muss, da all diese Funktionen schon in MP3tag vorhanden sind.

1 Like