Solved Improved Classical Music Browsing
#1
This has been discussed before, but never seems to have taken off. I'm starting this thread in order to refine the requirements for improving the Music Browsing experience of Classical Music listeners. If my wife doesn't kill me for this - I'm planning to dive in myself and help implement the feature myself. Since I've never done any Kodi (XBMC) development before I expect it to be a slow start; but in this area it seems that if you want it - you need to build it yourself. I have 30+ years development experience in Databases, C/C++, Python, and so on; so I have the qualifications, the time (I hope), and the motivation. What I need is insight into Kodi about how best to implement this; and I'd like feedback on what would satisfy other Classical Music listeners out there who desire this kind of feature.

See the following for a related discussion: Filter / Sort by Composer/Conductor/Publisher in Music Library using ID3 tags?

I don't approach listening to classical music the way that most Music Players - including Kodi - present music. I don't listen to "Songs". I listen to "Works" (i.e.Beethoven's 5th Symphony). That Work might have been performed by many different people; and I tend to collect several of those performances. These aren't "Covers". I care who conducted the performance. I care who the ensemble is. I care who the featured soloists are. I care who produced the published recording.

In a perfect world, my music player would allow me to do the following kinds of things:
  • Search for a work by standard listing numbers (K551), cannonic name (Mozart's 41st Symphony), or common popular name (Mozart's Jupiter Symphony)
  • Browse by Ensemble (London Symphony Orchestra)
  • Browse by Composer / Work / Ensemble
  • Browse by Soloist / Work (Yo Yo Ma / Bach Cello Suite #1 in G Major)
  • you get the idea

My initial thought for browsing is to allow users to specify up to three tiers of organization categories from the list: Composer, Work, Performer, Conductor, and Album. I'm still thinking this list through; but that's a start. For example, you could specify that you want to browse based on "Composer / Work / Album". What you would experience is at the highest level a list (or thumbnail) all the Composers you have recordings of in your collection. If you select one of those Composers, you would then see a listing of all the Works of that Composer you have in your collection. Then if you select Work, you would be presented with all Albums that include at least a portion of that Work. When you open up the Album, you get the standard album listing of tracks. Or, I suppose it would be easy enough to allow you to only show those tracks that are by the Composer/Work tiers above it.

I like the idea of Work as it is defined in MusicBrainz. It allows me to represent relationships that I care about. For example, it is important to me to distinguish between the original Piano version of Modest Mussorgsky's Pictures at an Exhibition; and Ravel's orchestrated version. Or to know if the version of Mozart's Requiem is the Süssmayr completion or one of the modern completions. Works can help distinguish this. Problem is, of course, it all depends on good metadata. My experience with Metadata databases is similar to my experience with Music Players - data that is important to Classical music listeners is often missing or inaccurate. For my part I'm working to at least make my collection accurate.

Obviously I'll need to get into issues with Scrapers, handling of Metadata in media, and so on. But for now, I'm mostly interested in the details of the browsing experience itself. Once that's nailed down; I'll want to pursue the "How-to-do-it" aspect of things.

So - is anyone else interested in an improved Classical Music browsing experience? Share your thoughts please. Is someone else working on this? If so, I definitely want to know and ask how I can help.
Reply
#2
I'm happy to see, that there is somebody else interested in XBMC AND classical music. Yes, I'm to ++++

I'm aware about some older discussions, e.g. "composer.patch" and tried to apply few years ago but couldn't bring the things to some satisfying end. Then came Gotham, now Kodi and my hope was, that features will be implemented. Ok, as per today conclusion is - need to build it yourself

I would agree with your approach. Organization of classical music should be build around "Work". But - I do not know a predefined tag for that. No issue with composer, conductor, ensemble. For the movements of a work I currently use the title tag.

I would propose to split the implementation in XBMC in to two parts. In a first step let's assume, that music files already tagged and no scraping of external source is needed. In my example I have a (large) Excel file with all the information (work, titles of parts, album, artists, composer, ensembles, conductor) and some macros which allow me to tag the files. In a second step the job of tagging could be done by scrapers included in XBMC. But my experience with automatic tagging by scrapers is so "la la". If you want to have a level of consistency good enough for database based management of music collection very often needs to correct/adapt things manually (it's valid not only for classical music ...) So, as you said - I'm working to have my collection tagged accurate too - even if today there is no player presenting me tags like "composer" (I found earlier one commercial product but did not follow).

No major comments regarding your post - I can support everything what is written.

Do you think about new menu item "Classic music" or do you prefer to implement it under the item "music" ? For me a separate item seems to be a better solution.

Which file type you use ? My files stored in "flac"-format.

Will it be the target to deliver at the end (whenever it will happen) a patch to the XBMC core team which they accept and merge with the XBMC release ?

My programming experience is also about 30 years, but more for real time an embedded systems. However, I have some experience with MySQL, JavaScript, PHP too. I say this for better understanding, not because I think I can enter in direct programming of XBMC. But I'm ready to participate in discussion and testing.
Reply
#3
Not particularly interested in classical music but I'm a data nut so this catches my interest.

I'd be interested in how MusicBrainz currently handles it.

In terms of development, I'd start simple. Changing the structure of the music db is very hard, but adding a new field maybe possible or indeed something like extra music tags.

I've already been pushing for things like mood and style to be implemented in the Audio Nodes.

Also since I run one of the metadata sites I would be very interested in any improvements you think would help on that side of things. Check out this entry for Mozart, its already a bit messy!

Wolfgang Amadeus Mozart
http://www.theaudiodb.com/artist/114327
Reply
#4
I am very interested in this improvement. I am not as geek as you are but I a big part of my music is classical.
Dukeja, did you notice that the link you provided is dated 2005? So if you want this improvement, I'd guess you have to do it.

Did you contact developers to ask if they agree to add your development in the main build?
I use Openelec on RPi and I am not so good to compile etc... it's why I'd prefer the integration.

BTW, I have more and more music in HD and multichannel. I didn't see any way to differentiate from 16/44.1. Do you have this kind of music? How do you manage it? Is there a request for this?

So, I am in, I'd be happy to help but I don't know how.
Config, audio player only:
2T HDD <USB> RPi2/Kodi <HDMI> Denon AVR-2313 <HDMI> LG TV 55UF860V
Reply
#5
(2015-01-24, 20:24)MrNice Wrote: Dukeja, did you notice that the link you provided is dated 2005? So if you want this improvement, I'd guess you have to do it.

Yes, I did notice. Some of the replies were later. There seems to be a fairly constant trickle of interest in better Classical browsing. It also seems that none of the main developers are interested. And I've already concluded that I'll probably need to do it myself. My biggest problem will be the time. I hope everyone is patient; because this will take me some time due to how little time I can devote to it each week.

(2015-01-24, 20:24)MrNice Wrote: Did you contact developers to ask if they agree to add your development in the main build?
I use Openelec on RPi and I am not so good to compile etc... it's why I'd prefer the integration.

I haven't contacted the developers; and I will want their feedback as I move forward. But I've already resolved to build it whether they like it or not. Not that I'm anticipating any rejection on their part. I'm just no depending on their acceptance.

(2015-01-24, 20:24)MrNice Wrote: BTW, I have more and more music in HD and multichannel. I didn't see any way to differentiate from 16/44.1. Do you have this kind of music? How do you manage it? Is there a request for this?

I don't have any HD and multichannel stuff. I might some day; but not any time soon. So I don't know how to differentiate it from lower fidelity stuff.
Reply
#6
(2015-01-07, 01:09)jrgsch Wrote: I would agree with your approach. Organization of classical music should be build around "Work". But - I do not know a predefined tag for that. No issue with composer, conductor, ensemble. For the movements of a work I currently use the title tag.

I wasn't really planning to depend on tags for "Work". I'm willing to depend on online databases more. So, all I'd need is a tag identifying the recording with one or more online databases. Then I can just go to them for the additional relationships. In the end, however, whether it be through scrapers getting stuff from online databases; or from tags in files; or from local data files (e.g. NFO files); it will all go into the Kodi database.

(2015-01-07, 01:09)jrgsch Wrote: I would propose to split the implementation in XBMC in to two parts. In a first step let's assume, that music files already tagged and no scraping of external source is needed. In my example I have a (large) Excel file with all the information (work, titles of parts, album, artists, composer, ensembles, conductor) and some macros which allow me to tag the files. In a second step the job of tagging could be done by scrapers included in XBMC. But my experience with automatic tagging by scrapers is so "la la". If you want to have a level of consistency good enough for database based management of music collection very often needs to correct/adapt things manually (it's valid not only for classical music ...) So, as you said - I'm working to have my collection tagged accurate too - even if today there is no player presenting me tags like "composer" (I found earlier one commercial product but did not follow).

