From 93c24cbf5f862b6128751a494e39f423c6e51929 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Tue, 3 Mar 2020 22:53:14 -0800 Subject: [PATCH] plugin update --- plugin/SqueezeESP32.zip | Bin 5479 -> 5847 bytes plugin/SqueezeESP32/Graphics.pm | 192 +++++++++++++++++++------------- plugin/SqueezeESP32/Player.pm | 1 + plugin/SqueezeESP32/install.xml | 2 +- plugin/repo.xml | 2 +- 5 files changed, 118 insertions(+), 79 deletions(-) diff --git a/plugin/SqueezeESP32.zip b/plugin/SqueezeESP32.zip index 44b663b5c02128b712fb291afa2f2634d1d98089..a64028a7e4a374a5e647c97b283aa86b295bc31a 100644 GIT binary patch delta 2758 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 delta 2411 zcmZWrc{tPy7ycPpM-0Z;CPpd6SRz7%OJ*8th-@Rf7-OHY#E(&kCNWo1*|S7LMcJxJ zDP&2qRb(Aw8*-UTB%gc#_`Z9e?~n7G^PJ~A=a2V!-}9bfRhBYnYr(w_4gdf@;MQbk z8-SNY@9qPDd>8;g_qv#H&(MHN-Vth{!95q^BKnPCyRxU>>PHD(PfF_B3V3=baNvfq z^iBQK`j%Kk$L(BluH8Tad1KiQhYQN6^!7*fuooK`V}xZaaw9{_WR7>fEpv03xEqwd zxu2cT;K>G;U;0^Va@=1!q05m;(Ak!QEz)}HoG8ZyzJ$h>?S9tTiEc?@^VJ9Edrv%l zXS~V9GpC89F>*ML1`3=|VY2uGE*lekmgmetb?Ix63(PO4{#*!x4JKJeO}*$ zM6c>M)SnZ%Lr=~mg^cJejrg4Z+Je@Vsb`Z(nLZ##!kH1oh#r=$Pwla;<4l(JKXI)8 zb~1CxDfNYpfUNUG-paLOV~b15+v4!Urm8Z&o2%RlLx~=G&W|c<8rPjug7)F=BEisdazyp!_w;fNHj|Gyp|Lh8ico-s8 z6BeZ_e%%j)C+0@R+m|=2X~dFRV*2#vp1;&t!Hta`T{)0=ux~tkK$8AOlCe-e2p>a{ z7)K#Pg1-_Y*911$^BbK+?)!(cl7Xagp<aZRkC=*b`ieUP}kKj1r^4zRK?piIfOv^}AF3U=E~?e427XJR}Y zDw?W@(ipu0v_o{QK(t41oVK($8Z!FGlE;$L5Kb_7Ul+F1IC?ubh2!!4N%k$!2NMrB z%j1nV(onaF=#+_ZhixiGChEQ| zvL!y$8#F%*C9Bj<%(H*Q|eNeZxJ8un#Y`yluUgYhvQ!g(d^0PxLJ(s{zTec>F$-D-5oRM!v`X?itwe*%nr)R;YqWy( zXAE1ktxj2)nXfe_LkQ>FNETU+*8TI)I!;gw= z3^PLQLw?Ri2RivaL7lWE&HcHlO11hJ+i0xPJeA@d9!Dw|KNFi?Vrr$Q+`(dpQ-w!8 zbes;H;fLd6zE>UqhryLutth8k=eW3Ubk%^twLN8?CeIcS$VADmUYNbn7KBccPczL- z^BK^}l0+%_P49Eo;B$AX2@+}=W)peuYTy~{ zH5PwrY+8Y^(w(je@%*z>w&d6+oWPmhTCej)5Yz}#j^O_h0e-#l(GB+6<>?ocksQIP zTBK9u2YDK+8~NJNuq*$jT(WAoT0pd!U^Cq96<-yw;T?VX4(FbwPEGzs)pY4DqCHkpkw>4UUi+0)?B&3Trpr`B zx;P!-yeOpg^2*c|@`ggdr6Moei(6mJ#JB)pVK4r=n3sqVk)8yCT68cWILpGKO#^;) zgR)!PLdoz$Vy=WMl?I5K+!uRy^{&|0MXB!6BlEU9obuWSuhAd$JeChh>d>=4%F)Hm zYp2(IL@~V)?qQcs)J%s&uBH?e0MF#2_?n7J_?0iSsO#MkU?yA}q+Q_pu_%mGR#T)K zU4chY-v&kn%cxU-SmH_(*H?{WiR8JE1()>f?Y;*MrbSm0qMC{A~SYbw^m|X40MV@ysrCHWPxa5N6^sMrAG5R>7p} z)@02;R{R+Mvm1py@PgjsN4xicBXI+Oz#e$E1kV`X@IAAMvU3mlqydj7CcGWgQN31Q z5;=X$HwOk65TFKl+VCr!Y&xro1W(oF=TNrBn@FQ1iM#SY!&aJDn{F-sgX%*E;a&kv zCt~oYh10-LXT-_j7(D;8GlrQZtthGL7++Qb!|Q}0G28AtQREc7#akxb{8ciO(!r=C z{Q~RzMx-cY*T%UqIbtil@|5FoVPjY#7<9?~JKI`fHkVf}FCkzVJ+y12!jJnfLB%R^wQ zFT_x>3=bQuv2qGE$m$zf(TpVw_negmN;pFv3(>wvxIzSkX(th`kbDu^?+8O)yS+~e G0R98A>RHqP diff --git a/plugin/SqueezeESP32/Graphics.pm b/plugin/SqueezeESP32/Graphics.pm index 70909e7d..db58703d 100644 --- a/plugin/SqueezeESP32/Graphics.pm +++ b/plugin/SqueezeESP32/Graphics.pm @@ -15,84 +15,37 @@ my $VISUALIZER_VUMETER = 1; my $VISUALIZER_SPECTRUM_ANALYZER = 2; my $VISUALIZER_WAVEFORM = 3; -my $width = $prefs->get('width') || 128; -my $spectrum_scale = $prefs->get('spectrum_scale') || 50; +{ + #__PACKAGE__->mk_accessor('array', 'modes'); + __PACKAGE__->mk_accessor('rw', 'modes'); + __PACKAGE__->mk_accessor('rw', qw(vfdmodel)); +} -my @modes = ( - # mode 0 - { desc => ['BLANK'], - bar => 0, secs => 0, width => $width, - params => [$VISUALIZER_NONE] }, - # mode 1 - { desc => ['PROGRESS_BAR'], - bar => 1, secs => 0, width => $width, - params => [$VISUALIZER_NONE] }, - # mode 2 - { desc => ['ELAPSED'], - bar => 0, secs => 1, width => $width, - params => [$VISUALIZER_NONE] }, - # mode 3 - { desc => ['ELAPSED', 'AND', 'PROGRESS_BAR'], - bar => 1, secs => 1, width => $width, - params => [$VISUALIZER_NONE] }, - # mode 4 - { desc => ['REMAINING'], - bar => 0, secs => -1, width => $width, - params => [$VISUALIZER_NONE] }, - # mode 5 - { desc => ['CLOCK'], - bar => 0, secs => 0, width => $width, clock => 1, - params => [$VISUALIZER_NONE] }, - # mode 6 - { desc => ['SETUP_SHOWBUFFERFULLNESS'], - bar => 0, secs => 0, width => $width, fullness => 1, - params => [$VISUALIZER_NONE] }, - # mode 7 - { desc => ['VISUALIZER_VUMETER_SMALL'], - bar => 0, secs => 0, width => $width, _width => -20, - # extra parameters (width, height, col (< 0 = from right), row (< 0 = from bottom), bars, left space) - params => [$VISUALIZER_VUMETER, 20, 32, -20, 0, 2] }, - # mode 8 - { desc => ['VISUALIZER_SPECTRUM_ANALYZER_SMALL'], - bar => 0, secs => 0, width => $width, _width => -32, - # extra parameters (width, height, col (< 0 = from right), row (< 0 = from bottom), bars, left space) - params => [$VISUALIZER_SPECTRUM_ANALYZER, 32, 32, -32, 0, 2, 6, $spectrum_scale] }, - # mode 9 - { desc => ['VISUALIZER_VUMETER'], - bar => 0, secs => 0, width => $width, - params => [$VISUALIZER_VUMETER] }, - # mode 10 - { desc => ['VISUALIZER_SPECTRUM_ANALYZER'], - bar => 0, secs => 0, width => $width, - # extra parameters (bars) - params => [$VISUALIZER_SPECTRUM_ANALYZER, 16, $spectrum_scale] }, - # mode 11 - { desc => ['VISUALIZER_VUMETER', 'AND', 'ELAPSED'], - bar => 0, secs => 1, width => $width, - params => [$VISUALIZER_VUMETER] }, - # mode 12 - { desc => ['VISUALIZER_SPECTRUM_ANALYZER', 'AND', 'ELAPSED'], - bar => 0, secs => 1, width => $width, - # extra parameters (bars) - params => [$VISUALIZER_SPECTRUM_ANALYZER, 16, $spectrum_scale] }, - # mode 13 - { desc => ['VISUALIZER_VUMETER', 'AND', 'REMAINING'], - bar => 0, secs => -1, width => $width, - params => [$VISUALIZER_VUMETER] }, - # mode 14 - { desc => ['VISUALIZER_SPECTRUM_ANALYZER', 'AND', 'REMAINING'], - bar => 0, secs => -1, width => $width, - # extra parameters (bars) - params => [$VISUALIZER_SPECTRUM_ANALYZER, 16, $spectrum_scale] }, - -); +use Data::Dumper; +sub new { + my $class = shift; + my $client = shift; + + my $display = $class->SUPER::new($client); + + $display->init_accessor( + modes => $display->build_modes, + vfdmodel => 'graphic-x32', # doesn't matter much + ); + + return $display; +} + +=comment sub modes { return \@modes; } +=cut sub nmodes { - return $#modes; + # -1 for LMS bug workaround + return scalar(@{shift->modes}) - 1; } sub displayWidth { @@ -116,12 +69,6 @@ sub displayWidth { } } -# I don't think LMS renderer handles properly screens other than 32 pixels. It -# seems that all we get is a 32 pixel-tall data with anything else padded to 0 -# i.e. if we try 64 pixels height, bytes 0..3 and 4..7 will contains the same -# pattern than the 32 pixels version, where one would have expected bytes 4..7 -# to be empty - sub brightnessMap { return (65535, 10, 50, 100, 200); } @@ -132,12 +79,103 @@ sub bytesPerColumn { } =cut +# I don't think LMS renderer handles properly screens other than 32 pixels. It +# seems that all we get is a 32 pixel-tall data with anything else padded to 0 +# i.e. if we try 64 pixels height, bytes 0..3 and 4..7 will contains the same +# pattern than the 32 pixels version, where one would have expected bytes 4..7 +# to be empty sub displayHeight { return 32; } +=comment sub vfdmodel { return 'graphic-'.$width.'x32'; } +=cut + +sub build_modes { + my $client = shift->client; + print("CLIENT IN BUILD MODE $client\n"); + my $cprefs = $prefs->client($client); + + my $width = shift || $cprefs->get('width') || $prefs->get('width') || 128; + my $small_VU = shift || $cprefs->get('small_vu') || 0.15; + my $small_spectrum = shift || $cprefs->get('small_spectrum') || 0.25; + my $spectrum_bar = shift || $cprefs->get('spectrum_bar') || { 'small' => 0.1875, 'full' => 0.125 }; + my $spectrum_scale = shift || $cprefs->get('spectrum_scale') || $prefs->get('spectrum_scale') || 50; + + my @modes = ( + # mode 0 + { desc => ['BLANK'], + bar => 0, secs => 0, width => $width, + params => [$VISUALIZER_NONE] }, + # mode 1 + { desc => ['PROGRESS_BAR'], + bar => 1, secs => 0, width => $width, + params => [$VISUALIZER_NONE] }, + # mode 2 + { desc => ['ELAPSED'], + bar => 0, secs => 1, width => $width, + params => [$VISUALIZER_NONE] }, + # mode 3 + { desc => ['ELAPSED', 'AND', 'PROGRESS_BAR'], + bar => 1, secs => 1, width => $width, + params => [$VISUALIZER_NONE] }, + # mode 4 + { desc => ['REMAINING'], + bar => 0, secs => -1, width => $width, + params => [$VISUALIZER_NONE] }, + # mode 5 + { desc => ['CLOCK'], + bar => 0, secs => 0, width => $width, clock => 1, + params => [$VISUALIZER_NONE] }, + # mode 6 + { desc => ['SETUP_SHOWBUFFERFULLNESS'], + bar => 0, secs => 0, width => $width, fullness => 1, + params => [$VISUALIZER_NONE] }, + # mode 7 + { desc => ['VISUALIZER_VUMETER_SMALL'], + bar => 0, secs => 0, width => $width, _width => int -($small_VU*$width), + # extra parameters (width, height, col (< 0 = from right), row (< 0 = from bottom), left_space) + params => [$VISUALIZER_VUMETER, int ($small_VU* $width), 32, int -($small_VU*$width), 0, 2] }, + # mode 8 + { desc => ['VISUALIZER_SPECTRUM_ANALYZER_SMALL'], + bar => 0, secs => 0, width => $width, _width => int -($small_spectrum*$width), + # extra parameters (width, height, col (< 0 = from right), row (< 0 = from bottom), left_space, bars) + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($small_spectrum*$width), 32, int -($small_spectrum*$width), 0, 2, int ($small_spectrum*$width*$spectrum_bar->{small}), $spectrum_scale] }, + # mode 9 + { desc => ['VISUALIZER_VUMETER'], + bar => 0, secs => 0, width => $width, + params => [$VISUALIZER_VUMETER] }, + # mode 10 + { desc => ['VISUALIZER_SPECTRUM_ANALYZER'], + bar => 0, secs => 0, width => $width, + # extra parameters (bars) + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($width * $spectrum_bar->{full}), $spectrum_scale] }, + # mode 11 + { desc => ['VISUALIZER_VUMETER', 'AND', 'ELAPSED'], + bar => 0, secs => 1, width => $width, + params => [$VISUALIZER_VUMETER] }, + # mode 12 + { desc => ['VISUALIZER_SPECTRUM_ANALYZER', 'AND', 'ELAPSED'], + bar => 0, secs => 1, width => $width, + # extra parameters (bars) + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($width * $spectrum_bar->{full}), $spectrum_scale] }, + # mode 13 + { desc => ['VISUALIZER_VUMETER', 'AND', 'REMAINING'], + bar => 0, secs => -1, width => $width, + params => [$VISUALIZER_VUMETER] }, + # mode 14 + { desc => ['VISUALIZER_SPECTRUM_ANALYZER', 'AND', 'REMAINING'], + bar => 0, secs => -1, width => $width, + # extra parameters (bars) + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($width * $spectrum_bar->{full}), $spectrum_scale] }, + # dummy for LMS bug workaround + { desc => [], bar => 0, secs => -1, width => $width,params => [] }, + ); + + return \@modes; +} 1; \ No newline at end of file diff --git a/plugin/SqueezeESP32/Player.pm b/plugin/SqueezeESP32/Player.pm index a1dc3e33..e694d03b 100644 --- a/plugin/SqueezeESP32/Player.pm +++ b/plugin/SqueezeESP32/Player.pm @@ -25,6 +25,7 @@ sub playerSettingsFrame { if ($id == 0xfe) { $value = (unpack('Cn', $$data_ref))[1]; if ($value > 100 && $value < 400) { + $client->display->modes($client->display->build_modes($value)); $client->display->widthOverride(1, $value); $client->update; } diff --git a/plugin/SqueezeESP32/install.xml b/plugin/SqueezeESP32/install.xml index 405670f3..812417df 100644 --- a/plugin/SqueezeESP32/install.xml +++ b/plugin/SqueezeESP32/install.xml @@ -10,6 +10,6 @@ PLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.20 + 0.21 Philippe diff --git a/plugin/repo.xml b/plugin/repo.xml index 838bd4d0..ed988600 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -4,7 +4,7 @@ https://github.com/sle118/squeezelite-esp32 Philippe - c17cce48b8fa14f995ca93f51fdab52b4bdcb422 + f1955a3c930a0c1809a1d2dac85970905c9b68a0 philippe_44@outlook.com SqueezeESP32 additional player id (100) http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32.zip