PDA

View Full Version : ANNOUNCE: Player Groups (alpha version)



philippe_44
2017-12-18, 22:58
This is a new plugin that I've been wanting to do a for a long while. Note that this thread is the alpha version, so if you are not comfortable with using unstable software, please wait for a stable version. I'm releasing this to get feedback with logs and help, not to hear "it does not work :)

So ... what is this about. I like very much LMS but the way groups are working does not fit my need. I have many different players, sometimes a couple in the same room, and more than one floor. Often, I want to play in "master bedroom" or in "first floor" or in "Family room" or in "full house". Everytime I want to change that, I need to build a group. "The Synchronizer" helps a lot, but that's still a manual process.

So this plugin creates new "virtual" players that are the combination of any real player. When a virtual player starts, the group is dynamically assembled and its disassembled when the track stops, all on the fly. That's about it, but a few things are to be known:

- By default, power on/off to a virtual player powers on/off all members
- Volume changes on the virtual player are applied to each member based on the change ratio. You can change the volume of individual members to adjust "base" relative volume
- If a player belongs to multiple virtual players, the player is allocated to the virtual that started the most recent play. Remaining players belonging to the other virtual group will continue unchanged
- When a virtual player stops, all members that were belonging to a "static" group are re-allocated to that group, but they will *not* play what's being played on remaining members of that static groups till next song starts
- If a member of a virtual player is stopped, unfortunately the virtual player stops as well (need a LMS change to avoid that)
- DO NOT SYNCHRONIZE A VIRTUAL PLAYER WITH ANOTHER PLAYER



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


Again, it's alpha, so there is a lot of issues and corner cases untested. I'm releasing this for receive help for test and isolate such corner cases, so please send me such feedback with as many details as possible about what happen and how it happened. It's not a lot of code, but it's playing with some deep core elements of LMS that I'm not very familiar with, so be patient

epoch1970
2017-12-19, 04:11
That's very interesting.
I relate this to the templating capability the Squeezy CLI tool provides with the thing called "groups" (eg "squeezy -group 1 -on"). Extremely useful to reset the audio players to a known sync configuration.


- If a player belongs to multiple virtual players, the player is allocated to the virtual that started the most recent play. Remaining players belonging to the other virtual group will continue unchanged
If I understand correctly this means the most recent virtual player could rob others from (some of) their players? If so, that sounds a bit contentious but time will tell.


- DO NOT SYNCHRONIZE A VIRTUAL PLAYER WITH ANOTHER PLAYER
But wouldn't that be the natural thing to do if you wanted to modify the configuration of a virtual player?


I will now end those pointless remarks and try the plugin. I'll let you know how it doesn't work ;)
Thanks!

philippe_44
2017-12-19, 07:26
That's very interesting.
I relate this to the templating capability the Squeezy CLI tool provides with the thing called "groups" (eg "squeezy -group 1 -on"). Extremely useful to reset the audio players to a known sync configuration.


If I understand correctly this means the most recent virtual player could rob others from (some of) their players? If so, that sounds a bit contentious but time will tell.

Yes, the most recent "robs" the player from groups, but only for duration of the track, which seems natural (it's a dynamic group)



But wouldn't that be the natural thing to do if you wanted to modify the configuration of a virtual player?

No, quite the opposite. In the plugin settings, you define what real players are part of the virtual player and when playback starts on that virtual player, the group is assembled. It is disassembled as soon as the playback stops. So you don't have to do anything manually, except the initial setup.

You can create a Virtual player named (eg) Master Bedroom that contains a Radio and a Duet. You can create another group named 1st floor that contains the same Radio and Duet, plus two Booms. You now see in the UI 6 players: 2 Booms, a Duet and a Radio, then Bedroom and 1st Floor.

When you play on Master Bedroom, track will be played on the duet and the radio. If you start to play on 1st floor, then the duet,radio and the 2 booms start playing. The duet and the radio stop playing what they where playing before.

The other way around, if you were playing on player 1st Floor and start playing on Master Bedroom, then the 2 Boom will continue playing whatever there were playing but the Radio and Duet will play whatever you asked them to play.

Finally, if you had a "static" group already configured in LMS with one of the Boom and the Radio, whenever you stop playing on 1st Floor and/or Master Bedroom players, this group will be re-assembled



I will now end those pointless remarks and try the plugin. I'll let you know how it doesn't work ;)
Thanks!
:)

FredFredrickson
2017-12-19, 08:15
Does this mean I can set an alarm for a virtual player and finally have the feature I have always dreamed of?

I want music alarms in the morning to ignore whatever syncs I had setup the night before.

I want the sync groups to autochange in the evening before it starts playing soft music for when I get home.

Are these possible?

philippe_44
2017-12-19, 08:34
Does this mean I can set an alarm for a virtual player and finally have the feature I have always dreamed of?

I want music alarms in the morning to ignore whatever syncs I had setup the night before.

I want the sync groups to autochange in the evening before it starts playing soft music for when I get home.

Are these possible?

