Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 2 12 LastLast
Results 1 to 10 of 241

Hybrid View

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

    Multi Library support in LMS 7.9

    A little heads-up to you brave beta testers: I'm going to merge a major change which will add infrastructure for multi library support to LMS 7.9. See this thread for some of the discussion.

    What is it?

    • "Virtual Libraries" (or filtered views on your library) will be available from the My Music menu item. Once you select such a library, you'll have a filtered view on your collection. This means you could eg. have only Kids music in the kid's room Radio, and none of that stuff on your Transporter, or have FLAC files listed only.
    • Plugins can register their own virtual libraries. They'll have to implement a scanner module to provide the necessary data to the browse modes. This can be as simple as an SQL statement running after the main scan. There's a LibraryDemo plugin which shows developers how it can be done.
    • Plugins can register custom menu items based on a virtual library. This would allow you to get a very specific view on your collection without having to switch to a filtered view for the remainder of the menus. The LibraryDemo does this to add a few items dealing with long tracks.


    Some caveats:

    • After you update your LMS 7.9 to the latest and greatest LMS will automatically run a wipe & rescan, as the DB schema has changed.
    • LMS only provides the infrastructure to achieve all of this. Plus a LibraryDemo plugin which shows a few possibilities. It's up to 3rd parties to make this a rally great feature.
    • The LibraryDemo plugin is disabled by default. If you want to test these new features you'll have to to enable it and re-run a scan.
    • 3rd party plugins dealing with the music library will require work to support filtered views (eg. SmartMix ;-))
    • RandomPlay needs some good testing. I did update it to support virtual libraries. But this required more changes than I expected.
    • This is still work in progress. The most important changes should be done already. But I'm sure I've forgotten many of the small details. A lot of code in the area of library browsing has changed. Please test, test, test, and report any issues you're seeing.
    • Bit OUCH!: most smartphone apps aren't ready for the filtered view yet (custom filter menu items should work). In some cases it'll require serious work by the developer, in other cases it might be a simple caching problem. Please get in touch with me if you are a developer. We'll figure this out.
    Michael

    http://www.herger.net/slim-plugins - Spotty, MusicArtistInfo

  2. #2
    Senior Member pippin's Avatar
    Join Date
    Oct 2007
    Location
    Berlin
    Posts
    14,668
    One thing I don't understand and which is currently between me and a good iPeng support for this: how is the usage model for this supposed to look like?

    If you think purely player-centric as in SqueezePlay I can kind of get it but the Squeezebox system, after all, is also a multiroom system so you need some way to handle that.

    How is this supposed to look like? Is this like different servers all with their respective players?
    How do I know which player belongs to which virtual server?
    Is there a way to learn about these assignments?
    How do I switch players between them?
    What about MySB?

    At least in iPeng, all main menus are NOT player-specific (the caching effort for people with lots of players and/or large libraries would probably be prohibitive) so to get this usable we need some kind of user model of how this whole thing is supposed to work.
    ---
    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
    Senior Member
    Join Date
    Aug 2012
    Location
    Austria
    Posts
    936
    Does this result in any
    - CLI/JSON API changes
    - server API changes (e.g. in Slim::Schema)
    ?
    Various SW: Web Interface | Playlist Editor / Generator | Music Classification | Similar Music | Announce | EventTrigger | LMSlib2go | ...
    Various HowTos: build a self-contained LMS | Bluetooth/ALSA | Control LMS with any device | ...

  4. #4
    Senior Member pippin's Avatar
    Join Date
    Oct 2007
    Location
    Berlin
    Posts
    14,668
    Hm, how do I enable this? I pulled the latest 7.9 changes and the commit message says it includes the "LibraryDemo" plugin but I can't see it anywhere? Am I missing something?
    ---
    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

  5. #5
    Senior Member pippin's Avatar
    Join Date
    Oct 2007
    Location
    Berlin
    Posts
    14,668
    OK, the plugin works although it's shown nowhere in the plugin list....
    Whenever the server is finished looking up artwork, I'll look into it some more.
    Has there been some change to the image lookup (albums and artists)? Each image seems to take like 10s or so for me and since I seem to have 1.200 artists (with a test library of only 5000 tracks) this can take a while.
    Is there something broken with artists/albums/whatever counts or the scanner?

    OK, this is probably OT here, will report back when I looked at how the plugin works.
    ---
    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

  6. #6
    Senior Member get.amped's Avatar
    Join Date
    Feb 2007
    Location
    Upstate NY
    Posts
    788
    Will this potentially be a way to circumvent the 100K track limitation with the Smart Mix plugin? Seems like I should be able to create a filtered library that would contain most of the "good" stuff based on bitrate, genre, year range, etc.
    Home: Win7Pro(x64)[3.3Ghz i5, 8GB RAM, 120GB SSD system, 15TB storage], LMS 7.9.0 -> Logitech Squeezebox Classic V.3 -> Cambridge Audio DacMagic -> NAD C160 -> 2 x NAD C272 -> Quad 22L2
    Portable: FreeNAS 9.3 [HP Microserver Gen8, 10GB RAM, 16GB flash boot, 120GB SSD for LMS 7.9.0 in FreeBSD jail, 5 x 4TB WD Red HD ZFS RAIDZ1] -> Logitech Squeezebox Classic V.3 -> Cambridge Audio DacMagic: XLR out -> Soundmaster Diamond 12-2 mixing board -> P.A.

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

    Multi Library support in LMS 7.9

    > Does this result in any
    > - CLI/JSON API changes


    Yes: the artists/genres/albums/titles queries now accept a library_id parameter to limit results to one library view. But no major changes. I should probably add CLI commands to deal with library definitions etc. But that's not there yet.

    I'll have to double-check whether I've updated the documentation appropriately. I thought I did. But then it's been a long day...

    > - server API changes (e.g. in Slim::Schema)


    There's a new relation from Tracks to LibraryTracks, which eg. is being used in the RandomPlay plugin. And there was code added in many places to handle with a library_id player pref.


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

    Multi Library support in LMS 7.9

    > One thing I don't understand and which is currently between me and a
    > good iPeng support for this: how is the usage model for this supposed to
    > look like?


    The most important part causing confusion seems to be what that change
    provides: as Erland suggested in the other thread there's no real UI to
    this yet (except for the LibraryDemo implementation which I mostly did
    to verify my changes). It's an infrastructure to allow filtered views on
    a library.

    The title might be slightly misleading. I could have called it "Virtual
    Library" or "Filtered Library View" instead.

    BUT it's up to a plugin developer to a.) create the filter and b.)
    define how it's being used.

    If the plugin dev does care about b.) then he can provide his own menu
    item, without changing the behaviour of the existing menus. Imagine eg.
    an Audiobook plugin which registered a custom menu to specifically
    browse your audiobooks only by Author, Title etc. This mode already
    should work with iPeng etc. the very same way as existing extensions
    work (eg. SmartMix).

    In the simplest case the dev doesn't care about b.) though. In this case
    LMS would provide a "Select Library View" menu item in My Music. When
    the user selects one of those views, then a player pref is set with a
    library_id. S::M::BrowseLibrary will use that library_id to provide the
    existing My Music browse modes, but limited to that particular virtual
    library.

    This case will cause problems with iPeng et al. if they're not using
    S::M::BrowseLibrary. They'll have to take care of requesting data with
    the library_id on their own. Adding the library_id to the player status
    might be one solution to let you know about it.

    > If you think purely player-centric as in SqueezePlay I can kind of get
    > it but the Squeezebox system, after all, is also a multiroom system so
    > you need some way to handle that.


    This change is mostly about accessing your library. If you have eg.
    synchronized players and you select a filtered view on player one, then
    player two would still provide the full browsing, but would play
    whatever you chose on player one. Or you could play anything on player
    two by controlling it through player one. It's really only (mostly) the
    view on your collection while browsing it which changes.

    > How is this supposed to look like? Is this like different servers all
    > with their respective players?


    No. It's a filtered view on your one server.

    > How do I know which player belongs to which virtual server?


    All players are still connected to the same player. But potentially
    using a different view on your players.

    > Is there a way to learn about these assignments?


    Limited at this point: you can always use the player's pref query to get
    the library_id value. But other than that I'm planning to provide CLI
    support to get the list of libraries available, and as you suggested,
    add the library_id to the player status.

    > How do I switch players between them?


    You don't have to switch players. You have to tell LMS by what
    library_id you want your artists/albums etc. filtered. eg.

    artists 0 200 library_id:abcde

    > What about MySB?


    Has nothing to do with this.

    > At least in iPeng, all main menus are NOT player-specific (the caching
    > effort for people with lots of players and/or large libraries would
    > probably be prohibitive) so to get this usable we need some kind of user
    > model of how this whole thing is supposed to work.


    I don't know how plugin developers/users are going to use this feature.
    Eg. how many different libraries there will be for a user. I would not
    cache by player, but by library. Most users probably will never use more
    than one library at any time. They'll probably use custom menu items
    (Audiobooks), but not fully filtered views on their library. And if they
    did, they probably use two or three (eg. Kids music, lossless library,
    no DSD on Classic etc.).

    As a 3rd party developer I consider using this for SmartMix: users can
    define what part of their music should be mixed. But they'd probably
    never use this library view to browse their music.

    --

    Michael

  9. #9
    Senior Member JJZolx's Avatar
    Join Date
    Apr 2005
    Location
    Colorado
    Posts
    11,531
    Quote Originally Posted by mherger View Post
    The LibraryDemo plugin is disabled by default. If you want to test these new features you'll have to to enable it and re-run a scan.
    Are you sure it's disabled by default? It's active on my server and I never enabled it.

    Why the need for a rescan?

    It's not clear to me how the filtering is supposed to work. Using the web UI, I browse into 'Albums with outros and other longish tracks', select an album and I see only the long tracks. But if I press the album play or queue buttons at the top, it queues all tracks from the album. This seems to be dependent on the library view chosen. In this case it's still set at 'All Library'. I see that if set to 'Longish tracks only' then it works more like I would expect.

    I don't quite see the purpose of the library view. Explain how this setting might be used.

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

    Multi Library support in LMS 7.9

    >> The LibraryDemo plugin is disabled by default. If you want to test these
    >> new features you'll have to to enable it and re-run a scan.

    >
    > Are you sure it's disabled by default? It's active on my server and I
    > never enabled it.
    >
    > Why the need for a rescan?


    Yep, I changed my mind last minute. In order to get this tested I
    enabled it by default.

    > It's not clear to me how the filtering is supposed to work. Using the
    > web UI, I browse into 'Albums with outros and other longish tracks',
    > select an album and I see only the long tracks. But if I press the album
    > play or queue buttons at the top, it queues all tracks from the album.


    Then there's a bug. Thanks for the heads up!

    > I don't quite see the purpose of the library view. Explain how this
    > setting might be used.


    I don't want kids music in my office. Therefore I'll use the "no kids
    music" view as the default.

    --

    Michael

Posting Permissions

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