PDA

View Full Version : ANNOUNCE: Group Players



philippe_44
2018-01-12, 22:06
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


dev: http://downloads.sourceforge.net/project/lms-groups/dev/repo-sf.xml

no need to add a repo for the stable version, but as the "official" 3rd party plugins might take some time to get updated, here is the direct link

stable: http://downloads.sourceforge.net/project/lms-plugins-philippe44/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
All members of a Group Player can be powered on when starting to play. They will be restored to their previous power state when the group is broken up. This can be disabled in Settings
Memberís playlists are restored after group is broken up


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

drmatt
2018-01-13, 04:11
Nice!


Transcoded from Matt's brain by Tapatalk

Simon_rb
2018-01-13, 05:38
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!

Simon_rb
2018-01-13, 06:36
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

gegen
2018-01-13, 09:28
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!

philippe_44
2018-01-13, 11:17
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

Simon_rb
2018-01-13, 13:01
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 :D

gegen
2018-01-13, 14:05
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.

philippe_44
2018-01-13, 15:39
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

Simon_rb
2018-01-14, 03:33
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!

philippe_44
2018-01-14, 12:12
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

Simon_rb
2018-01-14, 13:12
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

Simon_rb
2018-01-14, 13:32
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 :D

mherger
2018-01-14, 14:07
> 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

Simon_rb
2018-01-14, 14:19
> 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!!!

pippin
2018-01-14, 16:03
In iPeng you can just swipe right on the target player to switch the playlist over.
What I donít understand: how do you control the Squeezebox through Siri?

Simon_rb
2018-01-14, 16:17
In iPeng you can just swipe right on the target player to switch the playlist over.
What I donít understand: how do you control the Squeezebox through Siri?

I use a program called Domoticz, that has all my players inside. I have created virtual switches that control volume and power state of each player. I then use Homebridge, with edomoticz plugin and expose the virtual switches which control volume and power. I can now say.. "Turn on the Kitchen Radio" or "Turn on the radio in the Kitchen". "Set the Kitchen Radio to 60% etc... And it all works. Also in the Home app you can change the volume and power states for each player.

So the Music walk with me sounds great, it wouldn't work too well with the above setup.

If you want more details on the above I can post some scripts I am using..

Cheers

pippin
2018-01-14, 16:42
No, thatís fine.
But as you said, the plugin would not work with that unless it might have an API you can use.
But I donít think youíd need that, you could simulate the behavior in your control system by syncing and then unsyncing players.
But I think all of this is OT here...

philippe_44
2018-01-14, 21:11
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 :D

Corrected a few things in volume management when the group is assembled. I think I'd better make that work properly rather than adding options.

grimmace92
2018-01-15, 11:25
Corrected a few things in volume management when the group is assembled. I think I'd better make that work properly rather than adding options.

Is it possible to add the ability to edit the player name for the group? I ask as I'm using Ha Bridge for using Alexa and it needs the Mac address. I'm trying to keep the names I'm using in LMS and Ha Bridge the same. If I want to change the name of the group player I have to create a new one which in turn gives it a new Mac address. Then I have to update all the mac address inside Ha bridge. Being able to edit the name would make life easier. Thanks for another great plugin!

philippe_44
2018-01-15, 12:28
Is it possible to add the ability to edit the player name for the group? I ask as I'm using Ha Bridge for using Alexa and it needs the Mac address. I'm trying to keep the names I'm using in LMS and Ha Bridge the same. If I want to change the name of the group player I have to create a new one which in turn gives it a new Mac address. Then I have to update all the mac address inside Ha bridge. Being able to edit the name would make life easier. Thanks for another great plugin!

If I understood correcly, you can change the name under the player's tab (in LMS settings) - remember, as far as LMS is concerned, it's just another player will all attributes (hence, e.g. you can do that bitrate limitation).

grimmace92
2018-01-15, 12:37
If I understood correcly, you can change the name under the player's tab (in LMS settings) - remember, as far as LMS is concerned, it's just another player will all attributes (hence, e.g. you can do that bitrate limitation).

Well that turned out to be a silly request. Thanks.

Simon_rb
2018-01-15, 15:34
Corrected a few things in volume management when the group is assembled. I think I'd better make that work properly rather than adding options.

Initial tests prove positive! Not seen any issues with players being at 100%.. Result!

Now get on with those other options.. haha :p

jtl
2018-01-19, 23:52
Hi,

maybe I didn't get it correctly, but I have a player group that also has my "main" living room player as a member, which is fixed at 100% volume via preferences. It seems that this preference also applies when he is playing as part of the group, making - for me - the volume control a bit counter intuitive...

Wouldn't it be better to temporarily unset the fixed volume pref as long as it is playing as part of the group and on breaking up the sync the fixed volume pref is restored?

Regards and keep up the good work!!!!
jtl

philippe_44
2018-01-20, 01:25
Hi,

maybe I didn't get it correctly, but I have a player group that also has my "main" living room player as a member, which is fixed at 100% volume via preferences. It seems that this preference also applies when he is playing as part of the group, making - for me - the volume control a bit counter intuitive...

Wouldn't it be better to temporarily unset the fixed volume pref as long as it is playing as part of the group and on breaking up the sync the fixed volume pref is restored?

Regards and keep up the good work!!!!
jtl

If I follow you, I'd better not include that player in the average volume calculation rather than un-fixing its volume, no? I assume that you've set it a 100% for a good reason and you want to keep it like that even if it's member of a group, no?

pippin
2018-01-20, 10:56
Thatís what I do in iPeng, too (exclude players with fixed volume)

philippe_44
2018-01-21, 00:59
Thatís what I do in iPeng, too (exclude players with fixed volume)

Makes sense, I forgot about this one, will do that!

jtl
2018-01-21, 03:19
If I follow you, I'd better not include that player in the average volume calculation rather than un-fixing its volume, no? I assume that you've set it a 100% for a good reason and you want to keep it like that even if it's member of a group, no?

Actually, no - I would prefer if you would temporarily "unfix" the volume of the player while playing in a group. The reason for the 100% volume fix in the first place is only for having the best possible quality when listening very concentrated to music on my main stereo alone... That by definition doesn't apply to the case of having everything in the whole apartment synced (party mode...)

I know that my main premise (fixed volume = better sound quality) may be complete snake oil... but nevertheless it gives me the warm and fuzzy feeling of having done all I can do :-)

jasell
2018-01-21, 03:48
I have been using Group Player for a while and prefer it a lot over synchronizing players.

One thing though, the virtual player has far less settings and what I miss in particular is the screen saver.
I have one group that combine a Receiver and SB3, on the SB3 I wish to show Music Infromation Screensaver but I cannot get it to work with the virtual player.

Any thoughts, ideas, tips?

mherger
2018-01-21, 05:11
> I have one group that combine a Receiver and SB3, on the SB3 I wish to
> show Music Infromation Screensaver but I cannot get it to work with the
> virtual player.

The group player doesn't have a display. It's just a logical grouping of
your players. Therefore their individual settings should still apply.

--

Michael

philippe_44
2018-01-22, 01:10
Actually, no - I would prefer if you would temporarily "unfix" the volume of the player while playing in a group. The reason for the 100% volume fix in the first place is only for having the best possible quality when listening very concentrated to music on my main stereo alone... That by definition doesn't apply to the case of having everything in the whole apartment synced (party mode...)

I know that my main premise (fixed volume = better sound quality) may be complete snake oil... but nevertheless it gives me the warm and fuzzy feeling of having done all I can do :-)

ah ... that's a very specific use then. There is always the possibility to add yet another option, but I'm always concerned with settings creepings... and I' won't start a discussion about snake oil :)

jtl
2018-01-22, 02:09
ah ... that's a very specific use then. There is always the possibility to add yet another option, but I'm always concerned with settings creepings... and I' won't start a discussion about snake oil :)

Yeah, I know.

Maybe doing as you planned (ignoring fix volume players when calculating the group volume) is a good thing to do anyway, and if you can be bothered to add the option "temporarily unfix players volume" on top it would be even better :-)

Thanks for the great work!

KeBul
2018-01-22, 02:52
This thread popping back up reminded me to install and try this.

I have three use cases for this, downstairs players, upstairs players and all players.

As already said works really well, top work Philippe (and assist by Michael),

Thanks so much for applying your time and skills to the benefit of all Squeeze ecosystem users, it is much appreciated.

Kev

bakker_be
2018-01-22, 02:59
This actually solves an issue I was having :) I've now disabled Spotty on the individual players, but enabled it on this "virtual" player, which gives me a rather easy way to switch between my personal Spotify playlist when I'm home alone, playing on bothe the kitchen player and the living room Touch, and switching back over to a more "general purpose" playlist on the same players but through the traditional sync mechanism when the whole family is present :D

woodster
2018-02-06, 01:14
Hi there (@Pippin perhaps),

any status regarding the having the name and model supported by the IckStream plugin?

pippin
2018-02-06, 03:38
Thanks for the reminder.
Yes, I'll look into it (and we're going to support it), hopefully I can do that tomorrow.

woodster
2018-02-06, 04:54
Thanks for the reminder.
Yes, I'll look into it (and we're going to support it), hopefully I can do that tomorrow.

Hi Pippin,

that sounds absolutely brilliant :)

Simon_rb
2018-02-19, 17:56
Hi,

Just started using the Group Player's more recently and think I have found a behaviour that maybe isn't quite right. I'll run it by you guys/gurls and see what your setup does and/or your thoughts.