I have to check if there is something for Alarm that I've not handled in my virtual player, but I think the answer is yes for both. Basically, you create a set of new players that are "virtual" but have all the attributes of a real player.

Every virtual player has a list of real players as members and when something happen on that virtual player, the group is assembled on the fly. For your question 2-, you would need to play to a new "virtual player" that assembles the players you want.

I do that quite often. When I'm going home, I like to play podcast using some low quality ceiling speakers (powered by a PiCore) together with 2 booms to cover the whole house. I've created a virtual players made of this Picore and the 2 booms. One of that boom with a duet connected to good speakers are members of another virtual player "master bedroom" (names talks for itself).

Once I settle down to my bedroom, I use that virtual player to play to. No need to change groups anymore, my music only plays on the boom and the duet in my bedroom, the ceiling speakers and the other boom stay quiet and I don't have to do anything

Jeff07971
2017-12-19, 12:19
First of all thanks for this, it is certainly interesting.
The email notifying me of your announcement came in just as I was syncing 3 players while I did some cleaning and was saying to myself "I wish I could have groups of players" !!!

Some problems I have noticed:-
(In order of increasing seriousness (To Me :) ))

After using a group you cannot use synchronize on any former member of that group (do not appear in Sync menu in GUI) until the player is power cycled (software via LMS GUI) this may be due to my use of Syncoptions

I use some plugins to control some device options, these are Powersave,Reset Volume,Volumelock these no longer function on the grouped players.

LMS seems to transcode FLAC to MP3 (with LAME) for each member of a group despite the fact that all player can natively use FLAC (see attached logs)

I use the PowerswitchIII plugin to control the amplifier on one of my SB3 player this does not function when the SB3 is part of a group.
The PowerswitchIII can only be enabled from the player menu on the SB3. Because of this the SB3 is silent although playing fine.

Good News for FredFredrickson is that Alarms do seem to work OK (Although with the caveat of the PowerswitchIII problem)

Hope this is helpful, If you would like me to test things just PM me.

Jeff

24223

24224

philippe_44
2017-12-19, 22:39
First of all thanks for this, it is certainly interesting.
The email notifying me of your announcement came in just as I was syncing 3 players while I did some cleaning and was saying to myself "I wish I could have groups of players" !!!

Thanks very much for the feedback this is precisely what I need and it's super useful.


Some problems I have noticed:-
(In order of increasing seriousness (To Me [emoji4] ))

After using a group you cannot use synchronize on any former member of that group (do not appear in Sync menu in GUI) until the player is power cycled (software via LMS GUI) this may be due to my use of Syncoptions

I can't reproduce that. Can you describe your Syncoptions and exactly what's happening?


I use some plugins to control some device options, these are Powersave,Reset Volume,Volumelock these no longer function on the grouped players.

Likely solved, at least Volume although I'm not sure precisely what VolumeReset/Lock do (I need to read about these)


LMS seems to transcode FLAC to MP3 (with LAME) for each member of a group despite the fact that all player can natively use FLAC (see attached logs)

Solved


I use the PowerswitchIII plugin to control the amplifier on one of my SB3 player this does not function when the SB3 is part of a group.
The PowerswitchIII can only be enabled from the player menu on the SB3. Because of this the SB3 is silent although playing fine.

Very likely solved



Good News for FredFredrickson is that Alarms do seem to work OK (Although with the caveat of the PowerswitchIII problem)

Hope this is helpful, If you would like me to test things just PM me.

Jeff

mherger
2017-12-20, 02:41
Overall this is looking great! I'm still facing an issue I've mentioned
a few days ago due to a sprintf() expression and my oldish Perl version.
But I've sent you a pull request which fixes this.

One more "issue" I'm having is the terminology. The settings pages are
talking about "static groups". I have no idea what this is. What would
be "dynamic groups"? I tried to translate things, but it's becoming
complicated when you don't understand the meaning in the first place :-).

I'll keep playing with this. Thank you very much for your effort!

--

Michael

philippe_44
2017-12-20, 08:34
Overall this is looking great! I'm still facing an issue I've mentioned
a few days ago due to a sprintf() expression and my oldish Perl version.
But I've sent you a pull request which fixes this.

One more "issue" I'm having is the terminology. The settings pages are
talking about "static groups". I have no idea what this is. What would
be "dynamic groups"? I tried to translate things, but it's becoming
complicated when you don't understand the meaning in the first place :-).

I'll keep playing with this. Thank you very much for your effort!

--

Michael

I agree the terminology is not the best. I mean by static group a group in the traditional sense of LMS that is assembled manually by the user. As opposed to the group that are created by this plugin which only last during playback and disappear when the group player stops. Maybe temporary vs permanent is better? I don't know.

Thanks for the pull request, I'll merge it today. Do you think you could have a look at the small change I've suggested in LMS (see my message on the dťvelopper part of this forum)? I think it would be a better user experience if the group player does not stop when the user starts playing something else on one member of the group. I'm trying to test it but so far I've not been able to have the LMS version with source code to run

mherger
2017-12-20, 09:24
> Thanks for the pull request, I'll merge it today. Do you think you could
> have a look at the small change I've suggested in LMS (see my message on
> the développer part of this forum)?

