import os import libaudioverse import platform_utils.paths sound_dir = os.path.join(platform_utils.paths.embedded_data_path(), 'sounds') class SoundLoader(object): def __init__(self, simulation, world): self.simulation = simulation self.world = world self.cache=dict() def load_sound(self, key): if key not in self.cache: source = libaudioverse.SourceNode(self.simulation, self.world) b = libaudioverse.Buffer(self.simulation) b.load_from_file(os.path.join(sound_dir, key+".ogg")) self.cache[key] = b b = self.cache[key] n = libaudioverse.BufferNode(self.simulation) n.buffer.value =b n.connect(0, source, 0) return Sound(n,source) class Sound(object): def __init__(self, buffer_node,source): self.buffer_node = buffer_node self.source = source def stop(self): self.buffer_node.state = libaudioverse.NodeStates.stop def is_playing(self): return self.buffer_node.state == libaudioverse.NodeStates.playing def play(self,loop=False): self.buffer_node.connect_simulation(0) self.buffer_node.position=0 self.buffer_node.looping=loop self.buffer_node.state = libaudioverse.NodeStates.playing