From c865dfbe9c9f0ddf0b7bedf1de26e6997c713365 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Thu, 5 Mar 2020 19:46:06 -0800 Subject: [PATCH] By player screen settings --- plugin/SqueezeESP32.zip | Bin 5847 -> 7560 bytes plugin/SqueezeESP32/Graphics.pm | 49 ++++++------- .../plugins/SqueezeESP32/settings/player.html | 28 ++++++++ plugin/SqueezeESP32/Player.pm | 1 + plugin/SqueezeESP32/PlayerSettings.pm | 66 ++++++++++++++++++ plugin/SqueezeESP32/Plugin.pm | 14 ++-- plugin/SqueezeESP32/install.xml | 2 +- plugin/SqueezeESP32/strings.txt | 38 ++++++++-- plugin/repo.xml | 2 +- 9 files changed, 160 insertions(+), 40 deletions(-) create mode 100644 plugin/SqueezeESP32/HTML/EN/plugins/SqueezeESP32/settings/player.html create mode 100644 plugin/SqueezeESP32/PlayerSettings.pm diff --git a/plugin/SqueezeESP32.zip b/plugin/SqueezeESP32.zip index a64028a7e4a374a5e647c97b283aa86b295bc31a..743e2fe5c00d4a77c925a6c043dd438cd3979188 100644 GIT binary patch delta 5455 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 XkGaPs4Y>lk0=ggpf!gT*R^|TygM$7| diff --git a/plugin/SqueezeESP32/Graphics.pm b/plugin/SqueezeESP32/Graphics.pm index db58703d..f6a92158 100644 --- a/plugin/SqueezeESP32/Graphics.pm +++ b/plugin/SqueezeESP32/Graphics.pm @@ -21,13 +21,22 @@ my $VISUALIZER_WAVEFORM = 3; __PACKAGE__->mk_accessor('rw', qw(vfdmodel)); } -use Data::Dumper; - sub new { my $class = shift; my $client = shift; my $display = $class->SUPER::new($client); + my $cprefs = $prefs->client($client); + + $cprefs->init( { + width => 128, + small_VU => 15, + spectrum => { scale => 25, + small => { size => 25, band => 5.33 }, + full => { band => 8 }, + }, + } + ); $display->init_accessor( modes => $display->build_modes, @@ -44,14 +53,13 @@ sub modes { =cut sub nmodes { - # -1 for LMS bug workaround - return scalar(@{shift->modes}) - 1; + return scalar($#{shift->modes()}); } sub displayWidth { my $display = shift; my $client = $display->client; - + # if we're showing the always-on visualizer & the current buttonmode # hasn't overridden, then use the playing display mode to index # into the display width, otherwise, it's fullscreen. @@ -88,22 +96,13 @@ 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 $width = shift || $cprefs->get('width') || 128; + my $small_VU = $cprefs->get('small_VU'); + my $spectrum = $cprefs->get('spectrum'); my @modes = ( # mode 0 @@ -136,14 +135,14 @@ sub build_modes { params => [$VISUALIZER_NONE] }, # mode 7 { desc => ['VISUALIZER_VUMETER_SMALL'], - bar => 0, secs => 0, width => $width, _width => int -($small_VU*$width), + bar => 0, secs => 0, width => $width, _width => int -($small_VU*$width/100), # 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] }, + params => [$VISUALIZER_VUMETER, int ($small_VU*$width/100), 32, int -($small_VU*$width/100), 0, 2] }, # mode 8 { desc => ['VISUALIZER_SPECTRUM_ANALYZER_SMALL'], - bar => 0, secs => 0, width => $width, _width => int -($small_spectrum*$width), + bar => 0, secs => 0, width => $width, _width => int -($spectrum->{small}->{size}*$width/100), # 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] }, + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($spectrum->{small}->{size}*$width/100), 32, int -($spectrum->{small}->{size}*$width/100), 0, 2, int ($spectrum->{small}->{size}/100*$width/$spectrum->{small}->{band}), $spectrum->{scale}/100] }, # mode 9 { desc => ['VISUALIZER_VUMETER'], bar => 0, secs => 0, width => $width, @@ -152,7 +151,7 @@ sub build_modes { { desc => ['VISUALIZER_SPECTRUM_ANALYZER'], bar => 0, secs => 0, width => $width, # extra parameters (bars) - params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($width * $spectrum_bar->{full}), $spectrum_scale] }, + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($width/$spectrum->{full}->{band}), $spectrum->{scale}/100] }, # mode 11 { desc => ['VISUALIZER_VUMETER', 'AND', 'ELAPSED'], bar => 0, secs => 1, width => $width, @@ -161,7 +160,7 @@ sub build_modes { { 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] }, + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($width/$spectrum->{full}->{band}), $spectrum->{scale}/100] }, # mode 13 { desc => ['VISUALIZER_VUMETER', 'AND', 'REMAINING'], bar => 0, secs => -1, width => $width, @@ -170,9 +169,7 @@ sub build_modes { { 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 => [] }, + params => [$VISUALIZER_SPECTRUM_ANALYZER, int ($width/$spectrum->{full}->{band}), $spectrum->{scale}/100] }, ); return \@modes; diff --git a/plugin/SqueezeESP32/HTML/EN/plugins/SqueezeESP32/settings/player.html b/plugin/SqueezeESP32/HTML/EN/plugins/SqueezeESP32/settings/player.html new file mode 100644 index 00000000..17589674 --- /dev/null +++ b/plugin/SqueezeESP32/HTML/EN/plugins/SqueezeESP32/settings/player.html @@ -0,0 +1,28 @@ +[% PROCESS settings/header.html %] + + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_WIDTH" desc="PLUGIN_SQUEEZEESP32_WIDTH_DESC" %] + + [% prefs.pref_width %] + [% END %] + + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SMALL_VU" desc="PLUGIN_SQUEEZEESP32_SMALL_VU_DESC" %] + + [% END %] + + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE" desc="PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE_DESC" %] + + [% END %] + + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM" desc="PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_DESC" %] + [% "PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_SIZE" | string %]  + + [% "PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_BAND" | string %]  + + [% END %] + + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND" desc="PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND_DESC" %] + + [% END %] + + +[% PROCESS settings/footer.html %] diff --git a/plugin/SqueezeESP32/Player.pm b/plugin/SqueezeESP32/Player.pm index e694d03b..946eb303 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) { + $prefs->client($client)->set('width', $value); $client->display->modes($client->display->build_modes($value)); $client->display->widthOverride(1, $value); $client->update; diff --git a/plugin/SqueezeESP32/PlayerSettings.pm b/plugin/SqueezeESP32/PlayerSettings.pm new file mode 100644 index 00000000..f4fc24b0 --- /dev/null +++ b/plugin/SqueezeESP32/PlayerSettings.pm @@ -0,0 +1,66 @@ +package Plugins::SqueezeESP32::PlayerSettings; + +use strict; +use base qw(Slim::Web::Settings); +use List::Util qw(first); + +use Slim::Utils::Log; +use Slim::Utils::Prefs; + +my $sprefs = preferences('server'); +my $prefs = preferences('plugin.squeezeesp32'); +my $log = logger('plugin.squeezeesp32'); + +sub name { + return Slim::Web::HTTP::CSRF->protectName('PLUGIN_SQUEEZEESP32_PLAYERSETTINGS'); +} + +sub needsClient { + return 1; +} + +sub validFor { + my ($class, $client) = @_; + return $client->model eq 'squeezeesp32'; +} + +sub page { + return Slim::Web::HTTP::CSRF->protectURI('plugins/SqueezeESP32/settings/player.html'); +} + +sub prefs { + my ($class, $client) = @_; + my @prefs = qw(width small_VU spectrum); + return ($prefs->client($client), @prefs); +} + +sub handler { + my ($class, $client, $paramRef) = @_; + + my ($cprefs, @prefs) = $class->prefs($client); + + if ($paramRef->{'saveSettings'}) { + $cprefs->set('small_VU', $paramRef->{'pref_small_VU'}); + my $spectrum = { scale => $paramRef->{'pref_spectrum_scale'}, + small => { size => $paramRef->{'pref_spectrum_small_size'}, + band => $paramRef->{'pref_spectrum_small_band'} }, + full => { band => $paramRef->{'pref_spectrum_full_band'} }, + }; + $cprefs->set('spectrum', $spectrum); + $client->display->modes($client->display->build_modes); + $client->display->update; + } + + # as there is nothing captured, we need to re-set these variables + $paramRef->{'pref_width'} = $cprefs->get('width'); + + # here I don't know why you need to set again spectrum which is a reference + # to a hash. Using $paramRef->{prefs} does not work either. It seems that + # soem are copies of value, some are references, can't figure out.This whole + # logic of "Settings" is beyond me and I really hate it + $paramRef->{'pref_spectrum'} = $cprefs->get('spectrum'); + + return $class->SUPER::handler($client, $paramRef); +} + +1; \ No newline at end of file diff --git a/plugin/SqueezeESP32/Plugin.pm b/plugin/SqueezeESP32/Plugin.pm index e39979bf..5078f66c 100644 --- a/plugin/SqueezeESP32/Plugin.pm +++ b/plugin/SqueezeESP32/Plugin.pm @@ -8,11 +8,6 @@ use Slim::Utils::Log; my $prefs = preferences('plugin.squeezeesp32'); -$prefs->init({ - width => 128, - spectrum_scale => 50, -}); - my $log = Slim::Utils::Log->addLogCategory({ 'category' => 'plugin.squeezeesp32', 'defaultLevel' => 'INFO', @@ -23,10 +18,13 @@ sub initPlugin { my $class = shift; if ( main::WEBUI ) { - require Plugins::SqueezeESP32::Settings; - Plugins::SqueezeESP32::Settings->new; + require Plugins::SqueezeESP32::PlayerSettings; + Plugins::SqueezeESP32::PlayerSettings->new; + + # require Plugins::SqueezeESP32::Settings; + # Plugins::SqueezeESP32::Settings->new; } - + $class->SUPER::initPlugin(@_); Slim::Networking::Slimproto::addPlayerClass($class, 100, 'squeezeesp32', { client => 'Plugins::SqueezeESP32::Player', display => 'Plugins::SqueezeESP32::Graphics' }); $log->info("Added class 100 for SqueezeESP32"); diff --git a/plugin/SqueezeESP32/install.xml b/plugin/SqueezeESP32/install.xml index 812417df..38f410ad 100644 --- a/plugin/SqueezeESP32/install.xml +++ b/plugin/SqueezeESP32/install.xml @@ -10,6 +10,6 @@ PLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.21 + 0.30 Philippe diff --git a/plugin/SqueezeESP32/strings.txt b/plugin/SqueezeESP32/strings.txt index d00ff9b5..1dd9e492 100644 --- a/plugin/SqueezeESP32/strings.txt +++ b/plugin/SqueezeESP32/strings.txt @@ -13,13 +13,43 @@ PLUGIN_SQUEEZEESP32_BANNER_TEXT PLUGIN_SQUEEZEESP32_DESC EN Adds a new player id (100) to enable display with SqueezeESP32 +PLUGIN_SQUEEZEESP32_PLAYERSETTINGS + EN Display (ESP32) + PLUGIN_SQUEEZEESP32_WIDTH EN Screen width + +PLUGIN_SQUEEZEESP32_WIDTH_DESC + EN Width of the display in pixel as reported by the player + +PLUGIN_SQUEEZEESP32_SMALL_VU + EN Small VU size + +PLUGIN_SQUEEZEESP32_SMALL_VU_DESC + EN % of the display used for small VU (right-justified) PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE - EN Spectrum scale - + EN Spectrum scaling + PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE_DESC - EN Sets the scale factor % of spectrum visualizer by halves for better representation. - EN For example, 50 means that 50% of spectrum is displayed in 1/2 of the screen, so it's linear... + EN % of Spectrum displayed in first half of the screen. For example, 50 means that 50% of spectrum is displayed in 1/2 of the screen EN But 25 means that only 25% of spectrum is displayed in 1/2 of the screen, so it's a sort of log + +PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM + EN Small spectrum options + +PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_DESC + EN Size: % of the screen used by small spectrum + EN
Band factor: number of bands is the width of the spectrum screen divided by this factor + +PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_SIZE + EN Size + +PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_BAND + EN Band factor + +PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND + EN Full spectrum band factor + +PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND_DESC + EN The number of bands is the width of the screen divided by this factor diff --git a/plugin/repo.xml b/plugin/repo.xml index 91822b34..ddbdf68f 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -4,7 +4,7 @@ https://github.com/sle118/squeezelite-esp32 Philippe - f1955a3c930a0c1809a1d2dac85970905c9b68a0 + a110570f53f24c571492b13cf225cbfd1bdf9a52 philippe_44@outlook.com SqueezeESP32 additional player id (100) http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32.zip