Could you point me to the posting? I didn't see any suggestion...

--

Michael

philippe_44
2017-12-20, 10:14
> Thanks for the pull request, I'll merge it today. Do you think you could
> have a look at the small change I've suggested in LMS (see my message on
> the développer part of this forum)?

Could you point me to the posting? I didn't see any suggestion...

--

Michael

In that thread http://forums.slimdevices.com/showthread.php?106960-UI-change-for-sync-groups&p=901944&viewfull=1#post901944 I suggested that LMS call controller->stop($client) instead of controller->stop(), I would know what is the client asking for the stop and could act accordingly

Jeff07971
2017-12-20, 10:23
I have updated the plugin - thanks for that


After using a group you cannot use synchronize on any former member of that group (do not appear in Sync menu in GUI) until the player is power cycled (software via LMS GUI) this may be due to my use of Syncoptions
I can't reproduce that. Can you describe your Syncoptions and exactly what's happening?
Sorry I cannot reproduce this either although I could yesterday !



I use some plugins to control some device options, these are Powersave,Reset Volume,Volumelock these no longer function on the grouped players.
Likely solved, at least Volume although I'm not sure precisely what VolumeReset/Lock do (I need to read about these)


I use "Powersave" to switch the players off after 15mins of Pause or Stop
I use "Reset Volume" to set each player to a low volume (10 ATM) when it is switched on
I use "Volume Lock" to restrict the maximum volume on some players



LMS seems to transcode FLAC to MP3 (with LAME) for each member of a group despite the fact that all player can natively use FLAC (see attached logs)
Solved


Thanks - I can Confirm this is fixed



I use the PowerswitchIII plugin to control the amplifier on one of my SB3 player this does not function when the SB3 is part of a group.
The PowerswitchIII can only be enabled from the player menu on the SB3. Because of this the SB3 is silent although playing fine.
Very likely solved

Thanks - I can Confirm this is fixed

I have 3 players in a group called "Bathroom_Bedroom1_Lounge"
Bathroom is SB3
Bedroom1 is Rpi3 with Pcp3.22 with Jivelite on Rpi touchscreen and Lirc
Lounge is Rpi3 with Pcp3.22 with Jivelite display on TV and Lirc

I have experienced some other "Weirdies" IE pausing One of the group (lounge) via IR remote results in the player displaying "Paused" but is actually still playing.
Volume Reset does not seem to work (when Grouped) wether applied to the individual player or the Group

Sorry not to be any clearer but some of the "weirdies" are not always reproducible if I can I'll try some more ordered tests to try and define these more clearly.

Thanks for your work on this

slartibartfast
2017-12-20, 12:06
If I have a group consisting of two Radios how do I cause this group to break up when I stop play. They seem to remain in a sync group. If I try to play to one of the Radios both play. I think I must be missing something basic.

Sent from my SM-G900F using Tapatalk

Jeff07971
2017-12-20, 12:29
If I have a group consisting of two Radios how do I cause this group to break up when I stop play. They seem to remain in a sync group. If I try to play to one of the Radios both play. I think I must be missing something basic.

Sent from my SM-G900F using Tapatalk

Hmmm I just tried this with mine. (V0.1.3)

I had just stopped the "Group" all players had powered off. When I played BBC Radio 1 live on "Lounge" it started playing. The playlist on all 3 of the group were synced IE BBC Radio 1 Live but only "Lounge" playing.
With "lounge" still playing BBC R1 when I played BBC Radio 6 live on "Bedroom1" Lounge started playing this also "Bathroom"'s playlist was now BBC Radio 6 live but not playing.

Stopping "Lounge" also stops "Bedroom1"

Sync should stop at power off

slartibartfast
2017-12-20, 12:41
Hmmm I just tried this with mine. (V0.1.3)

I had just stopped the "Group" all players had powered off. When I played BBC Radio 1 live on "Lounge" it started playing. The playlist on all 3 of the group were synced IE BBC Radio 1 Live but only "Lounge" playing.
With "lounge" still playing BBC R1 when I played BBC Radio 6 live on "Bedroom1" Lounge started playing this also "Bathroom"'s playlist was now BBC Radio 6 live but not playing.

Stopping "Lounge" also stops "Bedroom1"

Sync should stop at power offI had to manually unsynchronize both players to return to the normal state.

Sent from my SM-G900F using Tapatalk

philippe_44
2017-12-20, 12:45
If I have a group consisting of two Radios how do I cause this group to break up when I stop play. They seem to remain in a sync group. If I try to play to one of the Radios both play. I think I must be missing something basic.

Sent from my SM-G900F using Tapatalk

The groups breaks up as soon as you stop playing or the track ends. In this version, it does NOT break up when you *pause* the virtual player

slartibartfast
2017-12-20, 12:45
How did you do that ?In the web UI from the player list at the top of the right pane. Synchronize is at the bottom of the list.

Sent from my SM-G900F using Tapatalk

Jeff07971
2017-12-20, 12:48
In the web UI from the player list at the top of the right pane. Synchronize is at the bottom of the list.