I currently use MyMovies to manage my movie collection. I understand that a scraper exists to take the MyMovies data and import it into Kodi. But I haven't investigated it yet. I still use Windows Media Center for that. It isn't broken, and has all the features my family wants. So I'm reluctant to change things with that. Yet. I'll get to it some day. I bring it up because MyMovies has a local database, an online database, and various tools for working with things. I like how MyMovies has a separate application for managing their collection (i.e. their database). The Windows Media Center application can do some of that too - but it focuses on playing movies. Not managing the collection. A 10 foot interface doesn't lend itself to the detailed and dense interface that a media collection management application needs. So, I'm thinking of shifting to using MySQL with Kodi, and building an application that works with the database directly; rather than depend on Scrapers.

For composer, I don't make that a priority since there are numerous tagging utilities that can add Composer as an Artist in the Artist tag. I find that an acceptable work around, at least relative to other features I'd like. I also want improved artwork, including booklet browsing. So, the features I'd like to implement are as follows - in order of how I'd like to implement them:

  1. Update the schema to include Works and enhanced Artwork information. I'll manually edit the database to include Works data.
  2. Enhance the information screens to display Works.
  3. Create Works/Album/Track browsing hierarchy
  4. Build Kodi collection management application (rudimentary)
  5. Add "Booklet" browser

