In der Ferne Musik hören, mit Beets und Tomahawk

Ich muss mein Homeoffice für ein paar Tage in ein anderen Ort verlegen. Wie komme ich nun an meine inspirierende Musiksammlung auf dem Homeserver? Da ich MPD benutze, habe ich noch schnell ein Streaming Output definiert.

audio_output {
    type            "httpd"
    name            "My HTTP Stream"
    encoder         "lame"
    port            "8000"
    quality         "5.0"
}

Den MPD-Daemon bediente ich per ssh und hörte den Stream per VLC. Eigentlich ganz ok. Als ich mich noch mehr mit Beets beschäftigte, probierte ich das Web-Plugin aus. Dies konnte nicht viel. Vor allem keine Chance meine FLAC-Files zuhören wegen fehlenden HTML5-Support. Nun kommt der Cloud: Das Web-Plugin von Beets ist per API erreichbar und mit TOMAHAWK nutzbar. Ein Player von dem ich bis jetzt nichts gehört habe. TOMAHAWK ist sowas wie ein Frontend für allerlei Streamingdienste und kann auch noch viel mehr. Zum Beispiel Library-Sharing über XMPP. Habe ich alles noch nicht getestet. Das Beets-Addon funktioniert perfekt. Streamen der kompletten Sammlung. Endlich mal gscheite Musik, egal wo ich bin.

Beets und Verschiebungen

Viel Zeit habe ich im beets IRC-Channel verbracht. Auch wenn die Dokumentation reichlich ist, war mir einiges Verhalten dann doch nicht so klar. Wenn ich Sachen importiert habe die entweder keinen Eintrag bei musicbrainz haben oder von Discogs kommen, sind die Artists-Tags unterschiedlich. Zum Beispiel bei den Hörbüchern von C.S. Lewis. Ein Hörbuch war bei musicbrainz und war getaggt mit "C.S. Lewis". Ein anderes wiederum habe ich einfach wie es ist importiert (dies geht auch. Zum Beispiel um trotzdem eigene Sachen in der Musiksammlung zu haben). Es hat den Artist-Tag "C. S. Lewis". Ist vielleicht im ersten Augenblick nicht so schlimm, verhagelt einem aber die Verzeichnisstruktur. Nun gibt es den beets-Befehl beet modify QUERY artist="C.S. Lewis". Dieser sollte das hier machen:

Supply a query matching the things you want to change and a series of field=value pairs. For example, beet modify genius of love artist="Tom Tom Club" will change the artist for the track “Genius of Love.” The -a switch operates on albums instead of individual tracks. Items will automatically be moved around when necessary if they’re in your library directory, but you can disable that with -M.

Also habe ich versucht den Artist-Tag zu verändern. Dies klappte auch wunderbar, nur verschob er die Files nicht in das passende Verzeichnis "C.S. Lewis". Ich probierte rum. Ich versuchte den Befehl beet move (von dem ich bis jetzt auch nicht wirklich weiß was er macht). Nichts passierte. Ich versuchte den albumartist-Tag zu verändern. Wieder änderte er den Tag, verschob die Dateien aber nicht. Ich fragte im IRC und viele waren verwundert das es bei mir nicht geht. Nachdem ich es auf einer zweiten Box getestet hatte, und da das gleiche verhalten hatte, schrieb ich einen Bugreport. Ein paar Minuten später hatte ich die Antwort:

I think you want to modify the album-level structure and the albumartist field: beet modify -a foo albumartist="bar"

Und das war es. Zusätzlich sollte man noch ein beet modify -a C.S. Lewis artist="C.S. Lewis" machen. Damit artist-, und album-Tag zusammen passen. Und ich muss ehrlich sein: Der Sinn von "-a" ist bis noch überhaupt nicht klar. Was heißt das er es auf das Album anwendet? Ich dachte er würde immer individuell schauen und dann die Files anpassen. Zumindestens geht es schon einmal. Und wenn es das tut, ist es ein großartiges Tool, auch wenn ich oft an der Dokumentation scheitere....

Beets und so

Musikverwaltung kann wirklich der Haß sein. Am Anfang waren es nur ein paar lose Ordner die man wiederrum lose in Ordner mit Artist-Namen steckte. Nichts besonderes. Mit einem Player wie xmms (einen WinAmp-Klon für Linux) machte das auch keine großen Probleme. Man klickte durch die Ordner und wählte die Files aus die man hören wollte. Doch man wollte irgendwie mehr: Datenbanken mit allerlei Metadaten. Ich probierte Amarok aus. Ein riesen Biest welches den Wunsch nach Musik im Keim erstickte. Es war so träge und häßlich wie die Nacht. Nach einem Anfall nach Minimalismus, benutze ich jahrelang CMUS. Ich war zufrieden. Dann kam mein erster iPOD und meinen Ausflug in die MacOSX-Welt. iTunes... was muss man dazu sagen. Ein dreckiges Stück Software zum abgewöhnen. Und es hatte nur ein Feature welches ich wirklich gut fand: Es verwaltete deine Musik. Änderte man einen Tag, veränderte er auch die Dateinamen und popelte das in die richtigen Verzeichnis. Ein Traum. Dann mein Wechsel zurück zu Linux auf dem Desktop. Ich fand keinen Ersatz für dieses Feature. Doch etwas viel Schöneres wurde mir offenbart: MPD! Ein Daemon den man schön laufen hat und mit Clients seiner Wahl bedienen kann. Ganz großes Kino. Als Client setze ich bis heute ncmpcpp ein. Ein Traum. Mit der verwaltung war es aber noch immer so ein Problem. Ich lernte Musicbrainz zu lieben. Das benutzte ich nicht nur jeden Tag, ich fütterte es auch mit vielen neuen Daten aus meiner Hardcore/Punk Sammlung. Musicbrainz ist sowas wie die Wikipedia der Musik-Metadaten, inklusive Cover Archiv. Ich benutzte Picard um Teile meiner Sammlung zu verifizieren und richtig zu taggen. Picard erkennt sogar per akustischen Fingerprint ungetaggte Files und packt alles schön in sein vordefiniertes Verzeichnis. Eigentlich war ich ganz zufrieden. Nun las ich von Beets. Ein Musikverwaltungstool in Python. Was mich daran reizte: Man kann seine komplette Sammlung durch jagen und versucht alles richtig zu taggen und zu benennen. Mit den richtigen Plugins sucht er sogar noch das Cover und Genre raus. Gibt es mal etwas nicht bei Musicbrainz, kann per Plugin auch auf Discogs zugegriffen werden. Damit wäre fast alles abgedeckt. Ich habe mal eine Kopie meiner Sammlung gemacht und ein beet import Musik.bkp gestartet. Weil noch nicht alles durch Musicbrainz verifiziert war, musste ich noch viele Fragen beantworten. Bei einem bestimmten Prozenzsatz an Abweichungen bedarf es Userinteraktion. Ich bin soweit zufrieden das ich schon komplett umgestiegen bin. Es gibt doch noch ein paar Punkte, die ich klären will:

  • Leere Verzeichnise bleiben übrig
  • Ändert man Tags werden die Verzeichnise nicht angepasst
  • Zieht er sich die Genres von last.fm, wieso schreibt er sie dann manchmal in die Files und manchmal nich