Sent from my SM-G900F using Tapatalk

Thanks, Yes I did that momentary lapse of thinking !! :)

Jeff07971
2017-12-20, 12:50
The groups breaks up as soon as you stop playing or the track ends. In this version, it does NOT break up when you *pause* the virtual player

That's probably a problem as neither the LMS Web GUI nor the SB3 remote have a "Stop" button. I do see the reasoning though !

philippe_44
2017-12-20, 12:52
That's probably a problem as neither the LMS Web GUI nor the SB3 remote have a "Stop" button. I do see the reasoning though !

You're right, I mean the 'stop' happens when you clean the playlist (in other cases as well, but that's details). So I'm changing that now so that in pause, the group is broken up as well.

slartibartfast
2017-12-20, 12:53
The groups breaks up as soon as you stop playing or the track ends. In this version, it does NOT break up when you *pause* the virtual playerI see. How would I stop playing as an alternative to pausing? Pause is the only option in Orange Squeeze. I tried long pressing pause but that did not work.

Another thing I noticed was that when I started playing to the group when a Radio was in a paused state I had to wake the Radio by short pressing the power button before it started to play.

Sent from my SM-G900F using Tapatalk

slartibartfast
2017-12-20, 14:21
You're right, I mean the 'stop' happens when you clean the playlist (in other cases as well, but that's details). So I'm changing that now so that in pause, the group is broken up as well.Nice work. Version. 0.1.4 is much more user friendly. Groups break up on pause and reform on play. This is a very welcome addition to LMS.

Sent from my SM-G900F using Tapatalk

Jeff07971
2017-12-21, 09:54
Nice work. Version. 0.1.4 is much more user friendly. Groups break up on pause and reform on play. This is a very welcome addition to LMS.

Sent from my SM-G900F using Tapatalk

Yup Agreed, nice work !

Reloaded LMS from scratch and carefully applied the plugins I use, all working well

philippe_44
2017-12-21, 14:24
I see. How would I stop playing as an alternative to pausing? Pause is the only option in Orange Squeeze. I tried long pressing pause but that did not work.

Another thing I noticed was that when I started playing to the group when a Radio was in a paused state I had to wake the Radio by short pressing the power button before it started to play.

Sent from my SM-G900F using Tapatalk


Nice work. Version. 0.1.4 is much more user friendly. Groups break up on pause and reform on play. This is a very welcome addition to LMS.

Sent from my SM-G900F using Tapatalk

Thanks - Since I've started to create plugins for LMS, I'm amazed by how flexible it is compared to any other platform. I think it was a very well designed solution which would have deserved a much broader adoption.

paul-
2017-12-22, 17:20
How are you creating the Virtual Player MAC address. Does this remain constant, even when off and the group is disassembled.

philippe_44
2017-12-22, 17:44
How are you creating the Virtual Player MAC address. Does this remain constant, even when off and the group is disassembled.

Yes, it's a random number when creating the player then it will never change until user delete the Virtual Player. So it's a reliable information that the whol system can use. I've run some test with iPeng and things seems to be fine so far. I need to verify some of the behavior when a member is powered off then on in iPeng while playing, it seems that it was taking over the mastership of the group, which is problematic, bu I need to confirm

paul-
2017-12-22, 18:11
It does seem take over the group. Powering a member off then on works okay, but playing a different track on the member player, changes the whole group.

philippe_44
2017-12-23, 00:12
I've upload version 0.1.9 which contains an important fix of a problem where playback could be shutering or not start at all on high bitrate formats

philippe_44
2017-12-23, 00:15
It does seem take over the group. Powering a member off then on works okay, but playing a different track on the member player, changes the whole group.

I'll test again but normally, when you play a new track on a member, only that member should be affected.

[edit]: it might not work if you have another plugin that is replacing Slim::Player::Source or Slim::Player::Playlist. Unfortunately, due to an issue I discover today, the replacement of Slim::Player::Source is mandatory now. But with that constraint in mind, I re-tested and can confirm that only one group member changes track, the rest continues whatever it was playing

philippe_44
2017-12-23, 15:01
One very cool feature, IMHO, I've realized with Groups is that I have a very large group (I know Michael, I have too many players ;)) so previously when I tried to play to all these synded together, my WiFi network would simply not keep up for large bitrate files (or spotify, seems that ogg is converted to PCM as not all players support vorbis).

I could set bitrate of one of the members, but then this limit would apply all the time, even when it plays alone, which is not what I want. Now, because a group/virtual player is seen by LMS as a real player, I can set bitrate limit for the virtual player only and LMS will apply such limit only when playing to that group - I can now stream to a very large group if I accept to transcode to lower quality (like 128-256k) and that makes sense at it is really a consequence of the size of group.

Happy :)

grimmace92
2017-12-27, 22:41
Philippe,

This is brilliant. I've been trying to sync players and integrate with Alexa and you just made my life so much easier. I can just playlist play the group that I created in your plugin by the groups MAC address. This is so awesome! I'll mess around with it some more tomorrow but when the music starts its pretty loud initially. I have to turn it down even though I have the volume at 2 in the LMS UI. I'm using your airplay plugin too if that matters. Awesome work!