Group starts by grabbing all players which is great. I had a couple of players on and playing in sync out of the 10 or so sync'd at the time. The wife turned on the Kitchen Radio (which his part of this group) and then selected her own album which was fine, the Kitchen Radio was removed from the group and it played her chosen album. Now using iPeng I paused the Group player as that was what was selected from choosing the previous playlist that started the group. When resuming it grabbed the Kitchen Radio back into the group and started playing my playlist in sync with the group! My wife wasn't best pleased.. whoops.

I assume thats not normal behaviour?!?! So just to clarify, pausing the group player and then resuming pulled a previously attached player that had left and was playing its own thing. I would have thought that the Kitchen Player shouldn't have been pulled back in to the group is it was switched on and playing something different.

Cheers

philippe_44
2018-02-19, 21:36
Hi,

Just started using the Group Player's more recently and think I have found a behaviour that maybe isn't quite right. I'll run it by you guys/gurls and see what your setup does and/or your thoughts.

Group starts by grabbing all players which is great. I had a couple of players on and playing in sync out of the 10 or so sync'd at the time. The wife turned on the Kitchen Radio (which his part of this group) and then selected her own album which was fine, the Kitchen Radio was removed from the group and it played her chosen album. Now using iPeng I paused the Group player as that was what was selected from choosing the previous playlist that started the group. When resuming it grabbed the Kitchen Radio back into the group and started playing my playlist in sync with the group! My wife wasn't best pleased.. whoops.

I assume thats not normal behaviour?!?! So just to clarify, pausing the group player and then resuming pulled a previously attached player that had left and was playing its own thing. I would have thought that the Kitchen Player shouldn't have been pulled back in to the group is it was switched on and playing something different.

Cheers

I agree that's not ideal, but that's by design so far. Groups are disassembled at pause and restored at resume. I have to re-think about it, but how would I differentiate that you don't want that player to be re-grabbed?

- In many cases, you'd want it to be re-grabbed otherwise the only option would be to "stop" the Group it (i.e. to erase it's playlist) and then to re-play it - not very convenient either. And even if you do that, maybe your wife does not want the Kitchen to be re-grabbed if you change your playlist.

- Then I could not-grab players that are already playing, but that would defeat a lot the purpose of Groups

- Then, more complicated, I could mark Group members that are de-synced when pausing and not restore them upon resume. But what shall I do if you change the Group Playlist? Shall I leave marked players as well but then how will they re-join the group then?

- The only option I can think about, while write that, is, when breakin up a Group, I would mark the players that are not synced with it anymore. Then, when reforming that group, members that were marked and *are* playing shall not re-join the group. Unfortunately, that would also make some unhappy users were you have extracted a player yesterday from a group while it was playing. Today, you're playing something on that player, and then you decide to play on the Group ... well, that player will not rejoin :( Not sure you'll remember what you did yesterday ... okay then I need a timer and we are entering into some spaghetti thinking

but

suggestions welcome :)

pippin
2018-02-19, 22:16
Its one of the issues around player groups. Is a group a definite thing or not? Problem is, everybody seems to have a different opinion based on personal preferences...

jasell
2018-02-20, 00:17
I agree that's not ideal, but that's by design so far. Groups are disassembled at pause and restored at resume. I have to re-think about it, but how would I differentiate that you don't want that player to be re-grabbed?

- In many cases, you'd want it to be re-grabbed otherwise the only option would be to "stop" the Group it (i.e. to erase it's playlist) and then to re-play it - not very convenient either. And even if you do that, maybe your wife does not want the Kitchen to be re-grabbed if you change your playlist.

- Then I could not-grab players that are already playing, but that would defeat a lot the purpose of Groups

- Then, more complicated, I could mark Group members that are de-synced when pausing and not restore them upon resume. But what shall I do if you change the Group Playlist? Shall I leave marked players as well but then how will they re-join the group then?

- The only option I can think about, while write that, is, when breakin up a Group, I would mark the players that are not synced with it anymore. Then, when reforming that group, members that were marked and *are* playing shall not re-join the group. Unfortunately, that would also make some unhappy users were you have extracted a player yesterday from a group while it was playing. Today, you're playing something on that player, and then you decide to play on the Group ... well, that player will not rejoin :( Not sure you'll remember what you did yesterday ... okay then I need a timer and we are entering into some spaghetti thinking

but

suggestions welcome :)

I think that's the way it has to be or else the group definition needs to be dynamic and very complex.
I that case you would need to have commands like "reset" group to its original collection of players.
Or when you start a using a group you could get a control question, for each player that is doing something different if you want to bring them back in the group.
This will complicate the user experience and the current GUI is not capable of doing that.
But you would have full control...

Group player, in my opinion, is designed to make it simple. You already have full control by arranging your synched player manually.

Simon_rb
2018-02-20, 02:35
Philippe,

Thank your for replying so quickly! I agree with all comments that this is mostly personal preference.

Does the syncing and unsyncing have to be done with pause and play on the group player? Wouldn’t the most logical and user friendly way to be this:-

When group player is powered on.. it grabs all players.. this is the only time this is done. If it’s paused or resumed then it does no more grabbing. Only powering it on. To unsync group, just turn the group player off.

If during the group sync a player is removed by a user by changing its plylist locally then when that player is turned off (ie, they have finished with it) the player is reattached to group on power off if the group player is still turned on. To me that is more seamless than the current setup. Although I agree 100% that is more preference and setup.

I’d love for the group players to stay in sync permanently whilst the group player is powered on, rather than break up and re grab at pause/play. The break up group when group player is powered off. So simple then, whilst group is powered on, players are grabbed and stay grabbed (unless locally released by changing playlist on local player). Then power off and players are released.

I hope I have explained that correctly..

That above scenario would then stop a player from being grabbed again when it’s playing something locally if the group is paused then played again. However once that person is finished with that radio, it’s turned off and it syncs back into group. If you wish to resync whole group including the radio that is still locally playing something then just power off and power on the group player just like you do with pause/play the current way. That would grab the playing radio again.

To me that is the simplest and seamless experience. I’m sure there are reasons this can’t be done or scenarios why its not a good idea, sure I may have missed something obvious..

Reason for group players is to sync players, turn it on and they are synced and stayed synced. Turn it off and they are back to being standalone players. Simples. ūüĎć

Thanks for reading and entertaining this!!!

Cheers!

PS, sorry for repeating it a few times, just trying to explain it a couple of different ways as to make sense..

philippe_44
2018-02-20, 20:20
Philippe,

Thank your for replying so quickly! I agree with all comments that this is mostly personal preference.

Does the syncing and unsyncing have to be done with pause and play on the group player? Wouldn¬’t the most logical and user friendly way to be this:-

When group player is powered on.. it grabs all players.. this is the only time this is done. If it¬’s paused or resumed then it does no more grabbing. Only powering it on. To unsync group, just turn the group player off.


Unfortunately that will break here immediately as, you've basically created a classical LMS sync group. Unless, you power off the Group, when you play on any member of the group, while it's paused/stopped all players will start and that's probably going to be super irritating, especially if you played something on the group a few hours ago and let it just go to the end of the playlist.

In fact, what you're describing is done pretty well by The Synchronizer, but I personnally did not like the need of switching sync group, which almost the same as powering them off all the time - you simply forget. I can't see users power on/off the Group player every time they want to use it, or especially when they want to stop it - they will forget and shout.

For example, when I play "whole house", track ends then I play "ground floor", I don't want to have to power off "whole house" to avoid that it's suddenly playing every where because I played "ground floor" whose players happended to be synced with others from "whole house". So then I would have to undo the "whole house" when doing "ground floor" because they have at least one player in common. I really mean you're entering into a lot of nasty corner case.



If during the group sync a player is removed by a user by changing its plylist locally then when that player is turned off (ie, they have finished with it) the player is reattached to group on power off if the group player is still turned on. To me that is more seamless than the current setup. Although I agree 100% that is more preference and setup.

I¬’d love for the group players to stay in sync permanently whilst the group player is powered on, rather than break up and re grab at pause/play. The break up group when group player is powered off. So simple then, whilst group is powered on, players are grabbed and stay grabbed (unless locally released by changing playlist on local player). Then power off and players are released.

I hope I have explained that correctly..

That above scenario would then stop a player from being grabbed again when it¬’s playing something locally if the group is paused then played again. However once that person is finished with that radio, it¬’s turned off and it syncs back into group. If you wish to resync whole group including the radio that is still locally playing something then just power off and power on the group player just like you do with pause/play the current way. That would grab the playing radio again.

To me that is the simplest and seamless experience. I¬’m sure there are reasons this can¬’t be done or scenarios why its not a good idea, sure I may have missed something obvious..

Reason for group players is to sync players, turn it on and they are synced and stayed synced. Turn it off and they are back to being standalone players. Simples. ūŸ‘ć

Thanks for reading and entertaining this!!!

Cheers!

PS, sorry for repeating it a few times, just trying to explain it a couple of different ways as to make sense..

I really do think that the very dynamic build/break up is only solution, but I will think about the option I mentionned before which might be doable

philippe_44
2018-02-20, 22:37
okay, here is a proposal that combines out two views, is (I think) easy to implement and has limited side effects

- When a player leaves a Group "on its own", it is marked
- When a Group is reformed (after a pause or a stop or a change of its playlist), marked players that are playing are not added to the group
- Powering off then on a Group will reset the marked player

If the "other party" is unhappy because her *stopped* player restarts when you change a playlist on the Group, then she just has to power it off and, if you have left the option "power on all members at play" unchecked, then you'll have peace at home

I've put that in dev version 0.5.0, but I did not test it at all (late here) - I would appreciate if you could

Simon_rb
2018-02-21, 02:17
Once again thank you! With the groups being constanantly kept together until the group player is turned off wouldnít result in players playing everywhere if forgetting to turn off the group player would it?

