Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 6 123 ... LastLast
Results 1 to 10 of 53
  1. #1
    Senior Member erland's Avatar
    Join Date
    Dec 2005
    Location
    Sweden
    Posts
    11,039

    Separate music library based on type of content (audiobook, classical, child) ?

    I'm breaking out this discussion from the "separate browse menus from album artists in 7.8.1" thread because it feels like this needs more discussion but it's really a separate topic from the album artist needs.

    I'll start with some quotes from the other thread:
    Quote Originally Posted by pippin View Post
    Of you go to such length to make artist menus configurable, could we do a similar thing for albums vs. genres?

    One of the big, big nuisances of LMS for me has always been that you can't cleanly separate audiobooks from the rest of your music library.
    Audiobooks make about half of my library (counting tracks, not albums) so it's significant.

    I'm currently able to solve it through CustomBrowse by having an audiobooks menu based on audiobook genres and a music albums menu based on EXCLUDING the audiobook genres.
    Now, if LMS had something like this (plus maybe better podcast support) we could maybe longer term also tackle the wider issue of playback UI support for these content types.
    I IMHO the easiest solution would be to introduce a content flag "spoken" (or something like that) that gets assigned through either a list of genres OR a special folder.
    Tracks/Albums could then also get a different UI during playback, something really missing from SB.
    Quote Originally Posted by pippin View Post
    One thing (and then I'm going to shut up on audiobooks): the genre would have to be more than one but a list to be useful.
    Quote Originally Posted by mherger View Post
    > One thing (and then I'm going to shut up on audiobooks):

    Good :-)

    > the genre would
    > have to be more than one but a list to be useful.


    Unfortunately this is unlikely to happen, as afaik all the existing code
    dealing with queries on albums etc. only can handle one single
    album_id/contributor_id/genre_id. It would require a lot of work with a
    lot of potential to break existing functionality to make this happen. Or
    slow multiple queries etc.

    What genres would you be using then? Something like "audiobooks -
    English", "audiobooks - German"? And would would you like to see on the
    next level anyway: artists or albums?
    Quote Originally Posted by pippin View Post
    Well, the problem is audiobooks come pre-tagged and sometimes the use speech, sometimes books&spoken, sometimes something localized, then there are podcasts... I think I currently use like 5 or 6 genres although the ones I tag myself all use only one.
    Now, the issue here is that audiobooks is just one example, other are:
    - People want to browse classical music separate form pop/rock music because the characteristics on classical music is completely different. For pop/rock it's usually the artist that released the album that's most interesting while for classical the composer, conductor, work is often at least as interesting as the soloist who might be the album artist.
    - People want to browse child music separate because they don't want the childs to listen to grown-up music and they don't want child music to be part of their own browsing experience
    - People don't want to mix-up audiobooks in the main library when browsing
    - People don't want to mix-up podcasts in the main library when browsing
    - People want to browse lossy and lossless music separately

    The way you define the different groups of music is also different:
    - Some people use separate music folders in LMS Settings
    - Other people use genres
    - Other people want to separate a certain sub directory under a music folder
    - Other people want to separate based on quality (bitrate or lossless flag)

    The list can be made long and there is no way to know all combinations in advance.

    My suggestion if we really want to do something about this is to introduce a concept of a virtual libraries in LMS. This is basically what's done in the Multi Library plugin but the problem with having the whole concept in the plugin is that none of the standard browse menus or user interfaces works with it.

    Now, if we would introduce a library concept in the core and add ability to filter all queries by "library_id" (which should be reasonably simple), we can hand of the actual library definition (which can be very complex) to plugins. Possibly some simple library definitions could be included in the core but it's important that it's possible to add more complex ones as plugins since we want to make a solution where third party developers can enhance this to suit all special cases.

    The advantage of creating a library concept is that the modifications to the core is relatively simple:
    - All browse queries in Slim::Control::Queries needs to be able to take a library_id parameter
    - Possibly we could do something in Slim::Menu::BrowseLibrary that creates menus based on the library but I believe we can even hand that job to third party plugins if needed.
    - The scanner would have to have a hock during scanning where it can ask a library definition (provided through a plugin) if a certain Slim::Schema::Track object matches the library criteria and if it does it would add it to the necessary tables.
    - In the database we would as a minimum need to have:
    -- A new "libraries" table that contain the library identity and name and which plugin that provides the logic behind it
    -- A new "library_track" table that maps a track to one or several libraries
    -- Possibly a new "library_album" table that maps an album to one or several libraries, but this would only be needed for performance optimisation, so we can leave it out as a start
    -- Possibly a new "library_contributor" table that maps a contributor to one or several libraries, but this would only be needed for performance optimisation, so we can leave it out as a start

    Any thoughts ?
    Erland Isaksson (My homepage)
    Developer of many plugins/applets

  2. #2
    Senior Member pippin's Avatar
    Join Date
    Oct 2007
    Location
    Berlin
    Posts
    14,669
    Erland,

    Thanks for the thread. It's too early in the morning for me to reflect on this for classical music/composers etc. there is one additional aspect for audiobooks and podcasts:
    I believe it's not enough to just separate the libraries. You also want to handle an audiobook track or podcast differently while playing so there needs to be a way to identify something as "text" during playback.
    The reason is that to really support this you'd want some different UI behavior. You don't want to restart a podcast at the beginning of the track when you return to it. You want to restart an audiobook at a certain track. You probably rather want to go back a certain amount of time instead of just skipping a track back and so on.
    ---
    learn more about iPeng, the iPhone and iPad remote for the Squeezebox and
    Logitech UE Smart Radio as well as iPeng Party, the free Party-App,
    at penguinlovesmusic.com
    New: iPeng 9, the Universal App for iPhone, iPad and Apple Watch

  3. #3
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,324

    Separate music library based on type of content(audiobook, classical, child) ?

    > I believe it's not enough to just separate the libraries. You also want
    > to handle an audiobook track or podcast differently while playing so
    > there needs to be a way to identify something as "text" during playback.
    > The reason is that to really support this you'd want some different UI
    > behavior. You don't want to restart a podcast at the beginning of the
    > track when you return to it. You want to restart an audiobook at a
    > certain track. You probably rather want to go back a certain amount of
    > time instead of just skipping a track back and so on.


    I tried to implement some kind of "resume from where you left" feature
    in the 7.8 podcast implementation. But it would only work on podcasts
    accessed through that plugin, and only if the length of the podcast was
    known in advance (which is not the case for certain formats). We could
    probably extend on that mechanism. Are you using the podcast plugin, too?

    --

    Michael

  4. #4
    jvromans@squirrel.nl
    Guest

    Separate music library based on type of content(audiobook, classical, child) ?

    erland <erland.6ejykn (AT) no-mx (DOT) forums.slimdevices.com> writes:

    > I'm breaking out this discussion from the "separate browse menus from
    > album artists in 7.8.1" thread because it feels like this needs more
    > discussion but it's really a separate topic from the album artist
    > needs.


    Thank you. This is very interesting material.

    > My suggestion if we really want to do something about this is to
    > introduce a concept of a virtual libraries in LMS.


    That would be a great fature!

    > Now, if we would introduce a library concept in the core and add
    > ability to filter all queries by "library_id" (which should be
    > reasonably simple), we can hand of the actual library definition
    > (which can be very complex) to plugins.


    If you pass the library_id to the player routines it may be possible to
    apply different play strategies on different vlibs.

    For example, my music collection is normalized for volume. So when I
    play a radio station or streaming music (Spotify!) it comes out much
    louder. A correction could be applied if I put the latter sources in a
    separate virtual library.

    Would it be possible to use user-defined views on the database? That
    would simplify it a lot.

    Please keep up the good work!

    -- Johan

  5. #5
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,324

    Separate music library based on type of content(audiobook, classical, child) ?

    > For example, my music collection is normalized for volume. So when I
    > play a radio station or streaming music (Spotify!) it comes out much
    > louder.


    Totall off-topic. But you know that there's a volume correction setting
    for online sources in 7.8?

    --

    Michael

  6. #6
    Senior Member erland's Avatar
    Join Date
    Dec 2005
    Location
    Sweden
    Posts
    11,039
    Quote Originally Posted by jvromans@squirrel.nl View Post
    If you pass the library_id to the player routines it may be possible to
    apply different play strategies on different vlibs.

    For example, my music collection is normalized for volume. So when I
    play a radio station or streaming music (Spotify!) it comes out much
    louder. A correction could be applied if I put the latter sources in a
    separate virtual library.
    I suspect virtual libraries would have to be limited to your local music collection, else it's going to be too complex, but generally I feel that a concept on virtual libraries could be used in many places for many different purposes, it's not just limited to browsing. If you extract the library definitions to plugins, it also means that we don't have to add a lot of extra complexity to the core to support it, the advanced stuff would be the library definition which are implemented in plugins.

    Quote Originally Posted by jvromans@squirrel.nl View Post
    Would it be possible to use user-defined views on the database? That
    would simplify it a lot.
    I'm not sure what you mean with this but if you are talking about customising the database structure and not just adding some generic library relation tables, I think it's too ambitions and it will affect the core of LMS too much to be realistic to implement. In my opinion we need to find a way to implement this which requires minimal changes to the core but allows plugins to enhance it with more complex scenarios.

    There was some work some years ago with the idea to create user defined schemas in the database but it was abandoned, probably because it got too complex:
    http://wiki.slimdevices.com/index.php/NewSchema
    Erland Isaksson (My homepage)
    Developer of many plugins/applets

  7. #7
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,324

    Separate music library based on type of content(audiobook, classical, child) ?

    > My suggestion if we really want to do something about this is to
    > introduce a concept of a virtual libraries in LMS.


    Thanks a lot for your insight into this topic. But I think this goes way
    beyond what Pippin initially wanted.

    In the other thread you commented on the web UI in my prototype
    implementation:

    > I'm not sure you need the "filter by genre" if you add the virtual
    > library concept, so don't spend much time on that part right now. I
    > think it's a good idea to wait with doing much regarding both genre
    > and library filtering until the contributor role/VA issues issues
    > have been solved.


    I think we are talking about two different use cases - and both of them
    are valid ideas. I personally would not want to care about multiple
    virtual libraries. Yet I would like to have a "Kids albums" menu item.
    As much as others would probably be happy with an additional "Classical
    by Conductor" (or whatever). Just one or two additional menu items as
    shortcuts to what they would often want.

    Your concept of virtual libraries sounds great, and I definitely see
    that I might make use of them in the future (today there are a bunch of
    kids albums, but as kids grow there might be more and more music I
    wouldn't want to share with them). The problem I'm having with this plan
    is the amount of work and risk of breaking things. There's more involved
    than just adding a column and provide some hooks to fill it in (which I
    think would already be there - not sure though). But there would be
    conceptual and UI work as well: how does the user select the library?
    How does he define them? Can a track be in more than one library? etc.
    And there simply isn't much coding man-power around nowadays.

    I'd rather go with some additional menus to start with, and get back to
    virtual libraries once we have that done reasonably. I think the two
    ideas complement each other.

    --

    Michael

  8. #8
    Senior Member erland's Avatar
    Join Date
    Dec 2005
    Location
    Sweden
    Posts
    11,039
    Quote Originally Posted by mherger View Post
    I'd rather go with some additional menus to start with, and get back to
    virtual libraries once we have that done reasonably. I think the two
    ideas complement each other.
    No problems, I can accept that.

    I still feel that you will end up solving a very specific case which affects few users instead of implementing a generic solution which could be enhanced a lot by third party plugins without you needing to do much. Remember that even to solve the audio book specific case, some people are going to want to identify audio books by checking them towards a list of genres and some are going to want to identify them by looking in a certain music folder and some are going to want the audiobooks to disappear from the standard browse menus. So there is a bit risk your specific case might turn out to be fairly complex.

    If we are ONLY talking about making it possible to limit a customised menu to one and only one genre_id, that's of course easy because for that everything is already in place in Slim::Controls::Queries, but I suspect you are going to end up having to do a lot more than that before you have solved the audiobook usage scenario.

    Quote Originally Posted by mherger View Post
    How does the user select the library?
    As a start, it can be used just as a backend to be able to define menus with your plugin in a more flexible way, no reason to select library anywhere.
    However, it might be a good idea to enhance the Random Mix plugin so you can select which libraries that should be included in a random mix.

    Quote Originally Posted by mherger View Post
    How does he define them?
    You could leave this to an external plugin. But if you want to do something in the core I would suggest making it possible to define a library by:
    - Specifying a music folder which should be included
    - Specifying a genre or list of genres which should be included
    Both these should be extremely easy to implement.

    Quote Originally Posted by mherger View Post
    Can a track be in more than one library?
    Yes definitely, that's why you can't just add a "library" column to the tracks table, you will need a "library_track" table and "libraries" table which can map a track to none, one or multiple libraries.


    Just to be clear, I'm mainly looking for a way to:
    - Limit queries in Slim::Controls::Queries by a library_id
    - Some new entity classes in Slim::Schema (at least one for Library which represents the library itself (libraries) and the relation to tracks (library_track)
    - The scanner to make a call to a registered "library definition plugin" to check which libraries it should add the track to

    You don't even have to do any user interfaces if you don't like to, it's just that doing all this from outside means that the plugin developer have to re-implement everything in Slim::Controls::Queries (just because I want to be able to filter album, artists, tracks by a library_id). If you want to offer something more you can include an option in your new browse plugin that makes it possible to specify which library to limit a menu to.

    I'm probably missing something obvious but to me this really seems fairly sandboxed and not something that risks breaking a lot of other things.
    Erland Isaksson (My homepage)
    Developer of many plugins/applets

  9. #9
    Senior Member pippin's Avatar
    Join Date
    Oct 2007
    Location
    Berlin
    Posts
    14,669
    @Michael

    No, I rarely use the podcasts plugin, for me it's primarily audiobooks. But with audiobooks you have the same thing: when you play music between listening the book you want to return to where you left off and usually that means you'd have to remember both the track in the book (album) and the position within the track because some audiobooks are composed of like 100 short tracks and some of like 15 very long ones....

    Looking at it from the iPeng development perspective I'd primarily want to know that what's currently playing is an audiobook or a podcast so that I can create an own UI although I thing the whole restart logic would be better placed on the server side because then it still works if you use different UIs.
    ---
    learn more about iPeng, the iPhone and iPad remote for the Squeezebox and
    Logitech UE Smart Radio as well as iPeng Party, the free Party-App,
    at penguinlovesmusic.com
    New: iPeng 9, the Universal App for iPhone, iPad and Apple Watch

  10. #10
    Senior Member
    Join Date
    Jul 2005
    Location
    Florida, USA
    Posts
    359
    Interesting discussion. For me it's not so much audiobooks, but a large collection of old time radio shows.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •