mirror make branch changes on plugin (need to point there ...)

This commit is contained in:
Philippe G
2020-12-02 14:06:49 -08:00
parent 3dc2ed9629
commit 99019cd22f
6 changed files with 78 additions and 30 deletions

View File

@@ -17,6 +17,17 @@ my $VISUALIZER_WAVEFORM = 3;
my $VISUALIZER_VUMETER_ESP32 = 0x11; my $VISUALIZER_VUMETER_ESP32 = 0x11;
my $VISUALIZER_SPECTRUM_ANALYZER_ESP32 = 0x12; my $VISUALIZER_SPECTRUM_ANALYZER_ESP32 = 0x12;
my %SPECTRUM_DEFAULTS = (
scale => 25,
small => {
size => 25,
band => 5.33
},
full => {
band => 8
},
);
{ {
#__PACKAGE__->mk_accessor('array', 'modes'); #__PACKAGE__->mk_accessor('array', 'modes');
__PACKAGE__->mk_accessor('rw', 'modes'); __PACKAGE__->mk_accessor('rw', 'modes');
@@ -33,12 +44,14 @@ sub new {
$cprefs->init( { $cprefs->init( {
width => 128, width => 128,
small_VU => 15, small_VU => 15,
spectrum => { scale => 25, spectrum => \%SPECTRUM_DEFAULTS,
small => { size => 25, band => 5.33 }, } );
full => { band => 8 },
}, $prefs->migrateClient(2, sub {
} my ($cprefs, $client) = @_;
); sanitizeSpectrum($cprefs->get('spectrum'));
1;
});
$display->init_accessor( $display->init_accessor(
modes => $display->build_modes, modes => $display->build_modes,
@@ -106,6 +119,16 @@ sub displayHeight {
return 32; return 32;
} }
sub sanitizeSpectrum {
my ($spectrum) = shift;
$spectrum->{small}->{size} ||= $SPECTRUM_DEFAULTS{small}->{size};
$spectrum->{small}->{band} ||= $SPECTRUM_DEFAULTS{small}->{band};
$spectrum->{full}->{band} ||= $SPECTRUM_DEFAULTS{full}->{band};
return $spectrum;
}
sub build_modes { sub build_modes {
my $client = shift->client; my $client = shift->client;
my $cprefs = $prefs->client($client); my $cprefs = $prefs->client($client);
@@ -118,7 +141,7 @@ sub build_modes {
my $width_low = ($artwork->{'enable'} && $artwork->{'x'} && ($artwork->{'y'} >= 32 || $disp_width - $artwork->{'x'} > 32)) ? $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 $small_VU = $cprefs->get('small_VU');
my $spectrum = $cprefs->get('spectrum'); my $spectrum = sanitizeSpectrum($cprefs->get('sprectrum'));
my $small_spectrum_pos = { x => $width - int ($spectrum->{small}->{size} * $width / 100), my $small_spectrum_pos = { x => $width - int ($spectrum->{small}->{size} * $width / 100),
width => int ($spectrum->{small}->{size} * $width / 100), width => int ($spectrum->{small}->{size} * $width / 100),

View File

@@ -91,16 +91,19 @@ sub init {
} }
$client->SUPER::init(@_); $client->SUPER::init(@_);
$client->config_artwork;
$client->send_equalizer;
main::INFOLOG && $log->is_info && $log->info("SqueezeESP player connected: " . $client->id); main::INFOLOG && $log->is_info && $log->info("SqueezeESP player connected: " . $client->id);
} }
sub initPrefs { sub initPrefs {
my $client = shift; my $client = shift;
$sprefs->client($client)->init($defaultPrefs); $sprefs->client($client)->init($defaultPrefs);
$prefs->client($client)->init( { equalizer => [(0) x 10] } );
$prefs->client($client)->init( {
equalizer => [(0) x 10],
artwork => undef,
} );
$client->SUPER::initPrefs; $client->SUPER::initPrefs;
} }
@@ -184,11 +187,13 @@ sub update_artwork {
my $cprefs = $prefs->client($client); my $cprefs = $prefs->client($client);
my $artwork = $cprefs->get('artwork') || return; my $artwork = $cprefs->get('artwork') || return;
return unless $artwork->{'enable'}; return unless $artwork->{'enable'};
my $s = min($cprefs->get('height') - $artwork->{'y'}, $cprefs->get('width') - $artwork->{'x'}); my $header = pack('Nnn', $artwork->{'enable'}, $artwork->{'x'}, $artwork->{'y'});
$client->sendFrame( grfa => \$header );
$client->display->update;
my $s = min($cprefs->get('height') - $artwork->{'y'}, $cprefs->get('width') - $artwork->{'x'});
my $params = { force => shift || 0 }; my $params = { force => shift || 0 };
my $path = 'music/current/cover_' . $s . 'x' . $s . '_o.jpg'; my $path = 'music/current/cover_' . $s . 'x' . $s . '_o.jpg';
my $body = Slim::Web::Graphics::artworkRequest($client, $path, $params, \&send_artwork, undef, HTTP::Response->new); my $body = Slim::Web::Graphics::artworkRequest($client, $path, $params, \&send_artwork, undef, HTTP::Response->new);
@@ -248,13 +253,17 @@ sub config_artwork {
if ( my $artwork = $prefs->client($client)->get('artwork') ) { if ( my $artwork = $prefs->client($client)->get('artwork') ) {
my $header = pack('Nnn', $artwork->{'enable'}, $artwork->{'x'}, $artwork->{'y'}); my $header = pack('Nnn', $artwork->{'enable'}, $artwork->{'x'}, $artwork->{'y'});
$client->sendFrame( grfa => \$header ); $client->sendFrame( grfa => \$header );
$client->display->update;
} }
} }
sub reconnect { sub reconnect {
my $client = shift; my $client = shift;
$client->pluginData('artwork_md5', '');
$client->SUPER::reconnect(@_); $client->SUPER::reconnect(@_);
$client->pluginData('artwork_md5', '');
$client->config_artwork;
$client->send_equalizer;
} }
# Change the analog output mode between headphone and sub-woofer # Change the analog output mode between headphone and sub-woofer

View File

@@ -43,22 +43,29 @@ sub handler {
if ($paramRef->{'saveSettings'}) { if ($paramRef->{'saveSettings'}) {
if ($client->displayWidth) { if ($client->displayWidth) {
$cprefs->set('small_VU', $paramRef->{'pref_small_VU'} || 15); $cprefs->set('small_VU', $paramRef->{'pref_small_VU'} || 15);
my $spectrum = {
scale => $paramRef->{'pref_spectrum_scale'} || 25, require Plugins::SqueezeESP32::Graphics;
small => { size => $paramRef->{'pref_spectrum_small_size'} || 25, my $spectrum = Plugins::SqueezeESP32::Graphics::sanitizeSpectrum({
band => $paramRef->{'pref_spectrum_small_band'} || 5.33 }, scale => $paramRef->{'pref_spectrum_scale'},
full => { band => $paramRef->{'pref_spectrum_full_band'} } || 8, small => {
}; size => $paramRef->{'pref_spectrum_small_size'},
band => $paramRef->{'pref_spectrum_small_band'}
},
full => {
band => $paramRef->{'pref_spectrum_full_band'}
},
});
$cprefs->set('spectrum', $spectrum); $cprefs->set('spectrum', $spectrum);
my $artwork = { my $artwork = {
enable => $paramRef->{'pref_artwork_enable'}, enable => $paramRef->{'pref_artwork_enable'} eq 'on',
x => $paramRef->{'pref_artwork_x'} || 0, x => $paramRef->{'pref_artwork_x'} || 0,
y => $paramRef->{'pref_artwork_y'} || 0, y => $paramRef->{'pref_artwork_y'} || 0,
}; };
$cprefs->set('artwork', $artwork); $cprefs->set('artwork', $artwork);
$client->display->modes($client->display->build_modes); $client->display->modes($client->display->build_modes);
$client->display->update; # the display update will be done below, after all is completed
# force update or disable artwork # force update or disable artwork
if ($artwork->{'enable'}) { if ($artwork->{'enable'}) {
@@ -66,6 +73,7 @@ sub handler {
} else { } else {
$client->config_artwork(); $client->config_artwork();
} }
} }
my $equalizer = $cprefs->get('equalizer'); my $equalizer = $cprefs->get('equalizer');

View File

@@ -24,6 +24,12 @@ $prefs->migrateClient(1, sub {
1; 1;
}); });
$prefs->migrateClient(2, sub {
my ($cprefs, $client) = @_;
$cprefs->set('artwork', undef) if $cprefs->get('artwork') && ref $cprefs->get('artwork') ne 'HASH';
1;
});
$prefs->setChange(sub { $prefs->setChange(sub {
$_[2]->send_equalizer; $_[2]->send_equalizer;
}, 'equalizer'); }, 'equalizer');

View File

@@ -10,6 +10,6 @@
<name>PLUGIN_SQUEEZEESP32</name> <name>PLUGIN_SQUEEZEESP32</name>
<description>PLUGIN_SQUEEZEESP32_DESC</description> <description>PLUGIN_SQUEEZEESP32_DESC</description>
<module>Plugins::SqueezeESP32::Plugin</module> <module>Plugins::SqueezeESP32::Plugin</module>
<version>0.200</version> <version>0.210</version>
<creator>Philippe</creator> <creator>Philippe</creator>
</extensions> </extensions>

View File

@@ -80,8 +80,10 @@ PLUGIN_SQUEEZEESP32_ARTWORK
PLUGIN_SQUEEZEESP32_ARTWORK_DESC PLUGIN_SQUEEZEESP32_ARTWORK_DESC
DE Wenn die Y Position kleiner als 32 ist, dann werden Plattenhüllen auf der rechten Seite angezeigt, und x definiert die Startposition. DE Wenn die Y Position kleiner als 32 ist, dann werden Plattenhüllen auf der rechten Seite angezeigt, und x definiert die Startposition.
DE Plattenhüllen werden auf Displays mit weniger als 16 Graustufen in sehr geringer Qualität angezeigt. DE Plattenhüllen werden auf Displays mit weniger als 16 Graustufen in sehr geringer Qualität angezeigt.
EN When Y position is less than 32, then artwork is displayed at the right of the main screen and x defines the starting position EN When Y position is less than 32, then artwork is displayed at the right of the main screen and X defines the starting position
EN Using artwork on less than 16-levels grayscale display if really poor quality EN <br>On large screen, it's possible to rotate the VU/Spectrum by setting a small X offset (typically 32). That will push the
EN artwork to the right and make space for a vertical VU to its left.
EN <br>Note that using artwork on less than 16-levels grayscale display if really poor quality
PLUGIN_SQUEEZEESP32_ARTWORK_ENABLE PLUGIN_SQUEEZEESP32_ARTWORK_ENABLE
DE Aktivieren DE Aktivieren