All players stay in their groups, however only when you select the group player do all players play.. they can all be in group,
If you leave group player on and select something to play on one of the players say, a bedroom player then because you selected that locally then only that will play as it would leave the group. When it is powered off it would then join the group again ready to be in sync.

I only have one Group Player. If you have multiple group players. Only one should be allowed to be powered on. So if you have 3 group players. 1 is on and assembles the players. Then you power on group 2, then group 1 should powered off by group 2 and group 2 assembles itís players.

Iím not sure how it works with more than one group player as I only have one so maybe the above wouldnít work for more than one if you can have multiple group players playing at the same time. If that is the case then forget my idea lol.

You donít even need to power up the group, just select it and send playlist then it powers on anyways. Yes you might forget to turn it off but does that do any harm, your mechanics of selecting a local player and changing playlist would remove it from the group anyhows. Then it would return once powered off.

Yes the above is similar to the LMS native sync, as it keeps it simple yet with the added bonus of your approach if you do select a local player it is removed from group then returns once powered off.

Thanks again, Iím not being argumentative and fully appreciate all your hard work Philippe!

Simon_rb
2018-02-21, 02:55
Just to further add to the above..

The 0.50 dev version does appear to ignore a player that is playing when pausing and un pausing the group which solves one problem.

The main reason I like to keep the group sync'd even when paused is because I will pause a player locally that is in the group or the group player directly and the group is broken up. Not so bad if pausing using the group player. However if I pause the player in the living room for a minute for a reason, maybe a phone call. When I press resume/play, the player plays the local playlist as the group has been broken up. Thats the main reason I wanted the group to stay together even when paused. With the current setup if any player is paused for more than say 20 seconds the group is broken up and only way to get them playing as a group is to open iPeng and hit play on the group player.

Hope above makes sense. I just want the group to stay together when paused. So when I pause the Living Room Touch to take a 2 min phone call the group stays together because the current setup when I hit play/resume on the Living Room Touch it plays the local playlist as the group is broken up.

Cheers!!! :D

philippe_44
2018-02-21, 07:46
But today, when you pause a player member of a group, not the group, the group stays assembled, for 30!mins, this is the only case where I bended the rules, exactly for the reason you describe (momentary pause to take a call).

But generalizing that when pausing from the main and keeping it forever is bad because I cannot regroup permanent LMS group that people want to have. At best I can let you decide the timer for breaking up the group when paused, but you should already have 30 mins

Simon_rb
2018-02-21, 09:26
But today, when you pause a player member of a group, not the group, the group stays assembled, for 30!mins, this is the only case where I bended the rules, exactly for the reason you describe (momentary pause to take a call).

But generalizing that when pausing from the main and keeping it forever is bad because I cannot regroup permanent LMS group that people want to have. At best I can let you decide the timer for breaking up the group when paused, but you should already have 30 mins

Ah, mine isn't behaving like that. I think mine is playing up as I can't even add anymore players, some sort of SQL error shows up in the log. I may remove it and reinstall..

If you allow a timer for them to remain together then maybe an infinity option? Than that gives the option to not break the group up when paused from a local player forever.

And while your still adding options I would still like a local player to rejoin group when powered off when its left the group - hehe.

Then I'll be quiet, I promise hehe

Cheers

philippe_44
2018-02-21, 13:47
Ah, mine isn't behaving like that. I think mine is playing up as I can't even add anymore players, some sort of SQL error shows up in the log. I may remove it and reinstall..

If you allow a timer for them to remain together then maybe an infinity option? Than that gives the option to not break the group up when paused from a local player forever.

And while your still adding options I would still like a local player to rejoin group when powered off when its left the group - hehe.

Then I'll be quiet, I promise hehe

Cheers

I'll re-check later today, but I'm doing that from time to time: pausing from one of the members and resuming from there as well. I can add the timer as a visible option, although I hate to add too many options, so it will be only one global one (for all players). About rejoining after stop, that is much more complicated and I can't do that. When a player has left, I dont receive any more notifications of what's happening to it. Remember that when players are synced, there is a common place that receives all the pause/stop events for all members, but as soon as it has left, well it's gone. I would need to subscribe to *all* power events and do a extra amount of filtering. Too much work for now.

Simon_rb
2018-02-21, 14:25
No worries to the rejoining when powering off if itís loads of work to add it. Iím defo gonna have to remove groups and reinstall it.

I agree with the adding lots of options isnít ideal.

Cheers

philippe_44
2018-02-21, 20:04
No worries to the rejoining when powering off if itís loads of work to add it. Iím defo gonna have to remove groups and reinstall it.

I agree with the adding lots of options isnít ideal.

Cheers

oops ... you were right, the pause did not work, the player was just muted. I never realized that. It should be fine in version 0.50.1

Simon_rb
2018-02-23, 08:51
oops ... you were right, the pause did not work, the player was just muted. I never realized that. It should be fine in version 0.50.1

Its not often that I am right, my wife will tell you that!

Pausing a local player now keeps them together, thank you.

s2kiwi
2018-03-01, 01:08
Just catching up on this one, what an awesome plug in thank you.

One question that would really make it work perfectly for me, does anyone know of a way (or another plug in) that could turn off the other groups when I switch on a new one.

pilot000
2018-03-02, 09:10
I'm not able to install the plugin.


[18-03-02 17:08:35.8753] Slim::Utils::PluginDownloader::install (159) install - downloading Groups from http://downloads.sourceforge.net/project/lms-plugins-philippe44/Groups-0.5.1.zip
[18-03-02 17:08:37.6125] Slim::Utils::PluginDownloader::_downloadDone (176) downloaded Groups to /var/lib/squeezeboxserver/cache/DownloadedPlugins/Groups.zip
[18-03-02 17:08:37.6131] Slim::Utils::PluginDownloader::_downloadDone (194) digest does not match /var/lib/squeezeboxserver/cache/DownloadedPlugins/Groups.zip - Groups will not be installed

any ideas are appreciated.

mherger
2018-03-02, 09:20
>> http://downloads.sourceforge.net/project/lms-plugins-philippe44/Groups-0.5.1.zip

Sourceforge has been struggling for weeks now. They're on and off all
the time...

--

Michael

pilot000
2018-03-03, 00:58
Download is working, but the file seems corrupt.
When I download it directly on the linux server and try to unpack I get the following error:

End-of-central-directory signature not found.

Is there a way to install the plugin manually. I downloaded the file from a windows machine and this file seems not corrupt. When I copy this file to the linux, I'm able to unpack it without any error.

But I not figured out how to install the plugin manually.

philippe_44
2018-03-03, 05:04
Download is working, but the file seems corrupt.
When I download it directly on the linux server and try to unpack I get the following error:


Is there a way to install the plugin manually. I downloaded the file from a windows machine and this file seems not corrupt. When I copy this file to the linux, I'm able to unpack it without any error.

But I not figured out how to install the plugin manually.

You can unzip the whole thing in /var/lib/squeezeboxserver/Plugins/Groups

s2kiwi
2018-03-20, 02:37
Hi Philippe, thanks for a brilliant plug in. It's solved all sorts of annoyances I had in my system (like a central Joggler can now control the everyday 'inside' players all at once). I can also set a lower bit rate for everything playing compared to when just individual players are on - awesome!

However, there is one scenario I'm still struggling with. I have some outdoor speakers which I'm forever turning on/off for when i'm working outside and come back in etc (so as not to annoy the neighbors too much). I'd love to be able to add this into a sync group, so it's easy to turn on when needed, but have it start as powered off by default.

I tried hacking your plugin around to add a 'power on/off' setting for individual players, but quickly realised that's over kill for my one player. So then I tried to isolate the individual player at the point it turns on and manually override it to leave it powered off... but I couldn't get it to work (using MAC address lookups kept controlling the wrong player for some reason, i assume it's due to the way the data loops but i couldn't work it out!).

I also tried to add a simple line of code at the end of the power-on function to manually send a power off to that one outside speaker (so it starts then stops instantly), but I couldn't get that to work either.

Any pointers on what code I could easily add to the script to let this one player join the group, but have it start in a powered off state while everything else powers on?

Any advice appreciated as I'm now out of ideas.

Pernod.

philippe_44
2018-03-20, 06:10
Hi Philippe, thanks for a brilliant plug in. It's solved all sorts of annoyances I had in my system (like a central Joggler can now control the everyday 'inside' players all at once). I can also set a lower bit rate for everything playing compared to when just individual players are on - awesome!

However, there is one scenario I'm still struggling with. I have some outdoor speakers which I'm forever turning on/off for when i'm working outside and come back in etc (so as not to annoy the neighbors too much). I'd love to be able to add this into a sync group, so it's easy to turn on when needed, but have it start as powered off by default.

I tried hacking your plugin around to add a 'power on/off' setting for individual players, but quickly realised that's over kill for my one player. So then I tried to isolate the individual player at the point it turns on and manually override it to leave it powered off... but I couldn't get it to work (using MAC address lookups kept controlling the wrong player for some reason, i assume it's due to the way the data loops but i couldn't work it out!).

I also tried to add a simple line of code at the end of the power-on function to manually send a power off to that one outside speaker (so it starts then stops instantly), but I couldn't get that to work either.

Any pointers on what code I could easily add to the script to let this one player join the group, but have it start in a powered off state while everything else powers on?

Any advice appreciated as I'm now out of ideas.

Pernod.

Wouldn't the option "Power on Play" solve the problem for you. If you disable it, your outdoor speaker will not be powered on when you start playing, and when you stop a playback "session" where they were on, you could simply manually power them off; no? Am i missing something?

s2kiwi
2018-03-20, 10:56
Wouldn't the option "Power on Play" solve the problem for you. If you disable it, your outdoor speaker will not be powered on when you start playing, and when you stop a playback "session" where they were on, you could simply manually power them off; no? Am i missing something?

