This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Feature Request: User-Defined Meta Info + Filters

Tags: None
(comma "," separated)
Miles Stevenson
Registered Member
Posts
7
Karma
0
Most music collection managers/players (including Amarok), only use a very limited number of ID3v2 fields available to store meta information about tracks. This meta information is what Amarok uses to sort, search, and filter through your collection. Currently, (and as with most players) Amarok only treats the following information as \"significant\" enough to provide powerful searching/filtering capabilities:

Artist, Album, Genre, Year, Title, Length, Bitrate, Samplerate, Track.

All other information is thrown into a \"glob\" field, \"Comment\".

There is obviously a lot of important information that does not have it\'s own special field. Consider the following info: Composer, Arranger, band members, Lyrics author, record label. For a user, all of this important additional information must be stored in the \"Comment\" field. This works to a point, until you try to use more powerful sorting/filtering capabilities.

If a user takes the time to store this additional information, they miss out on a lot of functionality because Amarok treats all the info as one big glob of information. Imagine what would be possible, if Amarok gave the user the ability to define what information they want to track about their music.

1. The user could make very specific smart-playlists:
-\"Show me how many Charlie Parker tunes John Coltrane recorded with Elvin Jones on drums.\"
-\"Show me how many recordings Teo Macero produced in 1965.\"
Or, for music students and teachers:
-\"Show me all Duke Ellington tunes in the key of B-flat.\"
-\"Show me all Miles Davis tunes with an AABA form.\"

The filtering capabilities would only be limited to the amount of information the user chooses to store about each track.

2. It could be used as a basis for a future \"quiz game\" for music fans and aficionados.

-(Quiz game plays a random 30-second clip from a tune)
\"What key is this in?\"
\"Who is playing bass on this track?\"
\"Who originally wrote the song xxxx\"
etc, etc, etc.

