New options for volume range.

This commit is contained in:
Pecusx
2016-11-26 14:37:02 +01:00
committed by GitHub
parent 295655eadc
commit c0768727c3
4 changed files with 72 additions and 51 deletions
+41 -13
View File
@@ -40,8 +40,10 @@ class Configuration:
# Configuration parameters
mpdport = 6600 # MPD port number
dateFormat = "%H:%M %d/%m/%Y" # Date format
volume_range = 100 # Volume range 10 to 100
volume_increment = 1 # Volume increment 1 to 10
#volume_range = 100 # Volume range 10 to 100
volume_min = 0
volume_max = 100
volume_increment = 4
display_playlist_number = False # Two line displays only, display station(n)
source = RADIO # Source RADIO or Player
stationNamesSource = LIST # Station names from playlist names or STREAM
@@ -138,14 +140,26 @@ class Configuration:
if option == 'loglevel':
next
elif option == 'volume_range':
range = int(parameter)
if range < 10:
range = 10
if range > 100:
range = 100
self.volume_range = range
self.volume_increment = int(100/range)
#elif option == 'volume_range':
# range = int(parameter)
# if range < 10:
# range = 10
# if range > 100:
# range = 100
# self.volume_range = range
# self.volume_increment = int(range/21)
elif option == 'volume_min':
if int(parameter) < 0:
self.volume_min = 0
else:
self.volume_min = int(parameter)
elif option == 'volume_max':
if int(parameter) > 100:
self.volume_max = 100
else:
self.volume_max = int(parameter)
elif option == 'remote_led':
self.remote_led = int(parameter)
@@ -269,6 +283,12 @@ class Configuration:
+ section + ' in ' + ConfigFile
log.message(msg,log.ERROR)
range = self.volume_max - self.volume_min
if range < 22:
self.volume_min = 0
sel.volume_max = 100
range = 100
self.volume_increment = int(range/21)
except ConfigParser.NoSectionError:
msg = ConfigParser.NoSectionError(section),'in',ConfigFile
log.message(msg,log.ERROR)
@@ -289,8 +309,14 @@ class Configuration:
return self.backpack_names[self.i2c_backpack]
# Get the volume range
def getVolumeRange(self):
return self.volume_range
#def getVolumeRange(self):
# return self.volume_range
def getVolumeMax(self):
return self.volume_max
def getVolumeMin(self):
return self.volume_min
# Get the volume increment
def getVolumeIncrement(self):
@@ -477,7 +503,9 @@ if __name__ == '__main__':
config = Configuration()
print "Configuration file", ConfigFile
print "Volume range:", config.getVolumeRange()
#print "Volume range:", config.getVolumeRange()
print "Volume min.:", config.getVolumeMin()
print "Volume max.:", config.getVolumeMax()
print "Volume increment:", config.getVolumeIncrement()
print "Mpd port:", config.getMpdPort()
print "Remote LED:", config.getRemoteLed()
+8 -2
View File
@@ -906,7 +906,7 @@ def display_search(lcd,radio):
def unmuteRadio(lcd,radio):
radio.unmute()
volume = radio.getVolume()
lcd.line4("Volume " + str(volume))
lcd.line4("Volume " + str(VolumeToDisplay(volume)))
radio.setDisplayMode(radio.MODE_TIME)
return
@@ -987,7 +987,7 @@ def displayVolume(lcd,radio):
if radio.muted():
msg = "Sound muted"
else:
msg = "Volume " + str(radio.getVolume())
msg = "Volume " + str(VolumeToDisplay(radio.getVolume()))
if radio.getTimer():
msg = msg + " " + radio.getTimerString()
if radio.alarmActive():
@@ -1054,6 +1054,12 @@ def displayInfo(lcd,ipaddr,mpd_version):
lcd.scroll1("IP "+ ipaddr,interrupt)
return
def VolumeToDisplay(volume):
volume = (volume - config.getVolumeMin()) * 100
tym = (config.getVolumeMax() - config.getVolumeMin())
volume = volume / tym
return volume
# Check Timer fired
def checkTimer(radio):
interrupt = False
+22 -35
View File
@@ -408,7 +408,7 @@ class Radio:
self.current_id = self.getStoredID(self.current_file)
log.message("radio.start current ID " + str(self.current_id), log.DEBUG)
self.volume = self.getStoredVolume()
self._setVolume(self.volume)
self.setVolume(self.volume)
# Alarm and timer settings
self.timeTimer = int(time.time())
@@ -854,7 +854,7 @@ class Radio:
# Get volume and check if it has been changed by any MPD external client
# Slug MPD calls to no more than per 0.5 second
def _getVolume(self):
def getVolume(self):
volume = 0
error = False
try:
@@ -866,7 +866,7 @@ class Radio:
else:
volume = self.volume
except:
log.message("radio._getVolume failed", log.ERROR)
log.message("radio.getVolume failed", log.ERROR)
volume = 1
error = True
@@ -875,17 +875,21 @@ class Radio:
error = True
if volume < 0:
error = True
if not error:
if volume < config.getVolumeMin():
volume = config.getVolumeMin()
if volume > config.getVolumeMax():
wolume = config.getVolumeMax()
if volume != self.volume:
if not error:
self.device_error_cnt = 0
log.message("radio._getVolume external client changed volume "
log.message("radio.getVolume external client changed volume "
+ str(volume),log.DEBUG)
self._setVolume(volume)
self.setVolume(volume)
self.volumeChange = True
else:
self.device_error_cnt += 1
log.message("radio._getVolume audio device error " + str(volume), log.ERROR)
log.message("radio.getVolume audio device error " + str(volume), log.ERROR)
if self.device_error_cnt > 10:
msg = "Sound device error - exiting"
@@ -895,49 +899,32 @@ class Radio:
return self.volume
def getVolume(self):
increment = config.getVolumeIncrement()
return self._getVolume()/increment
# Check for volume change
def volumeChanged(self):
volumeChange = self.volumeChange
self.volumeChange = False
return volumeChange
# Return the volume range
def getVolumeRange(self):
return config.getVolumeRange()
# Set volume (Called from the radio client or external mpd client via getVolume())
# Set volume 0-100
def setVolume(self,volume):
range = config.getVolumeRange()
log.message("radio.setVolume vol=" + str(volume)
+ " (range 0-" + str(range) + ")",log.DEBUG)
increment = config.getVolumeIncrement()
volume = self._setVolume(volume * increment)
return volume/increment
# Set volume 0-100 (only called from in this class)
def _setVolume(self,volume):
if self.muted():
self.unmute()
else:
if volume > 100:
volume = 100
elif volume < 0:
volume = 0
if volume > config.getVolumeMax():
volume = config.getVolumeMax()
elif volume < config.getVolumeMin():
volume = config.getVolumeMin()
try:
if volume != self.volume:
log.message("radio._setVolume vol=" + str(volume),log.DEBUG)
log.message("radio.setVolume vol=" + str(volume),log.DEBUG)
client.setvol(volume)
self.volume = volume
# Don't change stored volume (Needed for unmute function)
if not self.muted():
self.storeVolume(self.volume)
except:
log.message("radio._setVolume error vol=" + str(self.volume),log.ERROR)
log.message("radio.setVolume error vol=" + str(self.volume),log.ERROR)
return self.volume
@@ -947,16 +934,16 @@ class Radio:
increment = config.getVolumeIncrement()
volume = self.volume + increment
log.message("radio.increaseVolume vol=" + str(volume),log.DEBUG)
volume = self._setVolume(volume)
return volume/increment
volume = self.setVolume(volume)
return volume
# Decrease volume
def decreaseVolume(self):
increment = config.getVolumeIncrement()
volume = self.volume - increment
log.message("radio.decreaseVolume vol=" + str(volume),log.DEBUG)
volume = self._setVolume(volume)
return volume/increment
volume = self.setVolume(volume)
return volume
# Mute sound functions (Also stops MPD if not streaming)
def mute(self):
+1 -1
View File
@@ -1 +1 @@
5.4d
5.4e