(2015-01-07, 01:09)jrgsch Wrote: Do you think about new menu item "Classic music" or do you prefer to implement it under the item "music" ? For me a separate item seems to be a better solution.

I prefer to put it under Music/Library. For the main menu, I'd prefer a generic approach to adding things to it that could include "Classical Music" among many others. Basically, it would be a shortcut to "Music/Library/Works". But that's not on my development list.

(2015-01-07, 01:09)jrgsch Wrote: Which file type you use ? My files stored in "flac"-format.
I use flac as well.

(2015-01-07, 01:09)jrgsch Wrote: Will it be the target to deliver at the end (whenever it will happen) a patch to the XBMC core team which they accept and merge with the XBMC release ?

I do plan to be a good OpenSource citizen and try to follow all their rules and guidelines so that my patch (or pull request), will be acceptable to the core developers.

(2015-01-07, 01:09)jrgsch Wrote: My programming experience is also about 30 years, but more for real time an embedded systems. However, I have some experience with MySQL, JavaScript, PHP too. I say this for better understanding, not because I think I can enter in direct programming of XBMC. But I'm ready to participate in discussion and testing.

Your experience will help tremendously, I expect. But, frankly, I'm mostly interested in your feedback and testing. I'm thrilled to hear from other Classical Music lovers who use Kodi. This is going to take me a while to implement. My biggest weakness is my lack of time. But I'm tired of just getting by; so I'll implement it - even if it takes me a year of weekend work to do.
Reply
#7
(2015-01-07, 17:35)zag Wrote: Not particularly interested in classical music but I'm a data nut so this catches my interest.

I'd be interested in how MusicBrainz currently handles it.

It's fairly straight forward. Their schema around works is something like the following.

There are Releases - which are the publication of Music in some form and in some media format. It is composed of Tracks and many other attributes.
A Release has an ordered set of Tracks.
Tracks are an instance of a Recording. A Recording may have many instances on many different releases (think of remixes, re-releases, compilation albums, etc.)
Recordings are an instantiation of a Work. A Work may have many Recordings.
Works can be derived from other Works. (Arrangements, Music+Lyrics sometimes = new work, etc.)
Works can also have special works called Parts (Classical music movements. Both the movement, and the overall work are WORKS).

Artists have relationships to all of these in different ways.

(2015-01-07, 17:35)zag Wrote: In terms of development, I'd start simple. Changing the structure of the music db is very hard, but adding a new field maybe possible or indeed something like extra music tags.

I really don't see the DB additions as being difficult. Particularly since I think I'll be adding tables, more than changing existing ones. That should be fairly straight forward to do.

(2015-01-07, 17:35)zag Wrote: I've already been pushing for things like mood and style to be implemented in the Audio Nodes.

I'm not particularly interested in mood or style. Particularly since it seems that for every 2 people there are at least 3 opinions on what the list of moods and styles should be; not to mention what Mood or Style any one recording should be.

However, it seems that a generic Music Browsing feature would be possible. The idea is that you have a finite set of categories: Mood, Style, Artist, Work, Album, etc. Users would be able to specify their hierarchy. The hierarchy could be of arbitrary depth. So, you could have "Mood", "Artist", "Album". When you open up the top level node; it will list all the Mood's you have at least some music for. When you select one those Moods (say Mood = "A"), it will list all the "Artists" that have at least one track with Mood = "A". Then when you select one of those artists (say Artist = "B"), it would show you all the Albums where there is at least one track with Mood = "A" and Artist = "B". Then you can select an Album (Album = "C"), and it will list all the tracks where Mood = "A", Artist = "B", and Album = "C". Fairly easy from a database query perspective.

(2015-01-07, 17:35)zag Wrote: Also since I run one of the metadata sites I would be very interested in any improvements you think would help on that side of things. Check out this entry for Mozart, its already a bit messy!