philippe_44
2017-12-27, 23:43
Philippe,

This is brilliant. I've been trying to sync players and integrate with Alexa and you just made my life so much easier. I can just playlist play the group that I created in your plugin by the groups MAC address. This is so awesome! I'll mess around with it some more tomorrow but when the music starts its pretty loud initially. I have to turn it down even though I have the volume at 2 in the LMS UI. I'm using your airplay plugin too if that matters. Awesome work!

Thanks - I'm currently working on refinements, including volume where there are a few mistakes or improvements on how the group shall act when it's assembled. Basically, I will now memorize the volume of each member while they were together so that I can re-establish the relative ratio at later, re-assemblies, even if volume has been changed in individual players while they were not assembled as a group. I will restore individual volumes when group disassemble

grimmace92
2017-12-28, 18:22
Thanks - I'm currently working on refinements, including volume where there are a few mistakes or improvements on how the group shall act when it's assembled. Basically, I will now memorize the volume of each member while they were together so that I can re-establish the relative ratio at later, re-assemblies, even if volume has been changed in individual players while they were not assembled as a group. I will restore individual volumes when group disassemble

So I'm messing around with this right now and I'm using a spotty playlist. My setup is LMS on a synology diskstation using your airplay plugin and now you player groups plugin. I've grouped my kitchen, living room and dining room and called it Main level. When the music starts it starts pretty loud. What I'm seeing is the volume resets to this loud position after every song except for the Kitchen. Kitchen stays at whatever volume I put it at but the living room and dining room reset after every song. I assume the Kitchen is acting as the master here while the living room and dining room are slaves?