I want to have it so everything in the group power on except the outside player, which joins the group but stays powered off.

It's simply so I can add outside to the sync'd players easily when I go outside by just powering it on (rather than having to have a whole other group set up with different playlist etc). I'm actually using an amazon dash button to trigger the power on/off for that one device.

drmatt
2018-03-20, 13:29
Turn power save off on the others...


Transcoded from Matt's brain by Tapatalk

philippe_44
2018-03-20, 18:40
I want to have it so everything in the group power on except the outside player, which joins the group but stays powered off.

It's simply so I can add outside to the sync'd players easily when I go outside by just powering it on (rather than having to have a whole other group set up with different playlist etc). I'm actually using an amazon dash button to trigger the power on/off for that one device.

Then disable power on play in my plugin settings, but for all other players, in the LMS player's menu, under synchronize, set "power on/off with group". I think this should work. When you'll play on the Group Player, it will synchronize all other players and because they have that flag set in LMS and the Group Player is on, then they'll power on, except the outdoor speakers

s2kiwi
2018-03-20, 21:42
Then disable power on play in my plugin settings, but for all other players, in the LMS player's menu, under synchronize, set "power on/off with group". I think this should work. When you'll play on the Group Player, it will synchronize all other players and because they have that flag set in LMS and the Group Player is on, then they'll power on, except the outdoor speakers

Well I think I just learnt something. For the last 4 years I have thought the "power on/off with group" was tied specifically to the current sync settings set up, whereas reading this it sounds like it is a generic setting relevant to any sync group a player might be in?

Am i correct in now thinking that any player with this setting enabled will power on/off when any other player in the same group is powered on/off? If so then that setting could make my life much easier.

Thanks guys!

s2kiwi
2018-03-21, 03:24
Yep, I've confirmed that gets me the right power on state, but it's then too limiting as I'm not able to power off individual players in the group as required (I.e just power down one player when the kids are asleep).

I know I'm a niche need here but any other suggestions appreciated.

philippe_44
2018-03-21, 11:47
Yep, I've confirmed that gets me the right power on state, but it's then too limiting as I'm not able to power off individual players in the group as required (I.e just power down one player when the kids are asleep).

I know I'm a niche need here but any other suggestions appreciated.

Then you really need to hack my code and add a per-device option for power on/off with the group. I'm not keen to do that as it will make the UI clunky, but you can make that change for yourself. In Settings.pm and Basic.html you need to add the checkboxes for each player id and store it in prefs like volume is. Then in StreamingController, doGroup function, look around the "powerPlay" option and here use the per-device setting that you have set before

markm9999
2018-05-12, 07:57
I really love the Group Players plugin! Well done!

I do have an LMS related question though - I'm posting it here in case others experience the issue as well...

I have A LOT of 'recognized' players because I have a number of spares when the inevitable hardware issue occurs (these are 'sitting on a shelf' and not currently in use) PLUS a number of software players that have been used throughout the lifetime of my LMS install.

How can I prune the list of 'registered' players?
Or could I just delete them all and just have the current players re-register?

If deleting all, I wouldn't want this to affect other functionality - ie clearing the list kills cached data stored for a plugin...like the list of players in a Group!

Here's a screen shot representing about 1/3 of my current registered player list!

25008

Thanks!

philippe_44
2018-05-12, 10:50
I really love the Group Players plugin! Well done!

I do have an LMS related question though - I'm posting it here in case others experience the issue as well...

I have A LOT of 'recognized' players because I have a number of spares when the inevitable hardware issue occurs (these are 'sitting on a shelf' and not currently in use) PLUS a number of software players that have been used throughout the lifetime of my LMS install.

How can I prune the list of 'registered' players?
Or could I just delete them all and just have the current players re-register?

If deleting all, I wouldn't want this to affect other functionality - ie clearing the list kills cached data stored for a plugin...like the list of players in a Group!

Here's a screen shot representing about 1/3 of my current registered player list!

25008

Thanks!

Have you unckecked "include disconnected players"? Only currently active players should be displayed

markm9999
2018-05-12, 11:42
Have you unckecked "include disconnected players"? Only currently active players should be displayed

Sorry philippe_44, I meant to specify that I was aware of this option.

That's why I said I know this is more an LMS question, but I figured that others that use your plugin might come to this thread and see the answer.

I suppose I could have just posted a link to an LMS thread...:rolleyes:

Do you want me to move the question to it?

philippe_44
2018-05-13, 09:31
Sorry philippe_44, I meant to specify that I was aware of this option.

That's why I said I know this is more an LMS question, but I figured that others that use your plugin might come to this thread and see the answer.

I suppose I could have just posted a link to an LMS thread...:rolleyes:

Do you want me to move the question to it?

No worries having the question here. But what's strange is that the LMS function I'm using to display players returns the list of all clients that currently have an IP address, so these are the registered (active) one. I looked again at LMS' source code and this is really what it is: clients that have reached the server using slimproto, and are sending their keep-alive messages.

So unless there something I don't understand, all your spare devices are disconnected, right?

How many devices do you see in the LMS UI? You should have here exactly the same list

markm9999
2018-05-14, 08:47
As stated, this is only about 1/3 of all the players shown in your plugin display.

The listing does show both current and disconnected players, and yeah I can GUARANTEE I don't have 80+ currently active :eek:

The Transporter listed hasn't been hooked up with power supplied in at least 3 months because of some room renovations I'm doing.

EDIT: I forgot to actually answer your question - Only players that are active show up in the web display or through iPeng, etc.

markm9999
2018-05-14, 08:53
Another issue I've noticed with grouped players. For background - I have only 1 group defined, that includes 2 players, that are both connected via Ethernet...

If I restart LMS, or the PC it's running on, the currently grouped players are not recognized by LMS until I hit their power buttons. All non-grouped players show up as expected in the list of available players.

philippe_44
2018-05-14, 09:23
As stated, this is only about 1/3 of all the players shown in your plugin display.

The listing does show both current and disconnected players, and yeah I can GUARANTEE I don't have 80+ currently active :eek:

The Transporter listed hasn't been hooked up with power supplied in at least 3 months because of some room renovations I'm doing.

EDIT: I forgot to actually answer your question - Only players that are active show up in the web display or through iPeng, etc.

That's weird because I call Slim::Player::Client::clients() which, if you look inside, is using the global hash %clientHash which is updated when a client connects or disconnects / does not answer to heartbeat (I think). I'll dig deeper later

philippe_44
2018-05-15, 18:05
As stated, this is only about 1/3 of all the players shown in your plugin display.

The listing does show both current and disconnected players, and yeah I can GUARANTEE I don't have 80+ currently active :eek:

The Transporter listed hasn't been hooked up with power supplied in at least 3 months because of some room renovations I'm doing.

EDIT: I forgot to actually answer your question - Only players that are active show up in the web display or through iPeng, etc.

And you definitely see a difference (more players) when you set the show disconnect players flag?

edwin2006
2018-05-20, 03:24
Is group player plugin supposed to keep involved players in sync?
Running SB2 (wired) , radio, boom box, 2x pcp (wired) , 1x squeeze control player. All on a rp3 wired with only pcp/lms

karlek
2018-05-20, 09:16
Is group player plugin supposed to keep involved players in sync?
Running SB2 (wired) , radio, boom box, 2x pcp (wired) , 1x squeeze control player. All on a rp3 wired with only pcp/lms

I donít know about the group player Plugin, but AFAIR itĎs something between very difficult and totally impossible to keep a mixture of hard- and Software players in sync.
You could try syncing two Players for a start without the Plugin grouping them together and add some more until the syncing breaks.

philippe_44
2018-05-20, 09:44
Is group player plugin supposed to keep involved players in sync?
Running SB2 (wired) , radio, boom box, 2x pcp (wired) , 1x squeeze control player. All on a rp3 wired with only pcp/lms

The plugin does not change the sync algorithm, but it does create/teardown LMS synchronized player sets on the fly. So yes, the players involved are in sync, assuming that you don't have sync issue with LMS in general. When you "manually" create the sync set using the WebUI or any controller, if that set works, it should work as well as a Group Player

philippe_44
2018-05-20, 09:46
I donít know about the group player Plugin, but AFAIR itĎs something between very difficult and totally impossible to keep a mixture of hard- and Software players in sync.
You could try syncing two Players for a start without the Plugin grouping them together and add some more until the syncing breaks.

I always had a mix of squeezelite-based (including my AirPlay plugin) and Boom, Duet and radio and never had big issues keeping them in sync

karlek
2018-05-20, 12:42
Thank you. I only read from problems and so I didnít even try. :)

edwin2006
2018-05-24, 10:36
Sorry to say but the players individually in sync works pretty good after the initially start which take a few seconds. But when they are in group player they are not really in sync, you hear a kind of echo effect when you are able to hear more than one device.
Since the party guest where arriving I decided for regular sync.

philippe_44
2018-05-24, 23:11
Sorry to say but the players individually in sync works pretty good after the initially start which take a few seconds. But when they are in group player they are not really in sync, you hear a kind of echo effect when you are able to hear more than one device.
Since the party guest where arriving I decided for regular sync.

I donít know what this can be. As said before, itís just a normal sync group but created on the fly. Iím using it every day and Iíve not notice such issue. Can you remind me what are the players in the group you have created?


Envoyť de mon iPad en utilisant Tapatalk

edwin2006
2018-05-25, 09:04
1 radio, 1 boom, 1 SB2, 1 pcp, 1 android with squeeze cntrl.

markm9999
2018-05-25, 20:48
And you definitely see a difference (more players) when you set the show disconnect players flag?

