Bug 15849 - Improve synchronization user interaction - Managing volume control
: Improve synchronization user interaction - Managing volume control
Status: NEW
Product: Logitech Media Server
Classification: Unclassified
Component: Sync
: unspecified
: All All
: -- normal with 1 vote (vote)
: Future
Assigned To: Unassigned bug - please assign me!
http://forums.slimdevices.com/showthr...
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-03-08 04:05 UTC by Mogens Kjær (Aka Muele)
Modified: 2010-03-10 00:13 UTC (History)
2 users (show)

See Also:
Category: Feature


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mogens Kjær (Aka Muele) 2010-03-08 04:05:03 UTC
This enhancement request is based on the following forum-thread where a lot of well respected community members have contributed.
http://forums.slimdevices.com/showthread.php?t=75381

The way volume is handled during sync I not very good at all. There are two options. Either there is no sync at all or the volume is identical on all players. This is not good, because volume 80 may be needed in the living room while volume 50 is sufficient on the Radio in the bedroom.

One simple improvement to this would be to handle the synced volumes from the offset they had before they got synced. E.g. when turning volume 20 clicks up, all players are turned 20 clicks up from whatever volume they already had. Of course we need to consider what to do when one device’s volume passes 0 or 100.

The next step from that would be to have a master volume which acts like described above. But also be able to control the individual volumes from any of the synced players.
His can be done with a menu on the home menu where you choose which volume you wish to control. 

Taking it a bit further is to pull up the above described menu when either volume button is clicked. If no menu-selection is done, further clicks will adjust the master volume.
Comment 1 Chris Owens 2010-03-09 18:16:23 UTC
It's a noble idea.  We should do some experimentation to make sure that increasing the volumes the same 'number' from the pre-set baselines is the right behavior.
Comment 2 Joerg Schwieder 2010-03-09 19:03:17 UTC
I don't think absolute volume change will work very well.

I'm using a somewhat different algorithm in iPeng, which works quite well (give it a try :) ).

What it does is to build an average between an absolute volume change and a relative one.

Rationale:
Absolute volume change only works with similar gain levels. If you have one player at volume 10 and another at volume 50 (and they sound similar in volume level due to what the real amplification is), increasing the volume by 5 will have a very different effect on Player 1 and on Player 2.

Relative volume change would work better but has some drawbacks, too: You end up in a deadlock when you are at "0" and due to the logarithmic nature of the volume ramp you get similar (yet opposite) similarity issues as with the absolute change.

Averaging between the two actually works pretty well in real-world scenarios. Find somebody with iPeng and give it a try.

Algorithm:

ABSOLUTE = NEW_AVERAGE_VOLUME - OLD_AVERAGE_VOLUME
DELTA = ABSOLUTE / OLD_AVERAGE_VOLUME;
if (OLD_AVERAGE_VOLUME != 0)
    DELTA_RELATIVE = (DELTA / 2 * OLD_AVERAGE_VOLUME)
else
    DELTA_RELATIVE = 0
DELTA_ABSOLUTE = DELTA / 2

for each PLAYER in SYNC_GROUP
    if (PLAYER.digitalVolumeControl)    // don't use players w/o volume control
        PLAYER.volume = PLAYER.volume * DELTA_RELATIVE + DELTA_ABSOLUTE


and to find the "group volume" to control

AVERAGE_VOLUME = 0
CNT = 0
for each PLAYER in SYNC_GROUP
    if (PLAYER.digitalVolumeControl) {
        AVERAGE_VOLUME = AVERAGE_VOLUME + PLAYER.volume
        CNT = CNT + 1
    }
AVERAGE_VOLUME = AVERAGE_VOLUME / CNT

One more thing: To make this work well without limiting the volume range or clipping volumes at 100%, iPeng also uses volume levels above 100%. They are only used internally (obviously) and not sent to the server but persistent unless you exit iPeng.
Comment 3 Mikael Nyberg 2010-03-09 21:58:17 UTC
Ok so the 100 squeezebox volume units are not dB logarithmitical ?

Obviously the aim is the adjust the volume the same dB +- 

With some nifty mechanism to cope with players stuck at 100 or 0 so that they rejoin the rest a sane levels.
Comment 4 Joerg Schwieder 2010-03-10 00:13:21 UTC
I believe Transporter and SB3 are linear (-db) but Radio and Boom are not.
I agree if you _knew_ the volume ramp adjusting the db change would be the thing to do yet I don't (know the volume ramp).