MobileSheets Forums

Full Version: Artists sort order
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
We have sorttitle, should we have sortartist as well so we can sort 'Pink Floyd' at P and 'Eddy Floyd' at F ?
I definitely plan on adding an option to sort composer by last name first. I was thinking of also supporting that for artist. Do you think it would be better to have a field for "sortartist" that you would have to populate separately versus just sorting it by last name for all values (if enabled)?

Thanks,
Mike
Composers are usually people, with first/last names. And even then... What is the last name of Johann Sebastian Bach? Ralph Vaughan Williams? സ്വാതി തിരുനാള്‍ രാമവർമ്മ?

Artists can be anything so there is no general rule for sorting. For my record collection programs I 'invented' a special syntax to create sortname and displayname from a single item: "Floyd, Eddy *" (displayname gets sort key filled in on the *) and "Pink Floyd" (as is). This can even cope with complex names like "Williams, Roek * and the Fighting Cats" and "Veulpoepers, RK * BV".
Could you please tell us some more details about your "special syntax"? Thanks.
The main problem I have with a sortartist field is that the field allows any number of values to be entered, not just one. There isn't an easy way to implement a plural "sortartists" field where you can specify the sorting for each value in the artists field. Unlike the song title, which is required, artist is an optional field, so it wouldn't make sense to have a value in the sortartist field without any artists assigned to the song. I think I may need to come up with a different way of handling this, like letting the user tap on each entry in the artists field and they can assign the sorting value in a popup for that particular field. This would require a new database table to store everything though.

I would assume "Bach, Johann Sebastian" or "Williams, Ralph Vaughan" would be the way the algorithm would handle those. Whether that's correct or not is a different issue. I could also change the behavior so it only applies to artists with a first and last name (so any name greater than two values would be sorted normally). I could also look into supporting a syntax like what you have described. I'm open to something like that as well.

Thanks,
Mike
I started registering (on the computer) my collection of records, cassette, tape recordings somewhere in 1978. Until then I had it all written out on paper.
As soon as the data was in the computer I encountered the issue of sorting the artists.
My latest gross redesign of the database and software was in 2001. This is the software I still use up to today.

The issue to be solved is how to sort arbitrary artists (people names, band names). I tried a number of heuristic algorithms but they all had their flaws. It is theoretically impossible to distinguish a band name like Pink Floyd from an person name like Eddy Floyd. Not to mention Jethro Tull (the person) and Jethro Tull (the band).
My first attempt was to indicate the sort key in the display name with an asterisk: *Pink Floyd versus Eddy *Floyd. (For convenience a leading asterisk could be left out. No asterisk meant sorting 'as is'). This had certain limitations so I quickly switched to a format with two fields: the sort key and the rest: "Pink Floyd; Pink Floyd" and "Floyd, Eddy; Eddy Floyd".
From there is was a trivial step to "Pink Floyd" (no asterisk → sort 'as is') and "Floyd; Eddy *".
Transformation from sortname to display was a single rexep replacement: s/^(.*?);\s(.*)\*(.*)/$2$1$3/ (in Perl).

Since there is a deterministic way to transform sortname to display name it is not necessary to have both in the database. It is also upward compatible in the sense that it is easy to augment an existing implementation with only display names to deal with sort names -- without affecting current data and behaviour.

This is basically the situation with MSPro. It only has artist names that are display names. By using the above transformation algorithm (or something similar) a sorting order can be obtained without the need for a separate sortnames item. Also, as Mike already noticed, if you would have multiple artists and sortartists how to pair them?

In my initial design I used commas to separate the sort part from the rest which turned out to be non-optimal (think "Crosby, Stills, Nash & Young"). There a much better choices.

So my personal advice to Mike would be to not try the road of heuristics but adopt something similar to described above. Heuristics will let you down.

And yes, it is "Bach, Johann Sebastian" and "Vaughan Williams, Ralph".
I've been using a workaround. If I can find a song's composer(s), I enter that into the composer field (lastname, given names) and in the artists field (given names lastname). Arrangers, bands, groups, transcribers, etc. all go in the artist field.

This makes it so that when I view the composer tab, the composers are all sorted by last name. When I view the artists tab, the artists are sorted by first name or band name. 

While it might be nice to see the whole song list sorted by artist, it seems like I would end up with many songs copied multiple times because I listed more than one artist.