def makeRhodes(length, beat, freqs, maxbend=0.05): backup = Sampler(snds.load('tones/nycrhodes01.wav'), tune.ntf('c'), direction='fw-bw-loop', tails=False) chord = [ keys.rhodes(length, freq, dsp.rand(0.4, 0.7)) for freq in freqs ] chord = dsp.randshuffle(chord) chord = [ dsp.mix([ dsp.env(fx.penv(backup.play(freq * 2**dsp.randint(0,2), length, dsp.rand(0.4, 0.6))), 'line'), c ]) for freq, c in zip(freqs, chord) ] pause = 0 for i, c in enumerate(chord): pause = pause + (dsp.randint(1, 4) * beat) c = dsp.pan(c, dsp.rand()) c = fx.bend(c, [ dsp.rand() for _ in range(dsp.randint(5, 10)) ], dsp.rand(0, maxbend)) chord[i] = dsp.pad(dsp.fill(c, length - pause), pause, 0) return dsp.mix(chord)
pattern = ctl.parseBeat(bloopp) bloops = ctl.makeBeat(pattern, [ beat / 2 for _ in range(16) ], makeBloop, bfreqs) layers += [ bloops ] if canPlay('arps', section): arpses = dsp.mix([ makeArps(dsp.flen(bar), beat, cname) for _ in range(dsp.randint(2,4)) ]) layers += [ arpses ] if section not in ('intro', 'ending'): rfreqs = tune.chord(cname, key, 2) maxbend = 0.005 if dsp.rand() > 0.3 else 0.05 rhodeses = makeRhodes(dsp.flen(bar), beat, rfreqs, maxbend) layers += [ rhodeses ] papers = dsp.fill(dsp.amp(makePaper(paper), dsp.rand(2, 4)), dsp.flen(bar), silence=True) if section == 'intro' and dsp.rand() > 0.5: papers = fx.bend(papers, [ dsp.rand() for _ in range(dsp.randint(5, 10)) ], dsp.rand(0, 0.5)) layers += [ papers ] bar = dsp.mix(layers) out += bar elapsed += dsp.flen(bar) count += 1 section = nextSection(section, count, numsections, ending_length) dsp.write(out, '03-the_green_green_horse')