示例#1
0
文件: drums.py 项目: hecanjog/hcj.py
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
示例#2
0
文件: keys.py 项目: hecanjog/hcj.py
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