Well at this point, that is the ONLY option I can 'select'. If I 'unselect' it and click 'apply' the web page never responds again.

Something is definitely wrong somewhere, but what it is I cannot tell.

Removing and re-installing the plugin makes no difference.

markm9999
2018-05-25, 23:59
Ok, after cleaning up the server.prefs file by removing various old players that shouldn't be in the file anymore, I reinstalled the plugin.

This is what I still see. The 'nclude disconnected players' checkbox was checked so I once again unchecked it and pressed 'apply'. I still have the endless web page 'waiting' issue.

25077

markm9999
2018-05-26, 00:01
Sorry, forgot to add log entries for previous post...


[18-05-26 02:54:05.8676] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xef9df84)
[18-05-26 02:55:20.0128] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xe90314c)
[18-05-26 02:56:35.0131] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xefc1e84)
[18-05-26 02:57:50.0151] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xefc2a5c)
[18-05-26 02:59:05.0192] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xefc2cfc)

markm9999
2018-05-26, 00:06
Sorry to say but the players individually in sync works pretty good after the initially start which take a few seconds. But when they are in group player they are not really in sync, you hear a kind of echo effect when you are able to hear more than one device.
Since the party guest where arriving I decided for regular sync.

I have also experienced this but assumed it would be happening with regular sync also.

I'll do some further testing also

markm9999
2018-05-26, 00:13
I just noticed that the number of players went from 6 to 8 after re-installing the plugin again.

I removed the plugin an the number of players stayed the same - 8.

Also after removal, parsing server.prefs for just player names, I see a 'Group' and 'Group 2'

It doesn't appear that removing the plugin actually removes any old settings. I had 2 groups originally, but they had actual names.

philippe_44
2018-05-26, 00:21
I just noticed that the number of players went from 6 to 8 after re-installing the plugin again.

I removed the plugin an the number of players stayed the same - 8.

Also after removal, parsing server.prefs for just player names, I see a 'Group' and 'Group 2'

It doesn't appear that removing the plugin actually removes any old settings. I had 2 groups originally, but they had actual names.

Removing plugins never removes prefs files.

philippe_44
2018-05-26, 00:37
Sorry, forgot to add log entries for previous post...


[18-05-26 02:54:05.8676] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xef9df84)
[18-05-26 02:55:20.0128] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xe90314c)
[18-05-26 02:56:35.0131] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xefc1e84)
[18-05-26 02:57:50.0151] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xefc2a5c)
[18-05-26 02:59:05.0192] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at C:\ProgramData\Squeezebox\Cache\InstalledPlugins/Plugins/Groups/Plugin.pm line 170.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0xefc2cfc)


I think your groups.prefs is corrupted (in /var/lib/squeezeboxserver/prefs/plugin). You should stop LMS, delete it and restart. As said in other post, removing plugin does not remove prefs files

mherger
2018-05-26, 04:51
> I think your groups.prefs is corrupted (in
> /var/lib/squeezeboxserver/prefs/plugin). You should stop LMS, delete it
> and restart. As said in other post, removing plugin does not remove
> prefs files

But you probably still should check whether that $master is defined on
that line, if only to not have the web UI hang.

--

Michael

markm9999
2018-05-26, 08:00
So far, after removing all the players from server.prefs that should automatically be removed and deleting groups.prefs, and allowing it to be recreated, I have experienced WAY BELOW MY 'normal' CPU load, WAY faster startup and shutdowns.


CPU Load 5%-40% = With Plugin (Before)
CPU Load 2%-5% = Without Plugin (Before)
CPU Load 0.5-1.0% = With Plugin (Now)

Startup 3-5 minutes = With Plugin (Before)
Startup 2-3 minutes = Without Plugin (Before)
Startup ~1 minute = With Plugin (Now)

Shutdown 1-2 minutes = With or without Plugin (Before)
Shutdown <1 minute = With Plugin (Now)




The server.prefs file filled with players were not auto-removed was DEFINITELY causing a MAJOR performance issue, along with something in the groups.prefs

Also it should be noted, none of the removed players was in either of the Grouped players.

EDIT:
For future reference, all loads posted are from Task Manager within the VM, and after a few minutes to give the system time to 'settle' and WITHOUT any players playing music.
Specs: Windows 2012 R2 Virtual Machine, 8 processors, 6GB memory (VMware ESXi, 6.0.0, 3620759, Intel Xeon CPU E31240 @ 3.30GHz, Logical Processors: 8)

philippe_44
2018-05-26, 12:07
> I think your groups.prefs is corrupted (in
> /var/lib/squeezeboxserver/prefs/plugin). You should stop LMS, delete it
> and restart. As said in other post, removing plugin does not remove
> prefs files

But you probably still should check whether that $master is defined on
that line, if only to not have the web UI hang.

--

Michael

Agreed - I made the change and will publish it soon (need to validate a few other modifications in other plugins)

markm9999
2018-05-27, 11:11
Sorry to say but the players individually in sync works pretty good after the initially start which take a few seconds. But when they are in group player they are not really in sync, you hear a kind of echo effect when you are able to hear more than one device.
Since the party guest where arriving I decided for regular sync.

Okay, I took a look at the 'normal' sync settings and noticed what I think might be the issue. My 'RELATIVE VOLUME SYNCHRONIZATION' is OFF, but if I turn it ON it seems like the players are constantly 'adjusting' their volume levels.

This constant 'hunting' of the volume on the other players is what I think is causing what sounds like a phase/time shift between the players.
This is all kind of weird to me. You would think that the volume would not get adjusted unless/until some action was taken on the lead device.

When using 'Groups', adjusting the volume of the group does adjust all the players, so my guess is Groups has 'RELATIVE VOLUME SYNCHRONIZATION' enabled.

Perhaps this option should be exposed when setting up a group so it could be disabled if desired.

25087

philippe_44
2018-05-27, 12:03
Okay, I took a look at the 'normal' sync settings and noticed what I think might be the issue. My 'RELATIVE VOLUME SYNCHRONIZATION' is OFF, but if I turn it ON it seems like the players are constantly 'adjusting' their volume levels.

This constant 'hunting' of the volume on the other players is what I think is causing what sounds like a phase/time shift between the players.
This is all kind of weird to me. You would think that the volume would not get adjusted unless/until some action was taken on the lead device.

When using 'Groups', adjusting the volume of the group does adjust all the players, so my guess is Groups has 'RELATIVE VOLUME SYNCHRONIZATION' enabled.

Perhaps this option should be exposed when setting up a group so it could be disabled if desired.

25087

Ah ... where does these sync options come from? Is this a different plugin? I’ve never seen them before


Envoyť de mon iPad en utilisant Tapatalk

kidstypike
2018-05-27, 13:04
Ah ... where does these sync options come from? Is this a different plugin? Iíve never seen them before


Envoyť de mon iPad en utilisant Tapatalk

The SyncOptions plugin by Peter Watkins.

philippe_44
2018-05-27, 13:08
Ah ... where does these sync options come from? Is this a different plugin? I’ve never seen them before

Envoyť de mon iPad en utilisant Tapatalk

Oh I see ... you both have Peter Watkins SyncOptions plugin. I've never used it before but I had a look at the code. Unfortunately, both are highly incompatible as they compete to handle volume and power. Peter already has a workaround to make it compatible with iPeng, which has a similar issue. It requires a simple modification to his plugin, but it's his, so I can't do that for him

philippe_44
2018-05-27, 18:39
Okay, I took a look at the 'normal' sync settings and noticed what I think might be the issue. My 'RELATIVE VOLUME SYNCHRONIZATION' is OFF, but if I turn it ON it seems like the players are constantly 'adjusting' their volume levels.

This constant 'hunting' of the volume on the other players is what I think is causing what sounds like a phase/time shift between the players.
This is all kind of weird to me. You would think that the volume would not get adjusted unless/until some action was taken on the lead device.

When using 'Groups', adjusting the volume of the group does adjust all the players, so my guess is Groups has 'RELATIVE VOLUME SYNCHRONIZATION' enabled.

Perhaps this option should be exposed when setting up a group so it could be disabled if desired.



If you want to give it a try, I've made a few changes to Peter's plugin in the attached file, but I really only did a 10s test which seems to work. When players are sync'd through a group player virtual player, then the volume/power management by SyncOptions are disabled but as soon a they are synchronized "manually", it applies again. Replace the Plugin.pm in /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/SyncOptions by this one and let me know if it works

markm9999
2018-05-27, 18:44
Oh I see ... you both have Peter Watkins SyncOptions plugin. I've never used it before but I had a look at the code. Unfortunately, both are highly incompatible as they compete to handle volume and power. Peter already has a workaround to make it compatible with iPeng, which has a similar issue. It requires a simple modification to his plugin, but it's his, so I can't do that for him

Umm, I'm confused.

To clarify :
[QUOTE=philippe_44;914352]"both are highly incompatible"?
Groups and SyncOptions plugins?

And


"Peter already has a workaround to make it compatible with iPeng"?

This is so the 'SyncOptions plugin' and 'iPeng' don't compete, right?

If that's the case, are you says each plugin (Groups, SyncOptions, and others, along with software controllers like iPeng et. al.) all need to be either run independently OR take each other into account - even though I'm using one or the other plugin at a given time?

philippe_44
2018-05-27, 20:28
Umm, I'm confused.

To clarify :

Groups and SyncOptions plugins?

And


This is so the 'SyncOptions plugin' and 'iPeng' don't compete, right?

If that's the case, are you says each plugin (Groups, SyncOptions, and others, along with software controllers like iPeng et. al.) all need to be either run independently OR take each other into account - even though I'm using one or the other plugin at a given time?

Yes - they are mutually exclusive unless they are programmatically made to co-exist.