philippe_44
2017-12-29, 17:31
No they should not. The master is the virtual player that is created and all other real players are slaves. Today, they should keep whatever volume they had before you started to play on the virtual player (it's volume is the average of all real players) and when you change it, the real players volume's are change proportionally. You do not sync additional members (real players) manually, do you?

grimmace92
2017-12-29, 18:54
No they should not. The master is the virtual player that is created and all other real players are slaves. Today, they should keep whatever volume they had before you started to play on the virtual player (it's volume is the average of all real players) and when you change it, the real players volume's are change proportionally. You do not sync additional members (real players) manually, do you?

No I didnít. I went and deleted the group in the LMS settings and built it again. Before I did that I set the volume on each player lower and that seemed to work. Itís better now. Itís not resetting the volume after each song. Iíll test some more. This really is awesome.

grimmace92
2017-12-29, 22:16
I am getting some weird behavior with the volume. It seems if I use Ipeng to raise the volume but then use the LMS gui to lower the volume it doesn't work as expected. I think it's related to the plugin saving the volume setting from where it left off. For example I played a track at a volume setting of 25. I then paused it. I then lowered the volume in the LMS gui to 2 while paused. I then hit play and it started playing at a volume of 25. I think this is expected as that was where I left off but the volume on the LMS GUI didn't change. It remained at 2 while the volume was actually 25. Then changing the volume on the LMS GUI became unresponsive. Ipeng seems to work though and is responsive when raising and lowering the volume.

philippe_44
2017-12-30, 04:01
I am getting some weird behavior with the volume. It seems if I use Ipeng to raise the volume but then use the LMS gui to lower the volume it doesn't work as expected. I think it's related to the plugin saving the volume setting from where it left off. For example I played a track at a volume setting of 25. I then paused it. I then lowered the volume in the LMS gui to 2 while paused. I then hit play and it started playing at a volume of 25. I think this is expected as that was where I left off but the volume on the LMS GUI didn't change. It remained at 2 while the volume was actually 25. Then changing the volume on the LMS GUI became unresponsive. Ipeng seems to work though and is responsive when raising and lowering the volume.

This is what i'm currently working on. When you pause, the group is disassembled so changes on the "virtual" player's volume do not affect members and when you resume, they restart at the level before pause, hence the disconnect. I'm just refactoring a lot in the code currently to prepare a regular release and this will be ready soon

philippe_44
2018-01-01, 18:12
I am getting some weird behavior with the volume. It seems if I use Ipeng to raise the volume but then use the LMS gui to lower the volume it doesn't work as expected. I think it's related to the plugin saving the volume setting from where it left off. For example I played a track at a volume setting of 25. I then paused it. I then lowered the volume in the LMS gui to 2 while paused. I then hit play and it started playing at a volume of 25. I think this is expected as that was where I left off but the volume on the LMS GUI didn't change. It remained at 2 while the volume was actually 25. Then changing the volume on the LMS GUI became unresponsive. Ipeng seems to work though and is responsive when raising and lowering the volume.

Volume should be fine now. Many other items have been fixed as well.

I think it's now reaching a "1st feature complete" level (a sort of MVP). Feedback from alpha-testers would be highly appreciated.

I need to discuss a few architecture items with the Big Boss and maybe issue a release soon if feedback is positive

grimmace92
2018-01-02, 07:07
Volume should be fine now. Many other items have been fixed as well.

I think it's now reaching a "1st feature complete" level (a sort of MVP). Feedback from alpha-testers would be highly appreciated.

I need to discuss a few architecture items with the Big Boss and maybe issue a release soon if feedback is positive

I tested quickly and the volume issue I was seeing now works. I'll do some more testing tomorrow. The volume change responds when doing it from the LMS GUI. Even better I figured out how to change the volume with Ha-bridge and now Alexa can do it for me :D

Great plugin!

Jeff07971
2018-01-03, 17:34
Volume should be fine now. Many other items have been fixed as well.

I think it's now reaching a "1st feature complete" level (a sort of MVP). Feedback from alpha-testers would be highly appreciated.

I need to discuss a few architecture items with the Big Boss and maybe issue a release soon if feedback is positive

I had a minor issue when using Orangesqueeze as the controller but the latest version of Groups may have cleared this, I will check tomorrow.

BTW Is there a changelog anywhere ? I cannot find it if there is

Jeff

philippe_44
2018-01-03, 18:09
I had a minor issue when using Orangesqueeze as the controller but the latest version of Groups may have cleared this, I will check tomorrow.

BTW Is there a changelog anywhere ? I cannot find it if there is

Jeff

Yes, it is on the github site https://github.com/philippe44/LMS-Groups (might be a bit difficult to understand though, currently it's more for my own use otherwise I lose track)

grimmace92
2018-01-03, 20:27
DO NOT SYNCHRONIZE A VIRTUAL PLAYER WITH ANOTHER PLAYER

What happens if I wanted to sync another player to a group I created that is already playing music in regards to the above statement from your first post?

philippe_44
2018-01-03, 20:46
DO NOT SYNCHRONIZE A VIRTUAL PLAYER WITH ANOTHER PLAYER

What happens if I wanted to sync another player to a group I created that is already playing music in regards to the above statement from your first post?

Currently, it's disabled. The other player will not sync - I can enable it but it might have some side effect and I want the main logic to work well before. This "guest" player would not be part of the member list, so some actions based on belonging to that list might be missed. There are other actions based on the belonging to the list of "currently synced players", so I really need to think about that. It might sound like nothing, but the logic to take care of what happens when you stop, pause, power on/off individual members, while allowing re-establisement of "permanent" group when the Group Player stops is pretty complicated

[edit]: still, my WARNING was regarding taking a Group Player and making it a slave of a real player - that's messy. The other way around, as said above, I need to think about. I did it at the beginning, but had too many permutation and combination to test

woodster
2018-01-04, 04:10
Hi there,

just trying the plugin - and when creating a virtual group from two players (both using the RAOP plugin) i get the message from the IckStream plugin, that the virtual player is a unsupported device.
Any ideas?

How does the virtual player identify itself - by the type of the RAOP plugin (SqueezeLite instance) or?

pippin
2018-01-04, 04:38
Yea, thatís probably something we need to look at in the ickStream plugin (or more specifically in the list of authorized devices) since ickStream doesnít know this player type

woodster
2018-01-04, 04:54
Yea, thatís probably something we need to look at in the ickStream plugin (or more specifically in the list of authorized devices) since ickStream doesnít know this player type

Hi Pippen,

if it is possible it would be super :)

woodster
2018-01-04, 05:20
Hi Pippen,

if it is possible it would be super :)

Might not be as intended but changing two lines in the player.pm file makes a quick fix:

From:

sub model { "group" }
sub modelName { "Group" }

To:

sub model { "squeezelite" }
sub modelName { "SqueezeLite" }


Must say that the brilliant work from the plugins from philippe_44 and the just as brilliant ickStream plugin really makes this Squeezebox ECO system still going strong :)
A huge thanks to all involved....

Jeff07971
2018-01-04, 05:42
Yes, it is on the github site https://github.com/philippe44/LMS-Groups (might be a bit difficult to understand though, currently it's more for my own use otherwise I lose track)

Thanks I did look there, I must have missed it !

The small bug I mentioned does seem to be fixed. When I started playing a group with the web gui and then altered the volume with Orangesqueeze on my Android tablet it muted all the players

This seem to be fixed now

Thanks

Jeff

philippe_44
2018-01-04, 08:55
Might not be as intended but changing two lines in the player.pm file makes a quick fix:

From:

sub model { "group" }
sub modelName { "Group" }

To:

sub model { "squeezelite" }
sub modelName { "SqueezeLite" }


Must say that the brilliant work from the plugins from philippe_44 and the just as brilliant ickStream plugin really makes this Squeezebox ECO system still going strong :)
A huge thanks to all involved....

Unfortunately, if you replace the name, it will break a few things in the plugin, so you can't do that. And it is really meant to be a different model, it is not a squeezelite

woodster
2018-01-05, 01:24
Yea, thatís probably something we need to look at in the ickStream plugin (or more specifically in the list of authorized devices) since ickStream doesnít know this player type

Hi Pippin,

do you have any idea if it is possible, and an ETA perhaps?