Wolfgang Amadeus Mozart
http://www.theaudiodb.com/artist/114327

Maintaining these databases is hard work, that's for sure. I like the look of your site; and I like the details you have on artists. I particularly like the metric for data completeness.
Reply
#8
(2015-01-24, 21:49)dukeja Wrote: For composer, I don't make that a priority since there are numerous tagging utilities that can add Composer as an Artist in the Artist tag. I find that an acceptable work around, at least relative to other features I'd like.
Could you tell me what are these work around and what you use. Today, this is my main concern.
BTW, I use Linux on my computers and Openelec on Raspberry Pi.
Config, audio player only:
2T HDD <USB> RPi2/Kodi <HDMI> Denon AVR-2313 <HDMI> LG TV 55UF860V
Reply
#9
(2015-01-25, 11:55)MrNice Wrote:
(2015-01-24, 21:49)dukeja Wrote: For composer, I don't make that a priority since there are numerous tagging utilities that can add Composer as an Artist in the Artist tag. I find that an acceptable work around, at least relative to other features I'd like.
Could you tell me what are these work around and what you use. Today, this is my main concern.
BTW, I use Linux on my computers and Openelec on Raspberry Pi.

I use MusicBrainz Picard which gives you a great deal of power and flexibility in how you tag your files. It can even reorganize your music files/file-folder scheme for you. There is a bit of a learning curve to learn how to use it. At least I found it somewhat counterintuitive. Now, having said all the above about composer; it does mix the composers in with all the other Artists. If you just want to see composers - then this would be harder. I think Picard can still handle that situation; but I'm not certain.

So, in other words; I don't use the Composer tag at all. I put composers in with the other artists such as the conductor, orchestra, soloists and so on.
Reply
#10
In fact the issue is not how to record the composer/Conductor/Ensemble tags as they are in the vorbis fields Ogg/Vorbis (I use linux easytag and there is a box for composer) but that Kodi doesn't use it, even doesn't have the field in the database.
I learned that only few days ago... and I don't understand why nobody even think to add these fields in the database.

I noticed in the above link, there is no "WORK" tag but the work name is in "TITLE".
I had a quick look on Internet, a lot of people are working on it, it could be wise to find the entity/association database design. Database implementation should be easy with your knowledge. As I said above the hard/long part is to code Kodi to use it.

Meanwhile, I'll do the way I did so far: folder list.
Config, audio player only:
2T HDD <USB> RPi2/Kodi <HDMI> Denon AVR-2313 <HDMI> LG TV 55UF860V
Reply
#11
Just to add info:

I found out that Kodi doesn't read multiple tag with the same name.
With bash:
Code:
echo ($(metaflac --show-tag=TITLE "${trackname}"))
For example I have 3 files tagged like that
Code:
TITLE=Concerto for Violin in G major, RV 307 TITLE=I. Allegro molto
TITLE=Concerto for Violin in G major, RV 307 TITLE=II. Adagio
TITLE=Concerto for Violin in G major, RV 307 TITLE=III. Allegro
Files have 2 TITLE areas: EasyTAG (Linux) concatenates the 2 with a dash between, as Kodi read only the first one.
Config, audio player only:
2T HDD <USB> RPi2/Kodi <HDMI> Denon AVR-2313 <HDMI> LG TV 55UF860V
Reply
#12
I think this issue could be addressed more generally by creating a framework of allowing the use of custom tags within Kodi. I usually listen to my audio with Foobar2000 and have created several custom tags for the various kinds of music I listen to.

My ideal would be to have a similar type of approach to the 'facets' plugin for Foobar:
Image

Here you can add or remove columns as needed and include which tags you want displayed at the column and and item level. By way of example my two main methods of navigating my music library:
Image

Image

Following the above approach, there should be scope to display your classical music in a way that works for you (provided you have sufficiently manicured your music collection tags).

I've touched on my thoughts about how kodi's music library is a little lacklustre in previous posts before. It really would be great to see this area get a little more love.
Reply
#13
Just out of interest what tags would you like to be read in Kodi for classical music?

Here are a list of available extended tags:

Image
Reply
#14
Sorry to dig up this thread but it seems still "work in process"

Ant news?
Config, audio player only:
2T HDD <USB> RPi2/Kodi <HDMI> Denon AVR-2313 <HDMI> LG TV 55UF860V
Reply
#15
Hi,

I'm not a classical music's aficionados, but this resquest sound great for me.

I can't help you in anyway, but will love it. Classical music can't be handled just like other kind of music...

A+

Big
Reply
 
Thread Rating:
  • 0 Vote(s) - 0 Average



Logout Mark Read Team Forum Stats Members Help
Improved Classical Music Browsing00