minus1: Das mmhm/Mynap-Projekt. Eine divergente Vision

mmhm: mmhm macht homogene Musikmischungen
Mynap: nach einer bekannten Musiktauschbörse. Nicht verwandt mit: MyNapster, Napster.

Abstract

This page describes a vision for a music database. (Warning: nobody I know is working on it right now). Key features: shared (within a small community, i.e. a couple of friends) rich metadata. Artist, Composition, Performance, ... objects instead of dumb text strings. Arbitrarily many judgment/characterization categories (like "vocal--instrumental", "fast--slow", "political lyrics?", "beautiful"...) and a trust mechanism to distinguish people with your taste from people whose judgments should be ignored.

Sorry, the rest is German.

Was ist mmhm? Was ist Mynap?

Dasselbe. Mynap und mmhm sind zwei Arbeitstitel. Die fertige Software wird sicher anders heißen...

Es geht darum, die Musiksammlung, die bei vielen Nutzern aus ein paar Verzeichnissen mit unsystematisch benannten MP3-Dateien besteht, zu organisieren. Und zwar flexibler als mit einer starren Interpret-Album-Song-Hierarchie, die man dann bei einfachen Musikverwaltern zu sehen bekommt.

flexibler?

Wenn zwei MP3-Dateien dasselbe Lied enthalten, sollen sie in der Datenbank als zwei Musikdateien-Objekte für nur ein Lied-Objekt auftauchen. Wenn ein Künstler in einem Lied Klavier spielt, in einem anderen singt und in einem dritten nur den Text beisteuert, dann soll das eine Künstler-Objekt auf unterschiedliche Weise mit diesen Lied-Objekten assoziiert werden. Lieder können in verschiedenen Alben enthalten sein.

was ist mit Genres?

Genres als solche gibt es in mmhm/Mynap nicht. Man muss sich also nicht ausdenken, ob das Lied jetzt eher Progressive-Retro-Funk-Hop oder Newage-Rap-Ska-Punk ist -- es gibt stattdessen Kategorien wie "Rockigkeit", "Fröhlichkeit"... und von diesen beliebig viele. Wenn der Nutzer eintragen will, inwieweit satter öliger Hammondorgelsound in den Liedern enthalten ist oder inwiefern die Musik Sommerabend-Ach-Ja-Stimmung verursacht, legt er eine neue Kategorie an.

Das Tolle an diesen Kategorien ist nun, dass man danach filtern kann: man sagt dem System "gib mir Sommerabend-Ach-Ja-Musik mit wenig Hammondorgel, rockig sollte sie sein, ist aber nicht so wichtig, das."1 .

und das Nap im Namen?

Wenn man eh schon dabei ist, die Sammlung auf Vordermann zu bringen und seine Freunde das auch getan haben, dann ist der Wunsch nicht weit, gelegentlich (gelegentlich!) ein paar (ein paar!) Lieder zu tauschen. mmhm/Mynap sieht vor, daß der Metadatenbestand innerhalb der Community repliziert wird, so daß in der ganzen Community die Lied-, Künstler-, etc.- Objekte einheitlich sind. Wenn der eine Nutzer ein bestimmtes Lied mit "sehr ölig" auszeichnet, ist diese Wertung auch allen anderen Nutzern zugänglich.

Da man nun schon jederpersons Musikgeschmack in der Datenbank hat, kann der Nutzer natürlich auch die Wertungen seiner Freunde übernehmen, sogar vorgeben, wessen Musikgeschmack er wie sehr vertraut.

Verteilte Datenbank?

Tatsächlich soll eine verteilte Datenbank zum Einsatz kommen, bei der auf nur sporadisch verbundenen Computern gleichzeitig Schreibzugriffe vorkommen, die auf eine Weise miteinander kollidieren, die man erst entdecken kann, wenn beide Stationen ihre Änderungen ausgetauscht haben.

Zu diesem Zweck braucht man einen Master-Server, der der Reihe nach die Transaktionen der einzelnen Stationen entgegennimmt und in seinen Datenbestand eingliedert, falls erlaubt, und den Stationen die neueste Version der zentral koordinierten Metadaten zukommen lässt.

Ach, und das gibt es?

Hier kommt der Haken an der Sache... wir sind noch nicht fertig. Wir arbeiten dran (nominell drei an der Middleware, ein bis zwei am Client), aber selbst die Alphaversion ist noch weit entfernt. (Irgendwer muß schließlich auch noch studieren und Nebenjobs bedienen...).

Bis jetzt ist nur die verteilte-Datenbanken-Bibliothek in einem halbwegs vorhandenen Stadium.

Womit? Worin? Wofür?

Die Middleware schreiben wir in Python, als Datenbank nehmen wir vorläufig Metakit (Mysql war in Planung, aber die Transaktionsfeatures waren nicht so bezaubernd und Metakit ist deutlich schlanker). An Plattformen sollen bzw. müssen Unix (speziell Linux) und Win32 unterstützt werden.

Das Projekt ist nichtkommerziell. Als Lizenz werden wir GPL oder etwas Ähnliches einsetzen.

Au ja.

Wer jetzt von diesen Sprechblasen verstärkten Speichelfluss und von sonstwoher gute Python-Kenntnisse hat, kann sich ja bei mir melden. Sobald die Projektdoku in geordnetem Zustand ist, poste ich sie hier.

Relevante Links

Fußnoten

  1. Das UI wird dafür Schieberegler oder so anbieten. Natürlichsprachliche Anfragen sind nicht geplant... oooch. (zurück)