pippin
2018-01-05, 04:16
It's possible but not ETA, yet.

@philippe: I think I found a bug with "power" handling.
If you press "power" on a Group it will change the power state of all players in the group even if the group is not assembled/playing.

epoch1970
2018-01-05, 04:33
I've finally come around to testing the plugin a little bit. In the current version it seems to work beautifully.

I have noticed power does not sync well with my SB3 that has fixed output (100%) and uses the IR Blaster plugin. When I access the player directly my commands operate both the player and the amp. When the power commands are sent from the virtual player, IR blaster is somehow overlooked and the SB3 alone starts/stop with the group. The amp stays in its current state: player on, no sound.

TBH, the alarm feature of LMS has the same problem, when the alarm has played for its full duration the player stops but not the amp. So I'm not sure the plugin can do something about it.
I think my workaround would be to untick power management from the virtual player, and access the SB3 directly. I use the PowerSave plugin, so after 15 mins idle the player and amp could orderly go off.


Also when I have my Loop (via Airplay bridge) powered up along with the SB3, the virtual player looks like it is confused with its "volume" IR commands. Sometimes it will only send "volume up" (even when pressing down) and sometimes only "volume down" is being sent.
When the SB3 is powered up alone in the group, volume commands work ok. In other words, I can power Loop off and then virtual player volume control work ok for the SB3.

I'm not sure what can/should be done about this.
2 out of 3 of my SB3s are using fixed output and an IR Blaster link. Because of this most of the time I control players volumes separately.
Pippin is proud of what iPeng's group volume control can do for me; it certainly doesn't confuse IR vol up and down, but nevertheless I don't use it with the fixed output players. Their volume ramp widely differs from that of other players so individual control is the way to go for me.


HTH, and congratulations on another fabulous plugin, philippe_44!

pippin
2018-01-05, 04:45
I noticed you don't have a player group icon, yet.
In case you are interested: this is the player group icon I'm going to use in iPeng, just with the squeezeboy grey gradient background.

24298

philippe_44
2018-01-05, 21:09
It's possible but not ETA, yet.

@philippe: I think I found a bug with "power" handling.
If you press "power" on a Group it will change the power state of all players in the group even if the group is not assembled/playing.

It's on purpose, when you have the option "Power on/off with Group Player" checked. You can disable it, but I think it makes sense, when you poweroff a Group Player that, whether it's assembled or not, all members would follow. Yes, it can be a bit inconvenient if they play something else, but why pressing on/off on the Group then?

philippe_44
2018-01-05, 21:10
I noticed you don't have a player group icon, yet.
In case you are interested: this is the player group icon I'm going to use in iPeng, just with the squeezeboy grey gradient background.


Thanks very much, I was precisely looking for one :)

mherger
2018-01-05, 22:07
> pippin wrote:
>> I noticed you don't have a player group icon, yet.
>> In case you are interested: this is the player group icon I'm going to
>> use in iPeng, just with the squeezeboy grey gradient background.
>>
>
> Thanks very much, I precisely looking for one :)

add it as HTML/EN/html/images/Players/group.png to the plugin folder.
Should be all you'll need to do.

--

Michael

philippe_44
2018-01-05, 22:22
> pippin wrote:
>> I noticed you don't have a player group icon, yet.
>> In case you are interested: this is the player group icon I'm going to
>> use in iPeng, just with the squeezeboy grey gradient background.
>>
>
> Thanks very much, I precisely looking for one :)

add it as HTML/EN/html/images/Players/group.png to the plugin folder.
Should be all you'll need to do.

--

Michael

Perfect ... there as so many options in LMS to make life easy ... still amazed

philippe_44
2018-01-05, 22:43
Perfect ... there as so many options in LMS to make life easy ... still amazed

oh, just one thing - iPeng does not seem to get that new icon (it works on the web UI)

philippe_44
2018-01-05, 23:05
I've finally come around to testing the plugin a little bit. In the current version it seems to work beautifully.

I have noticed power does not sync well with my SB3 that has fixed output (100%) and uses the IR Blaster plugin. When I access the player directly my commands operate both the player and the amp. When the power commands are sent from the virtual player, IR blaster is somehow overlooked and the SB3 alone starts/stop with the group. The amp stays in its current state: player on, no sound.

TBH, the alarm feature of LMS has the same problem, when the alarm has played for its full duration the player stops but not the amp. So I'm not sure the plugin can do something about it.
I think my workaround would be to untick power management from the virtual player, and access the SB3 directly. I use the PowerSave plugin, so after 15 mins idle the player and amp could orderly go off.

It's strange as powering on/off players uses proper LMS command so that other plugins can subscribe. I had that issue with ServoPower plugin (can't remember the exact name) at the beginning and corrected it. I did look at IRBlaster code and it subscribes to power command, so I don't know why it does not work



Also when I have my Loop (via Airplay bridge) powered up along with the SB3, the virtual player looks like it is confused with its "volume" IR commands. Sometimes it will only send "volume up" (even when pressing down) and sometimes only "volume down" is being sent.
When the SB3 is powered up alone in the group, volume commands work ok. In other words, I can power Loop off and then virtual player volume control work ok for the SB3.

