Ejemplo n.º 1
0
 def __init__(self, util):
     """ Initializer
     
     :param util: utility class
     """
     self.util = util
     self.update_period = 1
     self.meter = None
     self.USE_VOLUME = False
     
     parser = ConfigFileParser(util)
     self.meter_config = parser.meter_config
     self.meter_names = self.meter_config[METER_NAMES]
     self.random_meter_interval = self.meter_config[RANDOM_METER_INTERVAL]
     
     # no VU Meter support for Windows and mplayer at the moment
     if not util.config[LINUX_PLATFORM] or "mplayer" in util.config[AUDIO][SERVER_COMMAND]:
         self.meter_config[DATA_SOURCE][TYPE] = SOURCE_NOISE
     
     self.data_source = DataSource(self.meter_config)
     self.random_meter = False
     
     if self.meter_config[METER] == "random":
         self.random_meter = True
         self.random_meter_names = copy.copy(self.meter_names)            
         
     self.meter = None
     self.current_volume = 100.0
     self.seconds = 0
Ejemplo n.º 2
0
class Vumeter(Screensaver):
    """ VU Meter plug-in. """
    
    def __init__(self, util):
        """ Initializer
        
        :param util: utility class
        """
        self.util = util
        self.update_period = 1
        self.meter = None
        self.USE_VOLUME = False
        
        parser = ConfigFileParser(util)
        self.meter_config = parser.meter_config
        self.meter_names = self.meter_config[METER_NAMES]
        self.random_meter_interval = self.meter_config[RANDOM_METER_INTERVAL]
        
        # no VU Meter support for Windows and mplayer at the moment
        if not util.config[LINUX_PLATFORM] or "mplayer" in util.config[AUDIO][SERVER_COMMAND]:
            self.meter_config[DATA_SOURCE][TYPE] = SOURCE_NOISE
        
        self.data_source = DataSource(self.meter_config)
        self.random_meter = False
        
        if self.meter_config[METER] == "random":
            self.random_meter = True
            self.random_meter_names = copy.copy(self.meter_names)            
            
        self.meter = None
        self.current_volume = 100.0
        self.seconds = 0
    
    def get_meter(self):
        """ Creates meter using meter factory. """
               
        if self.meter and not self.random_meter:
            return self.meter
        
        if self.random_meter:
            if len(self.random_meter_names) == 0:
                self.random_meter_names = copy.copy(self.meter_names)
            i = randrange(0, len(self.random_meter_names))     
            self.meter_config[METER] = self.random_meter_names[i]
            del self.random_meter_names[i]
            
        factory = MeterFactory(self.util, self.meter_config, self.data_source)
        return factory.create_meter()        
    
    def set_volume(self, volume):
        """ Set volume level 
        
        :param volume: new volume level
        """
        if self.USE_VOLUME:
            self.current_volume = volume        
    
    def start(self):
        """ Start data source and meter animation. """
                
        self.data_source.start_data_source()
        self.meter = self.get_meter()
        self.meter.set_volume(self.current_volume)
        self.meter.start()
    
    def stop(self):
        """ Stop data source and meter animation. """ 
               
        self.data_source.stop_data_source()
        self.meter.stop()
    
    def refresh(self):
        """ Refresh meter. Used to update random meter. """ 
               
        if self.random_meter and self.seconds == self.random_meter_interval:
            self.seconds = 0
            self.stop()
            time.sleep(0.2) # let threads stop
            self.start()
        self.seconds += 1
        pass