SyncOptions "traps" the volume change function of LMS so that, when the volume is changed on *any* player, then it changes proportionally the volume on all the other players synchronized with it. And you cannot activate it for one player and not the others, seems to.

The Group Player creates a "virtual player" and synchronises (creates a sync group) all the real players in the group as soon as you start to play on it. The volume of the virtual player is the average of all the real players. Group Players also trap the LMS volume function (traps are chained) so when you change volume or a virtual players, all real players change proportionally, when you change the volume of one real player, the volume of the virtual player (the average) is recalculated - it only happens when the group is assembled, this dynamic difference is they key of Group Players that I really needed for myself.

So you can see that this conflicts with SyncOptions, they both try to synchronize volume, but in a different and incompatible way, hence the funny volume catchup.

I can't (at least I don't know how yet) block SyncOptions from the Group Players (it will trap volume changes either before or after me), but I can easily, in SyncOptions, disable the volume (and power) handling as soon as a sync group is headed by a virtual player.

And yes, SyncOptions is aware of iPeng which handles volume a similar way and avoid doing anything when volume command comes from iPeng. The changes I've posted above makes SyncOptions aware of Group Player, and it seems to me that it must be done this way, making Group Player aware of SyncOptions will not work

Hop this clarifies

markm9999
2018-05-30, 07:57
Sorry for the delayed responses - life always seems to get in the way...

I cannot test this mod out till this weekend, but I'll give it a try and let you know.

Thanks for the detail explaination. I just thought it weird this would apply since my SyncOptions settting, is set to NOT synchronize the volumes.

slartibartfast
2018-07-23, 06:15
I just played a track using a group player using three devices. When I stopped the playback the volume of all three players was set to zero. Anyone else seen this?

Sent from my SM-G900F using Tapatalk

slartibartfast
2018-07-25, 02:45
I just tried this again and this time after stopping playback of the group one of my radios had it's volume set to zero while the other two players were unaffected. There is nothing in the debug log to indicate what happens when the volume is restored.
I just played a track using a group player using three devices. When I stopped the playback the volume of all three players was set to zero. Anyone else seen this?

Sent from my SM-G900F using Tapatalk

Sent from my SM-G900F using Tapatalk

slartibartfast
2018-07-25, 02:57
I just tried this again and this time after stopping playback of the group one of my radios had it's volume set to zero while the other two players were unaffected. There is nothing in the debug log to indicate what happens when the volume is restored.

Sent from my SM-G900F using Tapatalk This seems to be a similar issue to the one reported back in January in this post where the volume goes to zero on group break up. I have also seen volume go to 100 on group assembly (quite frightening on a Radio).
https://forums.slimdevices.com/showthread.php?p=904246

Sent from my SM-G900F using Tapatalk

philippe_44
2018-07-25, 03:28
This seems to be a similar issue to the one reported back in January in this post where the volume goes to zero on group break up. I have also seen volume go to 100 on group assembly (quite frightening on a Radio).
https://forums.slimdevices.com/showthread.php?p=904246

Sent from my SM-G900F using Tapatalk

Can you tell me the exact list of other plugins that you have which might interfere? I need that to investigate

slartibartfast
2018-07-25, 04:00
Can you tell me the exact list of other plugins that you have which might interfere? I need that to investigateOK here is the list of my plugins. I don't have any third party sync plugins.
https://uploads.tapatalk-cdn.com/20180725/2ae9a8bfb716eda1e81129e68f1f9e2c.jpg

Sent from my SM-G900F using Tapatalk

philippe_44
2018-07-25, 22:19
OK here is the list of my plugins. I don't have any third party sync plugins.

Sent from my SM-G900F using Tapatalk

Took me a few times re-reading the code but I think I got it. The problem was likely happening for players that were in pause before a group including them was started then stopped. I was using the "physical" volume, which is 0 in pause, where I should use the preference volume. Can you please verify with existing version that this is the way to reproduce the problem and upgrade to 0.5.3

slartibartfast
2018-07-25, 23:36
Took me a few times re-reading the code but I think I got it. The problem was likely happening for players that were in pause before a group including them was started then stopped. I was using the "physical" volume, which is 0 in pause, where I should use the preference volume. Can you please verify with existing version that this is the way to reproduce the problem and upgrade to 0.5.3Excellent. I started playing a group including my paused Touch and on stopping the volume was set to zero. I didn't even consider the original state of the players but that explains why the issue appeared to be random. Good detective work. I will try the update later.

Sent from my SM-G900F using Tapatalk

slartibartfast
2018-07-26, 00:47
Took me a few times re-reading the code but I think I got it. The problem was likely happening for players that were in pause before a group including them was started then stopped. I was using the "physical" volume, which is 0 in pause, where I should use the preference volume. Can you please verify with existing version that this is the way to reproduce the problem and upgrade to 0.5.3Is 0.53 available yet?

Sent from my SM-G900F using Tapatalk

philippe_44
2018-07-26, 03:53
Is 0.53 available yet?

Sent from my SM-G900F using Tapatalk

Yes

slartibartfast
2018-07-26, 04:09
YesI can't see the update in LMS.

Sent from my SM-G900F using Tapatalk

slartibartfast
2018-07-26, 05:04
YesGot it now and can confirm the issue is fixed. [emoji3]

Sent from my SM-G900F using Tapatalk

philippe_44
2018-07-31, 21:00
Put it yesterday in dev repository. It allows playlist transfer between Players/Groups, compatible in the tests I've made with MWWM and iPeng. It's slower than when you do transfer between real players, but works. Feedback welcome

cdmackay
2018-08-01, 09:03
Belatedly discovered this plugin; very pleased with it, thanks very much indeed.

one question:


Hi there (@Pippin perhaps),

any status regarding the having the name and model supported by the IckStream plugin?


Thanks for the reminder.
Yes, I'll look into it (and we're going to support it), hopefully I can do that tomorrow.

Did this ever happen? I'm seeing my grouped player listed under "Unsupported players" in the Ickstream settings.

atrocity
2018-08-01, 18:49
I'm seeing my grouped player listed under "Unsupported players" in the Ickstream settings.

I finally tried the plugin and got a message about "unsupported" with Pandora.

Other than that (a VERY minor issue for me), I think it's terrific and am kicking myself that I took forever to give it a try.

philippe_44
2018-08-04, 11:58
It now works with MWWM, iPeng built-in switch (with some limitation when swithing from a Group to a player within that Group). For compatibility with Switch Player plugin, you need to use my modified version of Triode's plugin. It's versioned 0.4 and it is either in the 3rd party repo or in my repo. Triodeís version must be removed first

Tomsen77
2018-08-20, 03:00
Plugin Update 0.70:


[18-08-20 11:51:30.6441] main::init (387) Starting Logitech Media Server (v7.9.1, 1504317335, Mon Sep 4 22:13:00 UTC 2017) perl 5.024000 - i686-linux
[18-08-20 11:51:33.7341] Slim::bootstrap::tryModuleLoad (286) Warning: Module [Plugins::Groups::Plugin] failed to load:
Experimental keys on scalar is now forbidden at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/StreamingController.pm line 252.
Compilation failed in require at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 17.
BEGIN failed--compilation aborted at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 17.
Compilation failed in require at (eval 920) line 1.
BEGIN failed--compilation aborted at (eval 920) line 1.

[18-08-20 11:51:33.7400] Slim::Utils::PluginManager::load (323) Error: Couldn't load Plugins::Groups::Plugin

AngloCuencano
2018-08-20, 07:13
Plugin Update 0.70:


[18-08-20 11:51:30.6441] main::init (387) Starting Logitech Media Server (v7.9.1, 1504317335, Mon Sep 4 22:13:00 UTC 2017) perl 5.024000 - i686-linux
[18-08-20 11:51:33.7341] Slim::bootstrap::tryModuleLoad (286) Warning: Module [Plugins::Groups::Plugin] failed to load:
Experimental keys on scalar is now forbidden at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/StreamingController.pm line 252.
Compilation failed in require at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 17.
BEGIN failed--compilation aborted at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 17.
Compilation failed in require at (eval 920) line 1.
BEGIN failed--compilation aborted at (eval 920) line 1.

[18-08-20 11:51:33.7400] Slim::Utils::PluginManager::load (323) Error: Couldn't load Plugins::Groups::Plugin

I get this same error.

Freddy
2018-08-23, 11:01
Running 0.7.1 I Canīt create new group.

[18-08-23 19:49:47.6620] Slim::Web::JSONRPC::requestMethod (455) 00:04:20:16:64:d5: request not dispatchable!
[18-08-23 19:52:18.9769] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635bb5913f0 )
[18-08-23 19:52:27.6679] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635b8fdf398 )
[18-08-23 19:53:42.0097] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635be398ee0 )
[18-08-23 19:53:47.1395] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635bdd159c0 )
[18-08-23 19:56:28.4057] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635b94e4db0 )
[18-08-23 19:57:43.1202] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635be521248 )
[18-08-23 19:58:58.0828] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635be4f59a8 )

philippe_44
2018-08-23, 19:27
Running 0.7.1 I Canīt create new group.

[18-08-23 19:49:47.6620] Slim::Web::JSONRPC::requestMethod (455) 00:04:20:16:64:d5: request not dispatchable!
[18-08-23 19:52:18.9769] Slim::Networking::IO::Select::__ANON__ (131) Error: Select task failed calling Slim::Web::HTTP::processHTTP: Can't call method "get" on an undefined value at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 302.
; fh=Slim::Web::HTTP::ClientConn=GLOB(0x5635be4f59a8 )

Should be fine now - I'm a bit surprised that this did not show up before. What LMS / Perl version do you use?

philippe_44
2018-08-23, 19:28
Plugin Update 0.70:


[18-08-20 11:51:30.6441] main::init (387) Starting Logitech Media Server (v7.9.1, 1504317335, Mon Sep 4 22:13:00 UTC 2017) perl 5.024000 - i686-linux
[18-08-20 11:51:33.7341] Slim::bootstrap::tryModuleLoad (286) Warning: Module [Plugins::Groups::Plugin] failed to load:
Experimental keys on scalar is now forbidden at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/StreamingController.pm line 252.
Compilation failed in require at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 17.
BEGIN failed--compilation aborted at /volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/Groups/Plugin.pm line 17.
Compilation failed in require at (eval 920) line 1.
BEGIN failed--compilation aborted at (eval 920) line 1.

[18-08-20 11:51:33.7400] Slim::Utils::PluginManager::load (323) Error: Couldn't load Plugins::Groups::Plugin


I get this same error.

Solved

Freddy
2018-08-25, 01:40
Should be fine now - I'm a bit surprised that this did not show up before. What LMS / Perl version do you use?


Yes working now, thanks!
Iīm running:

Ubuntu 18.04.1 LTS
perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi
Logitech Media Server Version: 7.9.1 - 1522249619 @ Wed Mar 28 17:14:23 CEST 2018

woodster
2018-08-27, 04:23
Belatedly discovered this plugin; very pleased with it, thanks very much indeed.

one question:





Did this ever happen? I'm seeing my grouped player listed under "Unsupported players" in the Ickstream settings.

Hi,
No I don't thinks do... would be nice though...

woodster
2018-08-29, 02:51
Hi,
No I don't thinks do... would be nice though...

Any update?

cpd73
2018-10-08, 09:10
Probably a long shot, but can this plugin be managed via the JSONRPC interface? As in create groups, rename, delete, list members, change members, etc? I'm developing a web UI, and would be nice if this could configure group players. I use ["can", "playergroups", "items", "?"] to detect if this plugin is active.

philippe_44
2018-10-11, 09:52
Probably a long shot, but can this plugin be managed via the JSONRPC interface? As in create groups, rename, delete, list members, change members, etc? I'm developing a web UI, and would be nice if this could configure group players. I use ["can", "playergroups", "items", "?"] to detect if this plugin is active.

I'm unlikely to develop that, I already have too much to do. I might not be a lot, but I'm not used to that part of plugin additions. So if you want to give it a shot, I'll be happy to integrate that in the plugin later

cpd73
2018-10-11, 11:41
I'm unlikely to develop that, I already have too much to do. I might not be a lot, but I'm not used to that part of plugin additions. So if you want to give it a shot, I'll be happy to integrate that in the plugin later

I was mainly asking if it was already possible - but from my investigations, and your reply, it looks not. I'll look into this later (added to my TODO) - have many more things to do before getting to this.

philippe_44
2018-10-11, 20:42
I was mainly asking if it was already possible - but from my investigations, and your reply, it looks not. I'll look into this later (added to my TODO) - have many more things to do before getting to this.

I'm sure you do! Good luck with your development

philippe_44
2018-12-19, 23:05
It's embarrassing but on a new pi 3b+ raspian install, when I add my Group Players plugin, I can't get the separation line anymore between the real players and the groups (per what you did Michael here https://forums.slimdevices.com/showthread.php?106960-UI-change-for-sync-groups&p=903109&viewfull=1#post903109). The JS is here, and I don't see an error in the log. I can't figure out what I'm missing ...

(Latest nightly of LMS)

mherger
2018-12-20, 00:55
> It's embarrassing but on a new pi 3b+ raspian install, when I add my

That install only? I bet it's a recent 7.9.2?

> Group Players plugin, I can't get the separation line anymore between
> the real players and the groups (per what you did Michael here
> https://forums.slimdevices.com/showthread.php?106960-UI-change-for-sync-groups&p=903109&viewfull=1#post903109).
> The JS is here, and I don't see an error in the log. I can't figure out
> what I'm missing ...

When you say "the JS is there": in the browser? Wiped all caches?

--

Michael

philippe_44
2018-12-20, 11:21
> It's embarrassing but on a new pi 3b+ raspian install, when I add my

That install only? I bet it's a recent 7.9.2?

> Group Players plugin, I can't get the separation line anymore between
> the real players and the groups (per what you did Michael here
> https://forums.slimdevices.com/showthread.php?106960-UI-change-for-sync-groups&p=903109&viewfull=1#post903109).
> The JS is here, and I don't see an error in the log. I can't figure out
> what I'm missing ...

When you say "the JS is there": in the browser? Wiped all caches?

--

Michael

Thanks Michael, I'm an idiot, it was a cache problem

mherger
2018-12-20, 14:22
> Thanks Michael, I'm an idiot, it was a cache problem
No worries. It happens to us all :-D

--

Michael

s25a
2019-01-25, 00:28
Hi,

@ Philippe: Thank you so much for this great plugin :-) This is one of the most helpful plugins
I have installed the latest LMS 7.9.2 from the nighly Section (24/January) on a Debian 9.7 Server.

I than installed the Plugin release 0.7.6 and restarted the server. Than created one Test group and added to Players (PlayerA and PlayerB)

I than did a few tests:

1) Started Music in Group test: PlayerA and PlayerB are immediately synced with test and Music is playing...Fantastic
2) Than choose PlayerB started Music: PlayerB is unsynced and plays new Music. PlayerA is still synced with group test playing the other Music.
3) Than choose again group test and started again (new) music and it does not re sync PlayerB with group test.
The only way to get PlayerB synced again is to choose PlayerB, clear the playlist of this Player (or Power it Off) than go back to Group test and start the music again. Than it is re synced.

Is this the expected behavior? Is there a way to always sync the Players when starting new music in group?

Thanks a lot and again Thumbs up for this great Plugin :-)

S


Edit

Another information I forgot to mention:

- When Group test is playing with both synced Players and I go to PlayerA Play new music and than to PlayerB and play new music bot are un synced. That is what I expected. However when I choose group test again and start new music only one of the Players is synced and plays new Music. The other still unsynced an plays the music that was choosen before. I am not 100% sure but it seems it always the PlayerA that sync again.

Both Players have the same version installed: (Updated Picore V4)

Player-Modell: SqueezeLite
Gerštetyp: squeezelite
Firmware: v1.9.0-1121-pCP
IP-Adresse des Players: 10.0.0.32
MAC-Adresse des Players: b8:27:eb:c1:6b:d9

philippe_44
2019-01-25, 14:22
Hi,

@ Philippe: Thank you so much for this great plugin :-) This is one of the most helpful plugins
I have installed the latest LMS 7.9.2 from the nighly Section (24/January) on a Debian 9.7 Server.

I than installed the Plugin release 0.7.6 and restarted the server. Than created one Test group and added to Players (PlayerA and PlayerB)

I than did a few tests:

1) Started Music in Group test: PlayerA and PlayerB are immediately synced with test and Music is playing...Fantastic
2) Than choose PlayerB started Music: PlayerB is unsynced and plays new Music. PlayerA is still synced with group test playing the other Music.
3) Than choose again group test and started again (new) music and it does not re sync PlayerB with group test.
The only way to get PlayerB synced again is to choose PlayerB, clear the playlist of this Player (or Power it Off) than go back to Group test and start the music again. Than it is re synced.

Is this the expected behavior? Is there a way to always sync the Players when starting new music in group?

Yes this is the expected behavior. In fact, it was pretty complicated to get there. The idea is that if something different starts to be played on a group member, then it means that the user intentionally wants to isolate it form the group and don't want the next track of the group player to take over again. Only when stopped and restarted will the group player 'acquire' again the member that left previously *if* this member is not playing anymore - it's supposed to indicate that you really want to get it back.


- When Group test is playing with both synced Players and I go to PlayerA Play new music and than to PlayerB and play new music bot are un synced. That is what I expected. However when I choose group test again and start new music only one of the Players is synced and plays new Music. The other still unsynced an plays the music that was choosen before. I am not 100% sure but it seems it always the PlayerA that sync again.

I'm not fully sure I follow the use case, but I think it's as described before. When a group is reformed, if a member has been previously isolated *and* is playing, then I assume that the user do not want to re-acquire it, so I leave it alone. For example, I have a group named "1st Floor" that includes a player that is in my "Master Bedroom". Sometimes I play on the whole 1st floor while I'm in my home office or I roam accross the 1st floor. But somebody (guess who) might be in the bedroom and start to play something else. If I switch track on "1st Floor" group, she'd be pretty irritated if I interrupt what she was listening to. Now, if what she was listening has ended and nothing more is playing, I'll will re-acquire that player and she might still be irritated, but that's negotiable and then she can power off the player, in which case I won't take over it ...

s25a
2019-01-27, 03:50
Yes this is the expected behavior. In fact, it was pretty complicated to get there. The idea is that if something different starts to be played on a group member, then it means that the user intentionally wants to isolate it form the group and don't want the next track of the group player to take over again. Only when stopped and restarted will the group player 'acquire' again the member that left previously *if* this member is not playing anymore - it's supposed to indicate that you really want to get it back.

Ok thanks for explaining that in detail. I fully agree. If someone wants to isolate it than it should not be overwritten by someone else. Would it be possible to add an option of behavior?
I mean the standard could be what is already implemented the other one would be to force overwrite it again. For example if you name the Group "PartyMode" it would be a kind of reset to play the same Music in all rooms. (Just as an example). Of course I do not know how complicated this is - if not - it would be wonderful to have such an option on a group level.



