mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-06 11:36:59 +03:00
mirror make branch changes on plugin (need to point there ...)
This commit is contained in:
@@ -17,6 +17,17 @@ my $VISUALIZER_WAVEFORM = 3;
|
||||
my $VISUALIZER_VUMETER_ESP32 = 0x11;
|
||||
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('rw', 'modes');
|
||||
@@ -33,14 +44,16 @@ sub new {
|
||||
$cprefs->init( {
|
||||
width => 128,
|
||||
small_VU => 15,
|
||||
spectrum => { scale => 25,
|
||||
small => { size => 25, band => 5.33 },
|
||||
full => { band => 8 },
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
$display->init_accessor(
|
||||
spectrum => \%SPECTRUM_DEFAULTS,
|
||||
} );
|
||||
|
||||
$prefs->migrateClient(2, sub {
|
||||
my ($cprefs, $client) = @_;
|
||||
sanitizeSpectrum($cprefs->get('spectrum'));
|
||||
1;
|
||||
});
|
||||
|
||||
$display->init_accessor(
|
||||
modes => $display->build_modes,
|
||||
# Only seems to matter for screensaver and update to decide font. Not
|
||||
# any value is acceptable, so use Boom value which seems to be best
|
||||
@@ -106,6 +119,16 @@ sub displayHeight {
|
||||
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 {
|
||||
my $client = shift->client;
|
||||
my $cprefs = $prefs->client($client);
|
||||
@@ -118,9 +141,9 @@ sub build_modes {
|
||||
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');
|
||||
|
||||
my $small_spectrum_pos = { x => $width - int ($spectrum->{small}->{size} * $width / 100),
|
||||
my $spectrum = sanitizeSpectrum($cprefs->get('sprectrum'));
|
||||
|
||||
my $small_spectrum_pos = { x => $width - int ($spectrum->{small}->{size} * $width / 100),
|
||||
width => int ($spectrum->{small}->{size} * $width / 100),
|
||||
};
|
||||
my $small_VU_pos = { x => $width - int ($small_VU * $width / 100),
|
||||
@@ -224,7 +247,7 @@ my @extra = (
|
||||
);
|
||||
|
||||
@modes = (@modes, @extra) if $cprefs->get('height') > 32;
|
||||
|
||||
|
||||
return \@modes;
|
||||
}
|
||||
|
||||
|
||||
@@ -91,16 +91,19 @@ sub init {
|
||||
}
|
||||
|
||||
$client->SUPER::init(@_);
|
||||
$client->config_artwork;
|
||||
$client->send_equalizer;
|
||||
|
||||
main::INFOLOG && $log->is_info && $log->info("SqueezeESP player connected: " . $client->id);
|
||||
}
|
||||
|
||||
sub initPrefs {
|
||||
my $client = shift;
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
@@ -184,11 +187,13 @@ sub update_artwork {
|
||||
my $cprefs = $prefs->client($client);
|
||||
|
||||
my $artwork = $cprefs->get('artwork') || return;
|
||||
|
||||
return unless $artwork->{'enable'};
|
||||
|
||||
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 $path = 'music/current/cover_' . $s . 'x' . $s . '_o.jpg';
|
||||
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') ) {
|
||||
my $header = pack('Nnn', $artwork->{'enable'}, $artwork->{'x'}, $artwork->{'y'});
|
||||
$client->sendFrame( grfa => \$header );
|
||||
$client->display->update;
|
||||
}
|
||||
}
|
||||
|
||||
sub reconnect {
|
||||
my $client = shift;
|
||||
$client->pluginData('artwork_md5', '');
|
||||
$client->SUPER::reconnect(@_);
|
||||
|
||||
$client->pluginData('artwork_md5', '');
|
||||
$client->config_artwork;
|
||||
$client->send_equalizer;
|
||||
}
|
||||
|
||||
# Change the analog output mode between headphone and sub-woofer
|
||||
|
||||
@@ -43,22 +43,29 @@ sub handler {
|
||||
if ($paramRef->{'saveSettings'}) {
|
||||
if ($client->displayWidth) {
|
||||
$cprefs->set('small_VU', $paramRef->{'pref_small_VU'} || 15);
|
||||
my $spectrum = {
|
||||
scale => $paramRef->{'pref_spectrum_scale'} || 25,
|
||||
small => { size => $paramRef->{'pref_spectrum_small_size'} || 25,
|
||||
band => $paramRef->{'pref_spectrum_small_band'} || 5.33 },
|
||||
full => { band => $paramRef->{'pref_spectrum_full_band'} } || 8,
|
||||
};
|
||||
|
||||
require Plugins::SqueezeESP32::Graphics;
|
||||
my $spectrum = Plugins::SqueezeESP32::Graphics::sanitizeSpectrum({
|
||||
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);
|
||||
|
||||
my $artwork = {
|
||||
enable => $paramRef->{'pref_artwork_enable'},
|
||||
enable => $paramRef->{'pref_artwork_enable'} eq 'on',
|
||||
x => $paramRef->{'pref_artwork_x'} || 0,
|
||||
y => $paramRef->{'pref_artwork_y'} || 0,
|
||||
};
|
||||
|
||||
$cprefs->set('artwork', $artwork);
|
||||
$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
|
||||
if ($artwork->{'enable'}) {
|
||||
@@ -66,6 +73,7 @@ sub handler {
|
||||
} else {
|
||||
$client->config_artwork();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
my $equalizer = $cprefs->get('equalizer');
|
||||
|
||||
@@ -24,6 +24,12 @@ $prefs->migrateClient(1, sub {
|
||||
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 {
|
||||
$_[2]->send_equalizer;
|
||||
}, 'equalizer');
|
||||
|
||||
@@ -10,6 +10,6 @@
|
||||
<name>PLUGIN_SQUEEZEESP32</name>
|
||||
<description>PLUGIN_SQUEEZEESP32_DESC</description>
|
||||
<module>Plugins::SqueezeESP32::Plugin</module>
|
||||
<version>0.200</version>
|
||||
<version>0.210</version>
|
||||
<creator>Philippe</creator>
|
||||
</extensions>
|
||||
|
||||
@@ -80,8 +80,10 @@ PLUGIN_SQUEEZEESP32_ARTWORK
|
||||
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 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 Using artwork on less than 16-levels grayscale display if really poor quality
|
||||
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 <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
|
||||
DE Aktivieren
|
||||
|
||||
Reference in New Issue
Block a user