def __init__(self, filename): if not os.path.isfile(filename): raise IOError("No such file: " + filename) # TODO check if file is actual sound file # internal state self.loaded = False # attributes self.volume = 1.0 self.length = None # commands self.cstop = False self.cstart = False self.cvolume = False # internal sound object self.sobj = None # init lock around object self.lock = Lock() # remember own filename self.filename = filename LOGGER.logDebug("loading: " + filename) # load the sound Thread(target=self.__load).start()
def __update(self): if not self.running: return LOGGER.logDebug("'{}' update".format(self.name)) for sound in self.sounds: sound.adaptVolume() Timer(self.urate, self.__update).start()
def __update(self): if not self.loaded: return self.lock.acquire() #LOGGER.logDebug("acquired lock", self) if self.cstart: LOGGER.logDebug("start", self) self.sobj.play(-1) self.cstart = False if self.cstop: LOGGER.logDebug("stop", self) self.sobj.stop() self.cstop = False if self.cvolume: LOGGER.logDebug("set volume to {} %".format(self.volume * 100), self) self.sobj.set_volume(self.volume) self.cvolume = False #LOGGER.logDebug("releasing lock", self) self.lock.release()
def __init__(self, configfile): # check if mixer is already initialized if mixer.get_init() == True: raise RuntimeError("pygame.mixer already initialized, abort") LOGGER.logDebug("initialize pygame.mixer") # set parameters of mixer before init, TODO check values again mixer.pre_init(44100, -16, 2, 2048) mixer.init() # load configuration file with open(configfile, "r") as f: data = f.read() root = XmlEt.fromstring(data) # setup ambient dictionary self.ambients = dict() for elem in root.findall("AmbientConfig"): self.ambients[elem.get("id")] = Ambient(elem.get("file")) # set current ambient to none self.ambient = None