HTH, and congratulations on another fabulous plugin, philippe_44!

I'm not sure I fully follow. You mean the volume command on the SB IR's remote or the IRBlaster command as well?

Thanks :)

epoch1970
2018-01-06, 02:18
I'm not sure I fully follow.
Yeah I feared that. I don't follow 100% myself, e.g. controlling via iPeng vs. web interface seem to give different results...
I'll tighten my scenarios and post again if I can reproduce reliably what I've seen.
Thanks again.

pippin
2018-01-06, 11:02
oh, just one thing - iPeng does not seem to get that new icon (it works on the web UI)

Yes, iPeng needs an update because it has transparent icons. I'll use that same one in the next release, though.

pippin
2018-01-06, 11:10
This is how it will look in iPeng.
24316

BTW: another thing I found: the Group player (but not the individual ones) seems to forget the current playlist between server restarts

philippe_44
2018-01-12, 13:23
This is how it will look in iPeng.

BTW: another thing I found: the Group player (but not the individual ones) seems to forget the current playlist between server restarts

I'll look at that. I did not do anything special, assuming that Group Player are players like any other, but I will check. I plan to release a first non-alpha version soon.

Do you intend to show the real players under the Group Player as of any sync group or do you want to do something different so that users are not surprised by the group disassembly when they pause? I see benefits in both options :).
Do you want an API to manage groups?

A different question - if I change the modelName of my bridges (not the model) so that I can better identify them in other applications, will it still be a problem for ickstream?

Mnyb
2018-01-12, 20:02
I'll look at that. I did not do anything special, assuming that Group Player are players like any other, but I will check. I plan to release a first non-alpha version soon.

Do you intend to show the real players under the Group Player as of any sync group or do you want to do something different so that users are not surprised by the group disassembly when they pause? I see benefits in both options :).
Do you want an API to manage groups?

A different question - if I change the modelName of my bridges (not the model) so that I can better identify them in other applications, will it still be a problem for ickstream?

There is a player setting for this , if the playlist is remembered or not .
I have yet to try your work plugin , but the gruop player gets a player settings just like a real player?

philippe_44
2018-01-12, 20:26
There is a player setting for this , if the playlist is remembered or not .
I have yet to try your work plugin , but the gruop player gets a player settings just like a real player?

Yes, it should have all attributes of a real player, that's the deal (bugs excepted :)) - I just checked a few minutes ago and playlist was back when I restarted LMS

Vegz78
2018-01-16, 16:26
Amazing, this will be one of my new favorite plugins!

Thanks again for all your great and useful contributions, Philippe!

The system overall just keeps getting better and better. How can it not be revitalized?

Vegard

epoch1970
2018-01-27, 05:34
I browsed through the thread, I don't think Don't Stop The Music was mentioned yet.

This is what I see: the first time DSTM kicks-in (replacing a "Song Mix" item with an actual playlist), the virtual player doesn't seem to be able to act on that playlist and stays caught in a silent startup loop on the first item.
Power-cycling the player unsticks it and it plays normally from there on, including over the follow-on items added later by DSTM.

I have DSTM activated on most of my players, this group player included.
I tried switching DSTM to "none" on the players members of the group, but it made no difference.

My LMS version is not super up-to-date. The server is running on a VM, it has plenty of resources.

Logitech Media Server Version: 7.9.0 - 1472937447 @ Sat Sep 3 21:27:35 UTC 2016
Hostname: montreux
Server IP Address: 172.17.0.20
Server HTTP Port Number: 9000
Operating system: Debian - EN - utf8
Platform Architecture: x86_64-linux
Perl Version: 5.20.2 - x86_64-linux-gnu-thread-multi
Audio::Scan: 0.95
Database Version: DBD::SQLite 1.34_01 (sqlite 3.7.7.1)
Total Players Recognized: 5
HTH

epoch1970
2018-01-27, 05:43
More nitpicking: LMS Player information reports wireless strength for the group player.

Player Information
Information on all identified devices connected to Logitech Media Server

Illadelph
Player Model: Squeezebox Classic
Player Type: squeezebox2
Firmware: 137
Player IP Address: 172.17.10.3
Player MAC Address: 00:04:20:xx:xx:xx
Wireless Signal Strength: 73%

Office
Player Model: Group
Player Type: group
Firmware: 1
Player IP Address: 127.0.0.1
Player MAC Address: 02:00:32:37:00:0f
Wireless Signal Strength: 100%

Zipp-Classic
Player Model: SqueezeLite
Player Type: squeezelite
Player IP Address: 172.17.0.20
Player MAC Address: aa:aa:b5:10:fb:43

...

mherger
2018-01-27, 06:15
> More nitpicking: LMS Player information reports wireless strength for
> the group player.

How much?

--

Michael

epoch1970
2018-01-27, 07:01
How much?
Excellent :)

(Actually I've already observed Squeezelite does not report enough wifi strength, e.g. the "Zipp-Classic" player above. Adding that would be nice, too.)