def roll(snd, length=None, numlayers=2, minlen=10, maxlen=80, env=True, bend=True): layers = [] for _ in range(numlayers): if length is None: numbeats = dsp.randint(20, 50) else: numbeats = length / dsp.mstf(minlen) lengths = dsp.breakpoint([ dsp.rand(minlen, maxlen) for _ in range(dsp.randint(5, numbeats/2)) ], numbeats) layer = '' for l in lengths: layer += dsp.fill(snd, dsp.mstf(l), silence=True) if bend: layer = fx.bend(layer, [ dsp.rand(0, 1) for _ in range(dsp.randint(5, 20)) ], dsp.rand(0.02, 1)) if env: layer = fx.penv(layer) layers += [ layer ] out = dsp.mix(layers) out = dsp.fill(out, length) return out
def makeTails(self, freq, length): freq *= 0.5 harmonics = [ dsp.randint(1, 8) for _ in range(2, 4) ] layers = [] for harmonic in harmonics: layer = dsp.tone(length, freq * harmonic, amp=dsp.rand(0.1, 0.3)) layer = fx.penv(layer) layer = dsp.env(layer, 'sine') layers += [ layer ] layers = dsp.mix(layers) layers = dsp.amp(layers, dsp.rand(0.25, 1)) return layers