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