Announcement

Collapse
No announcement yet.

ANNOUNCE: Group Players

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • ANNOUNCE: Group Players

    Here is a plugin which adds a new type of players to LMS: Group Players

    A Group Player is a new player that you can create using the plugin settings. Each Group Player represents an arbitrary set of real SB players and you can create as many Group Players as you want

    They will appear in LMS like any other "real" player but as soon as you start to play on a Group Player, all the real players (the "members") will be assembled in a synchronization group and will play together.

    When a Group Player is stopped or paused, the group is immediately disassembled. It's really on-the-fly LMS group creation. Of course, a real SB Player can be member of multiple groups, there is no limitation in combinations.

    For example, you can have a Group Player named ‘Master Bedroom’ made of a SB and a Duet, a Group Player named ‘1st Floor’ that contains these two plus a Boom and a last Group Player named ‘Whole House’ which adds another Boom and a duet.

    You can also think about "scenes" where a Group Player is more dedicated to a type of usage, rather than to a topology of players. For example when you listen to Podcasts, you might want a certain set of SB to play across the whole house, but not all of them, then just create another Group Player named "Podcast"

    Starting with version 0.6.1, it's possible to manually synchronize a "real" player with a Group Player. It's an option which is disabled by default as it can be a bit confusing. Such extra player is not part of the group, for example it's volume remains independant. It should be used for temporary additions to a Group, but if such extra player should always be a member, then add it in the Settings

    Version 0.6.1 adds as well some compatibility with playlist transfer plugin like Music Walk With Me or iPeng player's transfers. It's not as smooth as between players, though. It is not compatible with Triode's Switch Player plugin, but I've created a version 0.4 that adds compatibility. It's called "Switch Player (Groups compatible)". You must remove Triode's version first. For iPeng, as of Group Players 0.6.2 and iPeng 9.5.1, you cannot switch a Group Player to one of its members (need to use MWWM of SwitchPlayer plugins) and when you want to switch a Group to another player, *never* use one of the members to start from, always start from the Group Player (master) itself. We'll work with @pippin to improve that

    That's pretty much about it. A Group Player shall be seen by LMS as any other SB player, so - in theory - everything that works with a player should work with a group

    You cannot have nested Group Players - DON’T TRY - there is some protection against that, but it's not fool proof, just DON'T
    The stable version is now part of the 3rd party plugin built-in list, so you should find it in the plugins page. If you want to test the development version (there is not always one on-going), just add the following repository
    Code:
    http://downloads.sourceforge.net/project/lms-plugins-philippe44/dev/repo-sf.xml
    A few more details
    • Volume of a Group Player is the average of the volume of each players. Changes made to the Group Player are applied to each player with the same ratio. To set all member's volume at the same level, just set the Group Player Volume to 0 then set it to the desired volume.
    • The Volume settings of each member only applies when the group is assembled. The values before the "gathering" happened are restored when the group breaks up.
    • Powering on/off the Group Player powers on/off all members. This can be disabled in Settings
    • Initial power state will be restored when the group is broken up
    • Member’s playlists are restored after group is broken up
    • In LMS Settings, Player tab, you can change group memberships & members. You can also create a stereo pair only when two players are assembled as a Group


    More details and special cases:
    • Powering on/off a member has no effect on the Group Player. A powered off member will restart playing when powered back on but only if it was already on when the gathering started
    • When pausing a member, the Group Player stops but the group is *not* broken up and this is the only exception. It is assumed that resume with occur later using one of the members (for example using pause button on Radio or a Boom). Be careful with that, do not try to change playlist
    • When stopping (or clearing playlist) of a member, only that member stops, the rest of the gathering continues without that member. That allows you to start playing something on that player without affecting the other members
    • So if you change the playlist of a member, only that member will be affected. You must change the Group Player if you want all to be affected.
    • When a member is separated from an active Group by playing something different on it, the Group will not re-claim it at next playlist change unless that member is idle.
    • If a member was part of a LMS sync group before the Group Player started, it is re-affected to that group when the gathering is broken up. If that LMS sync group is playing then the ex-member will be powered off (otherwise it would start playing what’s on the group, which could be inconvenient)
      This re-assembly can be disabled (which I prefer)
    • If a member was not connected when a Group Player started to play, it will not join the group whenconnecting. You must pause/resume the Group Player
    • If a member belongs to Group Player A and B and a track is started on B while A was playing, the member moves to B without interrupting the playback on A. Note that when B finished, this Player will NOT be re-affected to A. Now, if a play/resume/playlist change happen on A, then that member will be re-affected to A. Basically, whoever came last wins the member

    Note that synchronization might be off for a fraction of a second when starting to play while the gathering happens

    One very interesting trick: when many players are assembled together using LMS regular synchronization feature, network bandwidth might be badly affected when playing hi-res files. It’s always possible to limit bitrate of players, but limitation will apply even when they play standalone.

    As a Group Player is seen by LMS as yet another player, it is possible to limit its bitrate, in which case LMS will only apply the limitation when all the members play together, but not individually

    And many thanks to Michael for his help, advices and code contributions
    Last edited by philippe_44; 2020-10-03, 22:42.
    LMS 8.2 on Odroid-C4 - SqueezeAMP!, 5xRadio, 5xBoom, 2xDuet, 1xTouch, 1xSB3. Sonos PLAY:3, PLAY:5, Marantz NR1603, Foobar2000, ShairPortW, 2xChromecast Audio, Chromecast v1 and v2, Squeezelite on Pi, Yamaha WX-010, AppleTV 4, Airport Express, GGMM E5, RivaArena 1 & 3

  • #2
    Nice!


    Transcoded from Matt's brain by Tapatalk
    --
    Hardware: 3x Touch, 1x Radio, 2x Receivers, 1 HP Microserver NAS with Debian+LMS 7.9.0
    Music: ~1300 CDs, as 450 GB of 16/44k FLACs. No less than 3x 24/44k albums..

    Comment


    • #3
      This awesome! I was just searching for this! I was about to reply in a previous thread where you said you were thinking about making a plugin an here it is!

      Trying it now!

      Comment


      • #4
        Long shot and prob not possible however thought I'd ask anyways. Is there anyway of Caching the playlists on players before the get drafted to the Group then when they are released back to being on their own then the cached/saved playlist is restored? Just an idea.

        Working great here. I love that they can be synced and then I can play something an individual player in the group. Pretty handy.

        Cheers

        Comment


        • #5
          Great plugin!

          Hi Philippe,

          Thanks very much for this plugin, works great and have been using it all the time over the last couple of weeks!

          Any chance of a new selection in settings that would disable the auto volume settings, so that for example I could
          have the group player set at 100 and then control volume individually on each squeezebox instance without affecting
          the others?

          Thanks again!

          Comment


          • #6
            Originally posted by gegen
            Hi Philippe,

            Thanks very much for this plugin, works great and have been using it all the time over the last couple of weeks!

            Any chance of a new selection in settings that would disable the auto volume settings, so that for example I could
            have the group player set at 100 and then control volume individually on each squeezebox instance without affecting
            the others?

            Thanks again!
            I don't understand what you mean by each squeezebox instance. You can, if you want, change the volume of one player it has no influence on other members. All you see is the volume of the Group Player changing, but that does not impact the others. Only if you touch the Group Player volume does it change all members
            LMS 8.2 on Odroid-C4 - SqueezeAMP!, 5xRadio, 5xBoom, 2xDuet, 1xTouch, 1xSB3. Sonos PLAY:3, PLAY:5, Marantz NR1603, Foobar2000, ShairPortW, 2xChromecast Audio, Chromecast v1 and v2, Squeezelite on Pi, Yamaha WX-010, AppleTV 4, Airport Express, GGMM E5, RivaArena 1 & 3

            Comment


            • #7
              Originally posted by philippe_44
              I don't understand what you mean by each squeezebox instance. You can, if you want, change the volume of one player it has no influence on other members. All you see is the volume of the Group Player changing, but that does not impact the others. Only if you touch the Group Player volume does it change all members
              Thats exactly how mine behaves

              Comment


              • #8
                Originally posted by philippe_44
                I don't understand what you mean by each squeezebox instance. You can, if you want, change the volume of one player it has no influence on other members. All you see is the volume of the Group Player changing, but that does not impact the others. Only if you touch the Group Player volume does it change all members

                Of course you are right......easy to confuse me these days , sorry to have wasted your time.....and thanks for all your work.

                Regards.

                Comment


                • #9
                  Originally posted by Simon_rb
                  Long shot and prob not possible however thought I'd ask anyways. Is there anyway of Caching the playlists on players before the get drafted to the Group then when they are released back to being on their own then the cached/saved playlist is restored? Just an idea.

                  Working great here. I love that they can be synced and then I can play something an individual player in the group. Pretty handy.

                  Cheers
                  Can you try 0.3.0 in the dev repo, it should do the trick
                  LMS 8.2 on Odroid-C4 - SqueezeAMP!, 5xRadio, 5xBoom, 2xDuet, 1xTouch, 1xSB3. Sonos PLAY:3, PLAY:5, Marantz NR1603, Foobar2000, ShairPortW, 2xChromecast Audio, Chromecast v1 and v2, Squeezelite on Pi, Yamaha WX-010, AppleTV 4, Airport Express, GGMM E5, RivaArena 1 & 3

                  Comment


                  • #10
                    Originally posted by philippe_44
                    Can you try 0.3.0 in the dev repo, it should do the trick
                    Works a treat! Top top man. Doesn't appear to restore playlists to players that are sync'd together before they are grabbed by the Group Player. Therefore I will not leave any players sync'd from now on and just rely on the "Groups" to do my syncing.

                    With that said I have a couple more ideas to make it all a bit smoother with my setup (might be useful to others I don't know).

                    1. Is it possible that when you turn on the "Group" player that if a slave player is playing that it grabs that playlist? Reason I say that is if I'm playing to the Lounge Radio instead of the group then want to turn the Radio on in the Kitchen to listen to same song then I would have to load iPeng or the LMS web ui to sync them. I currently use Siri for everything so I could say turn on "All Players" which would turn on the group which would grab the players and then grab the playlist from the currently playing player as it grabs it. Then I can say turn on the "Kitchen Radio". Hope that makes sense!

                    2. This is related to Shaire tunes so I'll post over there.

                    If you think the above is a waste of time, of that you think its not possible then doesn't matter as its working great so far and I'm sure I can manage with the way it is hehe

                    Can't thank you enough or all your efforts with this and with the other plugins. You have kept old and discontinued products alive and current. Same thanks goes to Michael for his help, particularly keeping LMS updated with fixes and his fabulous Spotty app - who would of thought Spotify Connect on our ageing LMS products!! Thank you all!
                    Last edited by Simon_rb; 2018-01-14, 10:49.

                    Comment


                    • #11
                      Originally posted by Simon_rb
                      Works a treat! Top top man. Doesn't appear to restore playlists to players that are sync'd together before they are grabbed by the Group Player. Therefore I will not leave any players sync'd from now on and just rely on the "Groups" to do my syncing.
                      Are you sure? I tried 3 times and every time I got the playlist of the sync group restored. The code allowed that.
                      When I breap up a group, the playlist, for each player I first unsync it and re-sync it with it previous sync group if any - LMS will copy the playlist from the other sync group players.
                      Then, if that player is happens to be alone in its sync group, I restore the playlist from what I memorized when the Group Player was assembled.
                      With that logic, if all players of a sync group happens to be part of a Group Player, then when the first one is detached, there will be no "remaining" sync group member yet, so LMS can't reset the playlist, so I do it. Then when I detach the second one of the former sync group, LMS will grap the playlist from the first detached one and I won't do anything ... and so on
                      With that said I have a couple more ideas to make it all a bit smoother with my setup (might be useful to others I don't know).

                      1. Is it possible that when you turn on the "Group" player that if a slave player is playing that it grabs that playlist? Reason I say that is if I'm playing to the Lounge Radio instead of the group then want to turn the Radio on in the Kitchen to listen to same song then I would have to load iPeng or the LMS web ui to sync them. I currently use Siri for everything so I could say turn on "All Players" which would turn on the group which would grab the players and then grab the playlist from the currently playing player as it grabs it. Then I can say turn on the "Kitchen Radio". Hope that makes sense!
                      I will think about it but what to do if more than one is playing? Last one wins? First one wins? nothing? It might also surprise some useer so I'll have to make it an option
                      Can't thank you enough or all your efforts with this and with the other plugins. You have kept old and discontinued products alive and current. Same thanks goes to Michael for his help, particularly keeping LMS updated with fixes and his fabulous Spotty app - who would of thought Spotify Connect on our ageing LMS products!! Thank you all!
                      You're welcome - Our LMS is in fact in a very good shape for a 5-years-old-discontinued-product. I'm afraid that Logitech will decide to pull it back because of the raise of smart homes and smart speakers
                      And I agree, what Michael is doing in general and with Spotty in particuler is fabulous. He supports my efforts a lot and without his advices, I would not be able to do what I do
                      LMS 8.2 on Odroid-C4 - SqueezeAMP!, 5xRadio, 5xBoom, 2xDuet, 1xTouch, 1xSB3. Sonos PLAY:3, PLAY:5, Marantz NR1603, Foobar2000, ShairPortW, 2xChromecast Audio, Chromecast v1 and v2, Squeezelite on Pi, Yamaha WX-010, AppleTV 4, Airport Express, GGMM E5, RivaArena 1 & 3

                      Comment


                      • #12
                        Originally posted by philippe_44
                        Are you sure? I tried 3 times and every time I got the playlist of the sync group restored. The code allowed that.
                        When I breap up a group, the playlist, for each player I first unsync it and re-sync it with it previous sync group if any - LMS will copy the playlist from the other sync group players.
                        Then, if that player is happens to be alone in its sync group, I restore the playlist from what I memorized when the Group Player was assembled.
                        With that logic, if all players of a sync group happens to be part of a Group Player, then when the first one is detached, there will be no "remaining" sync group member yet, so LMS can't reset the playlist, so I do it. Then when I detach the second one of the former sync group, LMS will grap the playlist from the first detached one and I won't do anything ... and so on

                        I will think about it but what to do if more than one is playing? Last one wins? First one wins? nothing? It might also surprise some useer so I'll have to make it an option

                        You're welcome - Our LMS is in fact in a very good shape for a 5-years-old-discontinued-product. I'm afraid that Logitech will decide to pull it back because of the raise of smart homes and smart speakers
                        And I agree, what Michael is doing in general and with Spotty in particuler is fabulous. He supports my efforts a lot and without his advices, I would not be able to do what I do
                        Thanks for the reply. I will test again and get back to you. I only tried once.

                        I agree in regards to the what player if more than one is playing, maybe an option like you said for first/last or maybe set an Alpha Male style player which takes precedent which would be my living room radio for example. I don't know how complicated all this is to do.

                        Logitech have missed a trick with LMS and sure they regret it now. Great community and people like yourself have made me invest more into the eco system long after it was discontinued.

                        Thanks again Philippe

                        Comment


                        • #13
                          Something I have noticed is the volume between players is erratic and can't figure whats going on.. Some of them when they are broken up are 0. When they are grabbed by the Group player they are then at 100%. I understand how the Group Volume turns them up and down together relatively. Very strange, would there be a way/option of setting them all to ay 50% when grabbed? Again this might not be for some people but may work for others..

                          Sorry, I'm giving you all this extra work lol. Thanks for reading though

                          Comment


                          • #14
                            ANNOUNCE: Group Players

                            > 1. Is it possible that when you turn on the "Group" player that if a
                            > slave player is playing that it grabs that playlist? Reason I say that


                            I think that's similar as the "continue playback on a different player"
                            use case. I would have suggested give the "Music Walk with me" plugin.
                            But I haven't tested it with Groups, yet.

                            --

                            Michael
                            Michael

                            "It doesn't work - what shall I do?" - "Please check your server.log and/or scanner.log file!"
                            (LMS: Settings/Information)

                            Comment


                            • #15
                              Originally posted by mherger
                              > 1. Is it possible that when you turn on the "Group" player that if a
                              > slave player is playing that it grabs that playlist? Reason I say that


                              I think that's similar as the "continue playback on a different player"
                              use case. I would have suggested give the "Music Walk with me" plugin.
                              But I haven't tested it with Groups, yet.

                              --

                              Michael
                              Thanks Michael, just installed the plugin you mentioned. Will test later, do I have to open iPeng or LMS UI to transfer the playlist?

                              Cheers!!!

                              Comment

                              Working...
                              X
                              😀
                              🥰
                              🤢
                              😎
                              😡
                              👍
                              👎