3. We could easily listen to our favorite artists that are side-men (don\'t show up in the \"artist\" field because they are not the lead artist).

4. All kinds of interesting \"factoids\" could be discovered by Amarok doing built in data-mining. example: \"Your busiest musician is Dennis Chambers, who appears on 13 different albums in 1998 alone.\"

The sky is the limit once you give the user the ability to track as much information about the music as they choose.

Now for how to accomplish this:

I don\'t think tag sizes would be an issue, as ID3v2 seems to allow up to 50MB tags, which is more than enough to simply store text info about the music.

You wouldn\'t have to create custom ID3v2 tags. We can STILL throw everything in the comments field. Just use user-defined XML tags to track the info within the Comment field. Example:

Sonny Rollins

Allow nested tags for tracking sidemen:

Chick Corea
Piano


Amarok wouldn\'t need to constantly scan the collection DB looking for new tags either. Create a config file (or GUI) which allows the user to \"register\" their new tags, to tell Amarok what they want to track:

Tag: Description: Who produced the recording.

Amarok would ignore all tags that have not been configured properly by the user.
Finally, allow the user to filter by all this info in the \"Create New Smart-Playlist\" dialogue. The dropdown list that allows the user to select which ID3v2 fields to search, would also list the custom tags available to be searched.

I could imagine a million more uses for this functionality when combined with the new \"script\" engine that was recently provided.

-\"Create a script to export all the meta info of certain albums to share w/ friends to import.\"

-\"Create a script to show a visual timeline of all albums recorded by a particular artist.\"

-\"Create a script to extract all the info and create a pretty XSLT + stylesheet based page of detailed album or artist info.\"

I have also submitted this as an official feature request: bug ID: 96719

Comments?
mortiferus
Registered Member
Posts
74
Karma
0
amaroK uses taglib to read the tags. I did some surfing on the site, and one of the subpages are this one. Some it mentions:
TSOP Performer sort order
TPUB Publisher
TOLY Original lyricist(s)/text writer(s)
TOPE Original artist(s)/performer(s)
TPE1 Lead performer(s)/Soloist(s)
TPE2 Band/orchestra/accompaniment
TPE3 Conductor/performer refinemen
TIPL Involved people list
TBPM BPM (beats per minute)
TCOM Composer
TCON Content type
But I dont know if this \"ID3v2.4\" is actualy a standard, and if taglib supports them all.
The other solution, is as you mentioned, to have it in the comment following a special scheme. I dont think it is hard to do tecnical, but I think it has another problem. I dont think many people are interested in it. Yes, it sounds like a neat idea, but who actualy includes that amount of information in all their mp3\'s? It is good for a few people. I would not mind it beeing implanted, but there must be someone who actualy does the job.
Hopefully one of the developers want the same thing, and does the job.
Btw, do you know of any other player/standard with the same/similar system, so amaroK could use a compitable one.
Miles Stevenson
Registered Member
Posts
7
Karma
0
I don\'t know of an existing system, but I have been giving some serious thought to designing my own if I can\'t convince better developers than myself to take interest in it. This kind of functionality is essential for a \"serious\" collector. I don\'t think the world needs yet another music player, so I\'d rather see it implemented by an already very capable player such as Amarok.

You are right that most people are not interested in such information. Most of the people I know who claim to be really \"into\" the latest xxx rock/pop/metal/etc band aren\'t even aware of who the members are, nor are they interested (most, not all. personal experience here, your mileage may vary)..

I can assure you though, that Jazz musicians, fans, and aficionados are very obsessive people when it comes to this kind of info. We all consider it very important to know who is playing what instruments from piece to piece, who composed the tune, who arranged it, and even the chord changes to the tune if we can\'t figure it out by ear. Most of us want to know as much about the recording we are listening to as possible, especially in an academic setting.

The point was though, that anyone could design their own meta tags. While I might use the tag , you might prefer or may not even be interested in tracking such info.

I do agree that this should be very easy to implement, and can be easily ignored by anyone not interested in the functionality. At the very least, regular expression matching could be added to the filtering capabilities, which would at least make the \"Comments\" field more useful to those of us who use it extensively.

Example:
/\\.*Duke Ellington.*\\<\\/Composer\\>/

Could be used to find all scores written by Duke Ellington (including co-written). Obviously, this would be painful and there are many who do not know how to use regex. So I wouldn\'t consider this a solution, but it would help.

If anyone is interested, I can spec out the set of XML tags that I would define to keep track of my personal collection (not all of them would be applicable for every track of course). This could be used as a starting point, or a set of defaults for anyone else to work from. If anyone posts an interest in seeing a default spec, then I\'ll go ahead and write it up and then put a link here.
mriley
Karma
0
I don\'t think the amount of information is the point. I think the idea is to have user defined searchable elements. I think its a great idea.
Miles Stevenson
Registered Member
Posts
7
Karma
0
If I get enough done this weekend, I might try to pick up some Python and work on something like this as a script extension (the new Amarok script engine). I know that there is a sqlite API for Python, so it should be easy enough to query the Collection DB and search the \"comments\" field.

I guess what I\'m gonna want to do is try to pick up enough of the PyKDE stuff to make a search interface for the sqlite Collection DB. After returning search results, it should be pretty simple to just use DCOP to start each of the tracks playing. Maybe I can even save the search results as a playlist/smartplaylist. The smartplaylist file looks pretty simple. Just a list of SQL queries.

The trick is going to be making the XML formatting of the comments field easily parseable by the SQL queries. I *think* I can use regex with sql select statements. I\'m obviously not a SQL guy either. Since I don\'t know any python, nor have I ever written any GUI code in my life, I don\'t expect to get this done in a few hours. But maybe it will be fun. Then we\'ll see if enough other people find this useful enough to get the attention of the Amarok developers for better integration of the concept into the application instead of a work-around script.

Any suggestions on design or tutorials?


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], lockheed, Sogou [Bot]