From 028a090864b751803c3dc81b873ddba6d1c3679a Mon Sep 17 00:00:00 2001 From: Philippe G Date: Sat, 29 Aug 2020 22:20:26 -0700 Subject: [PATCH] update plugin files --- plugin/SqueezeESP32.zip | Bin 11502 -> 10327 bytes plugin/SqueezeESP32/Graphics.pm | 8 +-- plugin/SqueezeESP32/Player.pm | 67 +++++++++++++++++++------- plugin/SqueezeESP32/PlayerSettings.pm | 7 +-- plugin/SqueezeESP32/install.xml | 2 +- plugin/repo.xml | 4 +- 6 files changed, 61 insertions(+), 27 deletions(-) diff --git a/plugin/SqueezeESP32.zip b/plugin/SqueezeESP32.zip index 34a0ec1a35d69ad79a837da406734fd4f6b89248..1d8b8c75c2a623b291aa0cb813f54b63fb7e3c63 100644 GIT binary patch delta 2242 zcmZvddpy(oAIHC2la)5PoJ=}lw9Phh8M$<^E{8HRa!vcW6j2SCJ&N$ngrlahkz10K zau<>osTNwTavix^$nxIj6_xkJsb#{yZO_$Lsz6JRYCdxLXIUtV?!9 zft)_SS5{+Ld2lW176T_p)e&yG;;~af1sDDrhG>etM^mL|Ehs_&-~<0OLKF0DgQN#z zbNv*^*AyFKG8MZ=P~u$7d)nemUTOX#;!87+aV-^-VqWvcVx`|o-%TG@uzJCypYSJ@ zybBDOjJ|XV;apk*X`NxrkOjA-{wLVuy(Xxfx7*drXYCpD@po zJ!-*wr%PtWkiee49b11H4bAi^b!(VNDCbOpc@udDR_Oy77Lj{n)@5(lx4_ z%KIeCO{v!gH@IOZ(s*EjTfRIhkdy4e++Eh^RNuFLGU-85+d95XPiDcEPT3iCnW;5C zC<@EByXDPJvxsUn+FAz9Sq4yT`U$eln2j^rjv?0{KacxCMrDm-Ui`{hP%YUAFkZNekbe(#BepMU=) z+OchV-vYcnXBJesoa$p77skBf|}L3WD* z%0Cg5RC8I+PicCrdOC^r{qtt=R=bf9ONO6lO!TtyQqKNEW;)_(Z!c60+`D>MSL;x) z3i1SUF;!h&qY$GMbL+JEPLxwW^ouS^i_l=KdQ0JK*Qfi=7f3w_r3`57cC-glHR9D= z-W7jY=UQ2dUcKXts0eU1S3n;*A*7YG8u@^5hS^oBo%gRR*Q@N&zi5(!$f}MKaC~IM z<9BM+b{mvDk(ezmstNR5cPY6SQSB6*Vhg97R-~3f&s?i`< z)EZw;9(4ha4IM%7g_|BFrDwNCVhYN&_w*i%nxO=B`X^^Z1*q>D=}CTQJLJP0zZP(s z-ZJLPzEl@sST2Y`vr}Y~yw5-mbHql^-Qpd>=BX1zORDg~!_apJHLnHkTm>) zH-|Rmx@&A5c2TyAo_2<|CgV$?Szx}NFNwE}F1L$r`g%HSCasb!qLh!4O_bQHCp8Lx z2cvCpGec=nIlC>K{WE>BoZ^;jvJggEhN1oq5N>ONvY_?;VfX1;1mzwC6 zi9>}~2|lyO-&`E%_Jr0HkYB(ag;OjPG_N-jb#26CXIjG1fm@ONgFCIX_6$5wV2T-{ zKaOJRKC1OiN6l`HfuA%A8YN>!Zo&(% zhbY^(DH0#!SOR28-3L*Yuy!m+_EzEk-8;QaBeunkRo*MEWCKMn^T2L=`KxC0>MlhO zTT;a^U1fa2V#k4S)~6TlN~tMn=Lo-1(*`{;V>_Pg$(zl6+#SFu?iC95f~OCeXP1}c z$%jxaw_J}aZSLIGQ7SWI$O(Z28oH3z7CRQt^&QmB)OF??EbOm;pxoaQ>gryTiD)#2 zG2c43th0`1iUU5@My_R$H%F$MP7F==#X700fk4F;ROJeoW!!CA#e|yv8g(E099NIQ zcF6pf6uS{oJA`Hff$jj7KT7~uPMz&Iee9WZv7D8-9irD?j9k`%HPAK7`foM`XY`#_ zz?Dl`%BP>R6F7_SEca%Wl!c#J@zZFIi#N@ zinerk0HCp?*~lOAWwo>f01yBL$gaj_D`O=P-0dbcl(q!Yk^0}Oz4#{xze2Al@e>Ky zqvkz-gN-WnU;X}NeEB)4Zx3&`mH~iqX{!C`VV}yf2i6h)fTfK4(L=f3ytJ)v%AS*Y z;A;{I(7PM>RHCN*Q|h90lzff*%boKhmyTl5{6gZdm~b>i`T`$l5{JKsBC~S2bHvhG Lxn#sbYkBv7%{$Ly delta 3396 zcmZXWdpy%^AIE>Qm2o444awMMn0v(BNiv7#d^fvg&dd3nW=YOtF{e4MLJlb+v{cBk zlX51;EhVRlged7ip{G2z*Yi9*uj`NZ>-t@v&*%I4UDrRK5$h#~8>9SS-^6ClI6vYi zv!TeXtr8Tw#iLN2pRCD%PC|sEa(0o`Qd#eIg8*QG6Dh2~C@TTGH*(0eNeE5x_Jn-# z=L_)O5~VrojZbCO6|HLh2aYWvVNbZ(yuIArCe<&A+3i^?&UVf+X;rJTE-hu{m{_jq zxFPPUGE;Ce9C>JE3`y*pL{SVjo4|=FznL%WQXsl`+;pbqw_AGXa|V?W(R!Ih&*i@6 zH=VyctslaeUldiobc_X>^P=yVF7{#8b52TqAon$1RpuD&t97$M7=D)PT0URgXw(!w zHbKynd>fuWTOI!R57?|hljrETPmtQ!5>v?K-X7$WQ zzM5VQ=+~`-SJN09tE;QfCJR)4$2CF8fo;K=;#}u88pqsi{ojFMSvy|BO zH8q|^KVu@DU0ikB`Wi(~f9%$nm**pNdkDyG&8nppEIJvV4%>%C!fpzm8KjPStE2Zqe6WXqngkTCN_^=dm0^A^3$pGOqvh(!7Q-PKX|_ zKHYq0({FZ~Sj9UrLXv%U{pmcRqTVsBW@JG$V?q6(Pv43OsYTE4)ZSsI4QfeD=sG@e z(*L&XhWA0Itbsf2YX?%wi!R>t#ZTZz(^l*XYkW3d9cdod(eEgH8Hs;7$m)5N!OYa4 z?&1^gv@H^GO~DDikk!G8u)Km8^^2tB*iJgpSUESjKhjt#(RXzp(>A!{+W!9DR!N6~deM}{82&O7J8*R?Dv$W3o?ias<$mLVc5@d85y)iBM-YIlw1v5tR07^?bwu0`%c} zES9zDq@2_aAxmD9qN^=$0iF{hf2E7NP}m=nD-JeE;0~G9Lav`=7d89u8(w22545j# zI7ae44AW&uYEtg9lR6W$*Qy`H4=kg2;lKM4GVc>rf(&n(u&&R*xwq8ra__<}oAb%6 zLo3e-Iydk9x}iUI{ip;H)!5@_@9bjQov=rujB*trX?OX0_bmmh#f=y0G;*ovi0H)71{qvLJAE=bb5P?=kISQpbgcHg>xqYq8&8{UOGb5DDlI9;E}9gL1QM2N zbx8x+x9&Y?cpWX1_A=10r7`DJ!Q9m$A>2cd^QI!9?z|>|%enu7y&d72Ru=eG96EQ4HcjROfPbfXijB2zN$G{RK|(%GdUdI-8<_y;FzOGtlGg zvH!5n$c#Y?+5HJ+Cv+^bYgV;Dby$a^@zt>#Q zBFW1{bW+YXR}cwNtFFw#|BTP^<(@@NZ83- zO%|)+0Q+X;M>!n>w`H*3^NyIP_ilfL3T+}pq>`#-;_W=A!b!P=`~d~(<62s!(+vtv zg;9n^dI%g;=b1{&&)+SEkox6?QiBD(d28nnGhmjJ_h| zp!9LgmJLOh^^j^ulf=fi(q3LiU9?G}oeUOLUX1r;nu9{ke?tFW59NCiARF+l(^arq zyc07U+EPui!~S3nZJ=gbp-@hyF7PHyuyj8-=&EU z7w-?UCA!Y#P6@!Q@+Zu_^o z=~eSs=}=jJEoO?TXG4JX`_zQ);M)^jLZ`wVdY8O9=-vo*Z+|QPu;YbSlJ|VN5AZ`F z*ap$?Ka!Cki6kp*|10=xBGc$({4A5Ne9tOdXf7$c80A-a1iQBjrjo^Ic*_-n)R0S2 zvBr<53lQ4g#8GI(Y+oX7PDRT}kpvhashqPPkky zcwfaV@tMae*80InuLw@kMOyKH1O8i}yWL;V_ea(KSfH*XJfX%(f(2@&2hFg;?vTIGS}>ak z6M=;89E)LG2(=(J;evhG=+%oM7ehydZ_=NmVlNoTRcWB(KC$4%(BaP_b^0A{%#tWO z8SF^05qbe9R1ttc8N(YJdsj?**407&vV7OlrUGYrmb{;7AQ{aUxdIiq<*94b7c~#j zB4>*DY~zfP2NrLOP*<2vXOXHxv%<;}A;N(bGizvL2X5`#uTc{Rf*vk$(xozjgPeSN zk4?XyWXiNSSiDnU$kwTPWR>y6afhCka4pL3iMOW9e7Uht(E>CQGn{p0LqbcEK@;<# z8}A_`O+z(mGBgN+<`-U%@5_dLHh58=eRzE;>yyIpuv=T%@W8j$K-s15{GlA1p=kEh z#yroVEl0klcy}!rG8epyTw@Q@5R$LkBn>g~Pe9wWwgmAJfS+9s0DiXOa-;^v_4ctX z%{Fm{|K9(q-9&0(vazmP+HG!oe%0Ee4q|p5a@*2wbKCQ)wh3j1i8$iErQPPX=U1%? znhd*p#b-;q&3`>6qET6RkryirQ%Z})>b@UH8 yvluK<4g&y3y~09%NqZj|nqu{M7$m$x-Lh=c+H%LvpZ_NOW9{4l0E0j50PrseF9PlW diff --git a/plugin/SqueezeESP32/Graphics.pm b/plugin/SqueezeESP32/Graphics.pm index b23cf95b..6f763be7 100644 --- a/plugin/SqueezeESP32/Graphics.pm +++ b/plugin/SqueezeESP32/Graphics.pm @@ -78,7 +78,7 @@ sub displayWidth { if ($display->widthOverride) { my $artwork = $prefs->client($client)->get('artwork'); if ($artwork->{'enable'} && $artwork->{'y'} < 32 && ($client->isPlaying || $client->isPaused)) { - return $artwork->{x} + ($display->modes->[$mode || 0]{_width} || 0); + return ($artwork->{x} || $display->widthOverride) + ($display->modes->[$mode || 0]{_width} || 0); } else { return $display->widthOverride + ($display->modes->[$mode || 0]{_width} || 0); } @@ -113,9 +113,9 @@ sub build_modes { my $artwork = $cprefs->get('artwork'); my $disp_width = $cprefs->get('width') || 128; - # if artwork is in main display, reduce width - my $width = ($artwork->{'enable'} && $artwork->{'y'} < 32) ? $artwork->{'x'} : $disp_width; - my $width_low = ($artwork->{'enable'} && ($artwork->{'y'} >= 32 || $disp_width - $artwork->{'x'} > 32)) ? $artwork->{'x'} : $disp_width; + # if artwork is in main display, reduce width but when artwork is (0,0) fake it + my $width = ($artwork->{'enable'} && $artwork->{'y'} < 32 && $artwork->{'x'}) ? $artwork->{'x'} : $disp_width; + my $width_low = ($artwork->{'enable'} && $artwork->{'x'} && ($artwork->{'y'} >= 32 || $disp_width - $artwork->{'x'} > 32)) ? $artwork->{'x'} : $disp_width; my $small_VU = $cprefs->get('small_VU'); my $spectrum = $cprefs->get('spectrum'); diff --git a/plugin/SqueezeESP32/Player.pm b/plugin/SqueezeESP32/Player.pm index 2e0b903d..78eba318 100644 --- a/plugin/SqueezeESP32/Player.pm +++ b/plugin/SqueezeESP32/Player.pm @@ -13,6 +13,19 @@ my $sprefs = preferences('server'); my $prefs = preferences('plugin.squeezeesp32'); my $log = logger('plugin.squeezeesp32'); +{ + __PACKAGE__->mk_accessor('rw', 'tone_update'); +} + +sub new { + my $class = shift; + my $client = $class->SUPER::new(@_); + $client->init_accessor( + tone_update => 0, + ); + return $client; +} + our $defaultPrefs = { 'analogOutMode' => 0, 'bass' => 0, @@ -44,7 +57,6 @@ sub hasIR { 1 } # TODO: add in settings when ready sub hasLineIn { 0 } sub hasHeadSubOut { 1 } -# TODO: LMS sliders are hard-coded in html file from -23 to +23 sub maxTreble { 20 } sub minTreble { -13 } sub maxBass { 20 } @@ -54,7 +66,7 @@ sub init { my $client = shift; if (!$handlersAdded) { - + # Add a handler for line-in/out status changes Slim::Networking::Slimproto::addHandler( LIOS => \&lineInOutStatus ); @@ -117,25 +129,41 @@ sub playerSettingsFrame { } sub bass { - return tone(2, @_); -} - -sub treble { - return tone(8, @_); + my ($client, $new) = @_; + my $value = $client->SUPER::bass($new); + + $client->update_equalizer($value, [2, 1, 3]) if defined $new; + + return $value; } -sub tone { - my ($center, $client, $value) = @_; - my $equalizer = $prefs->client($client)->get('equalizer'); +sub treble { + my ($client, $new) = @_; + my $value = $client->SUPER::treble($new); - if (defined($value)) { - $equalizer->[$center-1] = int($value * 0.2 + 0.5); - $equalizer->[$center] = int($value * 0.7 + 0.5); - $equalizer->[$center+1] = int($value * 0.1 + 0.5); - $prefs->client($client)->set('equalizer', $equalizer); - } + $client->update_equalizer($value, [8, 9, 7]) if defined $new; - return int($equalizer->[$center-1] * 0.2 + $equalizer->[$center] * 0.7 + $equalizer->[$center+1] * 0.1); + return $value; +} + +sub update_equalizer { + my ($client, $value, $index) = @_; + return if $client->tone_update; + + my $equalizer = $prefs->client($client)->get('equalizer'); + $equalizer->[$index->[0]] = $value; + $equalizer->[$index->[1]] = int($value / 2 + 0.5); + $equalizer->[$index->[2]] = int($value / 4 + 0.5); + $prefs->client($client)->set('equalizer', $equalizer); +} + +sub update_tones { + my ($client, $equalizer) = @_; + + $client->tone_update(1); + $sprefs->client($client)->set('bass', int(($equalizer->[1] * 2 + $equalizer->[2] + $equalizer->[3] * 4) / 7 + 0.5)); + $sprefs->client($client)->set('treble', int(($equalizer->[7] * 4 + $equalizer->[8] + $equalizer->[9] * 2) / 7 + 0.5)); + $client->tone_update(0); } sub update_artwork { @@ -193,6 +221,11 @@ sub clear_artwork { if ($artwork && $artwork->{'enable'}) { main::INFOLOG && $log->is_info && $log->info("artwork stop/clear " . $request->getRequestString()); $client->pluginData('artwork_md5', ''); + # refresh screen and disable artwork when artwork was full screen (hack) + if (!$artwork->{'x'} && !$artwork->{'y'}) { + $client->sendFrame(grfa => \("\x00"x4)) unless $artwork->{'x'} || $artwork->{'y'}; + $client->display->update; + } } } diff --git a/plugin/SqueezeESP32/PlayerSettings.pm b/plugin/SqueezeESP32/PlayerSettings.pm index 4f0af9cf..cde4bb0c 100644 --- a/plugin/SqueezeESP32/PlayerSettings.pm +++ b/plugin/SqueezeESP32/PlayerSettings.pm @@ -31,7 +31,7 @@ sub page { sub prefs { my ($class, $client) = @_; my @prefs; - push @prefs, qw(width small_VU) if $client->displayWidth; + push @prefs, qw(width small_VU) if defined $client->displayWidth; return ($prefs->client($client), @prefs); } @@ -41,7 +41,7 @@ sub handler { my ($cprefs, @prefs) = $class->prefs($client); if ($paramRef->{'saveSettings'}) { - if ($client->displayWidth) { + if (defined $client->displayWidth) { $cprefs->set('small_VU', $paramRef->{'pref_small_VU'} || 15); my $spectrum = { scale => $paramRef->{'pref_spectrum_scale'} || 25, @@ -73,9 +73,10 @@ sub handler { $equalizer->[$i] = $paramRef->{"pref_equalizer.$i"} || 0; } $cprefs->set('equalizer', $equalizer); + $client->update_tones($equalizer); } - if ($client->displayWidth) { + if (defined $client->displayWidth) { # the Settings super class can't handle anything but scalar values # we need to populate the $paramRef for the other prefs manually $paramRef->{'pref_spectrum'} = $cprefs->get('spectrum'); diff --git a/plugin/SqueezeESP32/install.xml b/plugin/SqueezeESP32/install.xml index d6062cce..ef8c3894 100644 --- a/plugin/SqueezeESP32/install.xml +++ b/plugin/SqueezeESP32/install.xml @@ -10,6 +10,6 @@ PLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.100 + 0.104 Philippe diff --git a/plugin/repo.xml b/plugin/repo.xml index a573f19c..8a7a7cac 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -1,10 +1,10 @@ - + https://github.com/sle118/squeezelite-esp32 Philippe - 572fa8afeaa3bc3cfb245b8d42ba05739aec584b + 79e505a30d7b6dbf43893acab176d57438e2a4a1 philippe_44@outlook.com SqueezeESP32 additional player id (100) http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32.zip