mirror of
https://github.com/Pecusx/piradio-mini.git
synced 2026-05-20 22:33:44 +02:00
New options for volume range.
This commit is contained in:
+41
-13
@@ -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()
|
||||
|
||||
@@ -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
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user