Exemplo n.º 1
0
 def __init__(self, release_time=0.1, release_order=0.75, duration=None):
     Generator.__init__(self)
     self.release_time = t2f(release_time)
     self.release_order = release_order
     self.release_frame = float('inf')
     self.allow_release = (duration is None)
     if duration:
         self.release_frame = t2f(duration) - self.release_time
Exemplo n.º 2
0
    def sample(self, start, duration, loop=False, speed=1.0):
        start_frame = t2f(start)
        num_frames = t2f(duration)
        if (start_frame, num_frames) not in self.data_cache:
            self.wave_reader.set_pos(start_frame)
            self.data_cache[(start, num_frames)] = self.wave_reader.read(num_frames)

        data = self.data_cache[(start_frame, num_frames)]
        return Sampler.Sample(data, self.num_channels, loop, speed)
Exemplo n.º 3
0
    def add(self, gen, time=None):
        if time is None:
            frame = self.frame
        else:
            frame = t2f(time)
        self._length_cache = max(self._length_cache, gen.length() + frame)

        if self.num_gens < self.max_size or self.max_size == 0:
            self.num_gens += 1
            self._append_gen(frame, gen)
Exemplo n.º 4
0
    def _generate(self, frame_count):
        domain = np.arange(self.frame, self.frame + frame_count,
                           dtype=np.float32)
        conditions = []
        functions = []
        init = self.initial
        start = 0
        for (dest, dur, order) in self.steps:
            dur = t2f(dur)
            conditions.append((domain >= start) *
                              (domain < start + dur))
            functions.append(self.create_exp(init, dest, start, dur, order))
            start += dur
            init = dest

        conditions.append(domain >= start)
        functions.append(lambda x: init)

        return np.piecewise(domain, conditions, functions)
Exemplo n.º 5
0
 def set_duration(self, duration):
     self.release_frame = t2f(duration)
Exemplo n.º 6
0
 def __init__(self, duration):
     Generator.__init__(self)
     self.duration = t2f(duration)
Exemplo n.º 7
0
 def _append_gen(self, frame, gen):
     try:
         self._generators.put((t2f(frame), gen), False)
     except Full:
         print 'Too many generators to append another'
         return