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 brass(length=22050, freq=220, amp=0.5): pw = dsp.rand(0.25, 0.5) note = pulsar(length=length, freq=freq, pulsewidth=pw, amp=amp) noise = dsp.bln(length, dsp.rand(1000, 2000), dsp.rand(2000, 3000)) noise = dsp.fill(noise, length) noise = fx.bend(noise, [ dsp.rand() for _ in range(dsp.randint(5, 10)) ], dsp.rand(0.01, 0.3)) noise = dsp.amp(noise, dsp.rand(0.001, 0.002)) noise = dsp.env(noise, 'tri') note = dsp.mix([ note, noise ]) return note