From 5e8a3fd7553967e24599cccd1c7b01965c6869a4 Mon Sep 17 00:00:00 2001 From: Philippe G Date: Sun, 16 Aug 2020 16:44:01 -0700 Subject: [PATCH] better synchronize bass/treble & equalizer remove large fonts - release finalize equalizer/tone interaction --- components/display/core/gds_text.c | 8 ++++ plugin/SqueezeESP32.zip | Bin 11503 -> 11630 bytes plugin/SqueezeESP32/Player.pm | 62 +++++++++++++++++++------- plugin/SqueezeESP32/PlayerSettings.pm | 1 + plugin/SqueezeESP32/install.xml | 2 +- plugin/repo.xml | 4 +- 6 files changed, 57 insertions(+), 20 deletions(-) diff --git a/components/display/core/gds_text.c b/components/display/core/gds_text.c index aa48ae36..eab28883 100644 --- a/components/display/core/gds_text.c +++ b/components/display/core/gds_text.c @@ -35,12 +35,20 @@ static const struct GDS_FontDef *GuessFont( struct GDS_Device *Device, int FontT case GDS_FONT_MEDIUM: default: return &Font_droid_sans_fallback_15x17; +#ifdef USE_LARGE_FONTS case GDS_FONT_LARGE: return &Font_droid_sans_fallback_24x28; break; case GDS_FONT_SEGMENT: if (Device->Height == 32) return &Font_Tarable7Seg_16x32; else return &Font_Tarable7Seg_32x64; +#else + case GDS_FONT_LARGE: + case GDS_FONT_SEGMENT: + ESP_LOGW(TAG, "large fonts disabled"); + return &Font_droid_sans_fallback_15x17; + break; +#endif } } diff --git a/plugin/SqueezeESP32.zip b/plugin/SqueezeESP32.zip index 6f4d67911ed53292fa314fea5755c56b764d3a28..41c94a051197566345bca9a5db2cf52ee88bffbb 100644 GIT binary patch delta 4076 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 diff --git a/plugin/SqueezeESP32/Player.pm b/plugin/SqueezeESP32/Player.pm index 2e0b903d..1e065155 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 { diff --git a/plugin/SqueezeESP32/PlayerSettings.pm b/plugin/SqueezeESP32/PlayerSettings.pm index 4f0af9cf..d4a4e2d6 100644 --- a/plugin/SqueezeESP32/PlayerSettings.pm +++ b/plugin/SqueezeESP32/PlayerSettings.pm @@ -73,6 +73,7 @@ sub handler { $equalizer->[$i] = $paramRef->{"pref_equalizer.$i"} || 0; } $cprefs->set('equalizer', $equalizer); + $client->update_tones($equalizer); } if ($client->displayWidth) { diff --git a/plugin/SqueezeESP32/install.xml b/plugin/SqueezeESP32/install.xml index d422c209..6cc9ba28 100644 --- a/plugin/SqueezeESP32/install.xml +++ b/plugin/SqueezeESP32/install.xml @@ -10,6 +10,6 @@ PLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.101 + 0.103 Philippe diff --git a/plugin/repo.xml b/plugin/repo.xml index a41c5f07..572a6419 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -1,10 +1,10 @@ - + https://github.com/sle118/squeezelite-esp32 Philippe - 49cb70db3a3d4359360332f1f49a845e2e4970b8 + d07bb3b0a283fbde50e5533dca695a4505971f03 philippe_44@outlook.com SqueezeESP32 additional player id (100) http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32.zip