예제 #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
파일: __init__.py 프로젝트: hecanjog/hcj.py
    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