hsc3-0.3: Help/Graphs/oscillator-cluster.lhs
oscillator cluster (rd)
> let { rng i l r = linLin i (-1) 1 l r
> ; ln a b d = line KR a b d RemoveSynth
> ; xln a b d = xLine KR a b d RemoveSynth
> ; rln r a b d = liftM (\n -> ln (a + n) b d) (rand 0 r)
> ; rxln r a b d = liftM (\n -> xln (a + n) b d) (rand 0 r)
> ; prt d a cf = do { r1 <- rand cf (cf + 2)
> ; r2 <- rln 1 5 0.01 d
> ; r3 <- rln 10 20 0 d
> ; r4 <- rand 0.1 0.2
> ; let { f = mce2 cf r1 + sinOsc KR r2 0 * r3
> ; o = fSinOsc AR f 0
> ; e = decay2 (impulse AR 0 0) r4 d * a }
> in return (o * e) }
> ; np = 12
> ; fp = replicateM np (rand 220 660) }
> in do { d <- rand 4 7
> ; a <- rand 0.01 0.05
> ; audition . (out 0) . sum =<< mapM (prt d a) =<< fp }
{ var ln = { arg a, b, d
; Line.kr(a, b, d, 1) }
; var xln = { arg a, b, d
; XLine.kr(a, b, d, 1) }
; var rln = { arg r, a, b, d
; var n = Rand.new(0, r)
; ln.value(a + n, b, d) }
; var rxln = { arg r, a, b, d
; var n = Rand.new(0, r)
; xln.value(a + n, b, d) }
; var prt = { arg d, a
; { arg cf
; var r1 = Rand.new(cf, cf + 2)
; var r2 = rln.value(1, 5, 0.01, d)
; var r3 = rln.value(10, 20, 0, d)
; var r4 = Rand.new(0.1, 0.2)
; var f = [cf, r1] + (SinOsc.kr(r2, 0) * r3)
; var o = FSinOsc.ar(f, 0)
; var e = Decay2.ar(Impulse.ar(0, 0), r4, d) * a
; o * e } }
; var np = 12
; var fp = Array.fill(np, { Rand.new(220, 660) })
; var d = Rand.new(4, 7)
; var a = Rand.new(0.01, 0.05)
; Out.ar(0, fp.collect(prt.value(d, a)).sum) }.play