|  | @@ -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;
 | 
	
		
			
				|  |  |  }	
 | 
	
		
			
				|  |  |  
 |