I'm not fully sure I follow the use case, but I think it's as described before. When a group is reformed, if a member has been previously isolated *and* is playing, then I assume that the user do not want to re-acquire it, so I leave it alone. For example, I have a group named "1st Floor" that includes a player that is in my "Master Bedroom". Sometimes I play on the whole 1st floor while I'm in my home office or I roam accross the 1st floor. But somebody (guess who) might be in the bedroom and start to play something else. If I switch track on "1st Floor" group, she'd be pretty irritated if I interrupt what she was listening to. Now, if what she was listening has ended and nothing more is playing, I'll will re-acquire that player and she might still be irritated, but that's negotiable and then she can power off the player, in which case I won't take over it ...


I will try to explain it with some screenshots...

We have PlayerA, PlayerB and Test (which includes PlayerA and PlayerB) (Screenshot 1)

1) Start to Play Music on test: as expected both Players are grouped in Test (Screenshot 2)
2) Start to Pay a different track on PlayerA: As expected the Player is isolated (Screenshot 3)
3) Start to Play another track on PlayerB: As Expected both Players are isolated and Play different Music (Screenshot 4)

4) Start to Play again on Test....
Now the behavior is different...as you can see on the (Screenshot 5) only the PlayerB gets synchronized again. PlayerA still plays as an isolated device. According to your answer above I would expect no reaction cause both Players have been isolated before.

Thanks again

S
26632
26631
26630
26633
26634

philippe_44
2019-01-27, 12:21
Ok thanks for explaining that in detail. I fully agree. If someone wants to isolate it than it should not be overwritten by someone else. Would it be possible to add an option of behavior?
I mean the standard could be what is already implemented the other one would be to force overwrite it again. For example if you name the Group "PartyMode" it would be a kind of reset to play the same Music in all rooms. (Just as an example). Of course I do not know how complicated this is - if not - it would be wonderful to have such an option on a group level.

I will think about that, it might be doable although there might be some limitations like it will only happen if you pause the group then change track. If you just change track, it might not work. Iíll have to look into these details

4) Start to Play again on Test....
Now the behavior is different...as you can see on the (Screenshot 5) only the PlayerB gets synchronized again. PlayerA still plays as an isolated device. According to your answer above I would expect no reaction cause both Players have been isolated before.

Youíre correct, B should remain isolated, it looks like a bug. There are some complicated side effects when a group has no member ...

s25a
2019-01-27, 13:21
Hi,

thanks a lot. If you need any further testing or log files please let me know

S

philippe_44
2019-01-27, 22:20
Hi,

thanks a lot. If you need any further testing or log files please let me know

S

Can you give a try to version 0.8.0 in the dev repository? I don't have much time to test now, but it should solve the issue (note that when you isolate the last member, the group will stop) and add the feature of forcing assembly of all members if option is checked

s25a
2019-01-28, 04:47
Hi Philippe,

thanks a lot for this super fast update. I installed the version 0.8 and it seems it does it now. (Both the fix and the new feature)
Let me test a little bit and I will come back to you and report.

Thanks

S

s25a
2019-01-31, 00:30
Hi Philippe,

no further issues since the update 0.8.0. I tested with and without the overwriting and both showed the expected behaviour.

Thanks S

BosseJ
2019-02-01, 15:03
I restarted my LMS tonight and noticed in the server log that the groups plugin had an update available, so I restarted again. When I checked the plugin was named PLUGIN_GROUPS_NAME(v0.8.1) under Settings -> plugins. Similarly the Settings -> Advanced listed the groups plugin settings under an anonymous (blank) heading in the drop-down list. The server log complained about missing strings etc.
However, the plugin functioned exactly as before, without any error. (The prefs file were untouched after all.)
I'll attach the server log, extract from when I ordered an install of the plugin.

philippe_44
2019-02-02, 19:15
I restarted my LMS tonight and noticed in the server log that the groups plugin had an update available, so I restarted again. When I checked the plugin was named PLUGIN_GROUPS_NAME(v0.8.1) under Settings -> plugins. Similarly the Settings -> Advanced listed the groups plugin settings under an anonymous (blank) heading in the drop-down list. The server log complained about missing strings etc.
However, the plugin functioned exactly as before, without any error. (The prefs file were untouched after all.)
I'll attach the server log, extract from when I ordered an install of the plugin.

Corrected - crappy DOS/Linux file format problem

BosseJ
2019-02-03, 03:35
Corrected - crappy DOS/Linux file format problem

Thanks, works perfectly. Very clean log :-)

chris.cowap
2019-02-09, 04:45
Would it be possible to have the option for individual player settings changes based on the grouping ?
What i am looking for, is to have a pair of devices set as a Left / Right stereo pair only when playing grouped.
Then when not playing in the named player group, they would revert back to their normal config' - Stereo.

Great plugin. I am late to the party with this one too !

Many thanks
Chris

philippe_44
2019-02-10, 00:13
Would it be possible to have the option for individual player settings changes based on the grouping ?
What i am looking for, is to have a pair of devices set as a Left / Right stereo pair only when playing grouped.
Then when not playing in the named player group, they would revert back to their normal config' - Stereo.

Great plugin. I am late to the party with this one too !

Many thanks
Chris

I'll think about it - Problem is that it makes the UI clumsy as you want to be able to set that independently for each group the player is member of ...

philippe_44
2019-02-12, 23:57
I'll think about it - Problem is that it makes the UI clumsy as you want to be able to set that independently for each group the player is member of ...

Done in 0.9.0 - You have a menu in the normal "Player" tab of LMS' settings and here you'll find an item "Groups". The rest should be straightforward

philippe_44
2019-02-15, 05:01
Done in 0.9.0 - You have a menu in the normal "Player" tab of LMS' settings and here you'll find an item "Groups". The rest should be straightforward

Feedback to confirm or not that this works would be appreciated

Shozzer
2019-02-15, 10:32
Feedback to confirm or not that this works would be appreciated

Works for me! Thanks for this - this is s useful addition.

s2kiwi
2019-02-21, 12:29
Just popping in to say this plugin has completely revolutionised how we use Squeezebox in our house.

I've used it since early on, but looking back in hindsight it's had a much bigger impact than I expected. It's allowed me to easily set up Arduino arduino buttons which control music on/off in groups of rooms, set up google home to run the main house group, etc. The simplicity of calling a single player via the command line and get a group has made my development significantly easier.

So I thought I'd just pop in and say thanks!

philippe_44
2019-03-03, 14:57
Just popping in to say this plugin has completely revolutionised how we use Squeezebox in our house.

I've used it since early on, but looking back in hindsight it's had a much bigger impact than I expected. It's allowed me to easily set up Arduino arduino buttons which control music on/off in groups of rooms, set up google home to run the main house group, etc. The simplicity of calling a single player via the command line and get a group has made my development significantly easier.

So I thought I'd just pop in and say thanks!

Thanks - Kind words always appreciated :)

Paul Webster
2019-03-09, 03:43
Just thought of a use for Group Players and I think it will work well ... in essence a playlist switcher.
A bit of a special case but others might have something similar.
I have a set of shows that I listen to during each month ... typically 20+ hours of material each month.
So I now have a group player named for that playlist.
Then when I have a listening session I simply join that appropriate players to that group and start listening.
At the end of the session I simply Pause and then me or others use the regular players in whatever way we fancy ... then when I want to go back to my special stuff again I change the group membership to where ever I am for this new session and Resume.

Trying it out right now for the first time.

0815
2019-03-09, 12:13
Feedback to confirm or not that this works would be appreciated

Works like a charm. The new feature is what I have been missing so far.
I am using a pair of squeeze radios as a stereo output. To sync them I just need to change the UI of the players to the new group if I am controlling them in "stand-alone" mode.
And I can sync them now with other players as well.

Just a few ideas.


Please conciser an option to exclude a player from group volume control. I have several Jogglers where the volume is set to be fixed 100%. The volume should not be changed by group because its controlled by an amplifier.
If possible revert to the playback/group state prior to a new group controlling the device after the new group is switched off. Might be an issue... If I am playing a playlist on my stereo (two players L/R) group and the master group (all players) is kicking in, the players revert to the playlist, but seems to loose the old group. Means, the player are still on but do not start playback at the point where the master group taking controll.

philippe_44
2019-03-09, 12:42
Just a few ideas.

- Please conciser an option to exclude a player from group volume control. I have several Jogglers where the volume is set to be fixed 100%. The volume should not be changed by group because its controlled by an amplifier.

Not sure I'm getting this. Normally, if you've set the volume of a player @ fixed output, the value is ignored in average group volume computation. So volume change of the group will only affect players whose volume is not fixed


If possible revert to the playback/group state prior to a new group controlling the device after the new group is switched off. Might be an issue... If I am playing a playlist on my stereo (two players L/R) group and the master group (all players) is kicking in, the players revert to the playlist, but seems to loose the old group. Means, the player are still on but do not start playback at the point where the master group taking controll.

Sorry, same I'm not getting this either. If group 1 contains players A,B and group 2 contains A,B,C,D. If group 1 is currently playing, and you start group 2, then players A and B are also switched to group 2. Means the last "group" to come in action always wins. But when group 2 stops, players return to playlist when they were not grouped *at all*, not to play list of group 1, that's true. Is this what you mean? Having them return to group 1 would create lots of side effects.

nickb
2019-03-10, 04:06
Great stuff - almost can't believe it hadn't been thought of before!

Thanks for this Philippe

s25a
2019-03-11, 00:16
Hi Philipp,

with regards to this post: https://forums.slimdevices.com/showthread.php?110214-Question-on-Tidal-Plugin&p=934363

I would love to use the Ickstream Plugin as a default to stream Tidal....(works much better that the official Tidal Plugin). Unfortunately not supported because of a different identifier.
If you don't mind and could implement an option to identify it in a different way and make it working with Ickstream Plugin it would be wonderful.

Thanks S