From c0768727c36580e8064c8f68cafe1b216d4f63bb Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sat, 26 Nov 2016 14:37:02 +0100 Subject: [PATCH] New options for volume range. --- config_class.py | 54 +++++++++++++++++++++++++++++++++++----------- radio4.py | 10 +++++++-- radio_class.py | 57 +++++++++++++++++++------------------------------ version | 2 +- 4 files changed, 72 insertions(+), 51 deletions(-) diff --git a/config_class.py b/config_class.py index cf6bcb3..e452ad3 100755 --- a/config_class.py +++ b/config_class.py @@ -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() diff --git a/radio4.py b/radio4.py index 47522f7..f0093a3 100755 --- a/radio4.py +++ b/radio4.py @@ -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 diff --git a/radio_class.py b/radio_class.py index 3ca7481..7952e4d 100755 --- a/radio_class.py +++ b/radio_class.py @@ -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): diff --git a/version b/version index 6ab5b36..d6b09fb 100644 --- a/version +++ b/version @@ -1 +1 @@ -5.4d +5.4e