JamesMcBride wrote:
> Hi,
> zones 2 and 3 don't support the .5 increments in volume, so the likes
> of
>
> >
Code:
--------------------
> >
> [13-06-25 12:56:52.7217]
Plugins::DenonSerial::Plugin::processCommandFromQueue (481) for
00:04:20:e1:18:3f , send command Z2385, queue length 1
>
--------------------
> >
>
> are ignored (noted, I guess, by the lack of response).
Cool, thanks for the info, and I'm sorry I missed that in Denon's
documentation. I haven't tested this yet (my server is running code not
even pushed to my dev repo), but I think a better change would probably
be passing in the zone number and only rounding if it's not zone 1:
Code:
--------------------
--- ./Plugin.pm 2013/07/24 12:50:16 1.3
+++ ./Plugin.pm 2013/07/28 16:46:09
@@ -299,7 +299,8 @@
return &$originalMISdBFunction(@args);
}
my $ampMax = $prefs->client($client)->get('ampMaxVolume');
- my $dVolume = &volumeSBToDenon($volume,$ampMax);
+ my $zone = $prefs->client($client)->get('ampZone');
+ my $dVolume = &volumeSBToDenon($volume,$ampMax,$zone);
# 99 means nothing; MIS needs to see this as a number < -99
if ( $dVolume == 99 ) { return -100; }
# else, subtract 80 (98 = +18 db, 80 = 0 dB, 70 = -10 dB)
@@ -307,10 +308,11 @@
return ($dVolume - 80);
}
-sub volumeSBToDenon($$) {
- my ($sbVol,$ampMax) = @_;
+sub volumeSBToDenon($$$) {
+ my ($sbVol,$ampMax,$zone) = @_;
# amp volume should be in increments of 0.5 between 0 and 98;
my $ampTo = int(2 * (($sbVol / 100 * ($ampMax + 81)) - 1)) / 2;
+ if ( $zone > 1 ) { $ampTo = int($ampTo); } # zones 2+ cannot handle
half-decibel changes
if ( $ampTo > 98 ) { $ampTo = 98; } # max 98
if ( $ampTo < 0 ) { $ampTo = 99; } # minimum = 99 (weird, I know)
my $sbEquiv = &volumeDenonToSB($ampTo,$ampMax);
@@ -351,9 +353,10 @@
my ($client,$newvalue) = @_;
my $id = $client->id();
my $ampMax = $prefs->client($client)->get('ampMaxVolume');
+ my $zone = $prefs->client($client)->get('ampZone');
# amp volume: 0 - 99, 80 = 0 dB, 99 = min
# i.e. amp 0 = -80 dB, amp 80 = 0Db, amp 18 = +18 dB ??
- my $ampTo = &volumeSBToDenon($newvalue,$ampMax);
+ my $ampTo = &volumeSBToDenon($newvalue,$ampMax,$zone);
$log->debug("for ".$client->name()." should set amp volume to $ampTo of
".(80 + $ampMax)." (SB volume $newvalue)");
$playerInfo{$id}->{ampVolumeTarget} = $ampTo;
# actually set the amp volume
--------------------
http://www.tux.org/~peterw/
Note: The best way to reach me is email or PM, as I don't spend time on
the forums.
*Free plugins:* AllQuiet Auto Dim/AutoDisplay BlankSaver ContextMenu
DenonSerial
FuzzyTime KidsPlay KitchenTimer PlayLog PowerCenter/BottleRocket
SaverSwitcher
SettingsManager SleepFade StatusFirst SyncOptions VolumeLock
------------------------------------------------------------------------
peterw's Profile: http://forums.slimdevices.com/member.php?userid=2107
View this thread: http://forums.slimdevices.com/showthread.php?t=67182
_______________________________________________
plugins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/plugins