hsc3-0.21: Help/Ugen/dbufwr.help.hs
-- dbufwr ; monadic graph
uid_st_eval (do
let b = asLocalBufId 'α' (replicate 24 210)
s1 <- dseriesM 30 0 3
s2 <- dseriesM 30 0 1
s3 <- dseriesM 16 1 1
s4 <- dwhiteM 8 1 16
s5 <- dseqM dinf (mce2 s3 s4)
wt <- dustM kr 1 {- write trigger -}
rp <- dseriesM dinf 0 1 {- read pointer -}
wp <- dseqM dinf (mce2 s1 s2) {- write pointer -}
r <- dbufrdM b rp Loop {- reader -}
w <- dbufwrM b wp (s5 * 60) Loop {- writer -}
let d = demand wt 0 w
f = lag (demand (impulse kr 16 0) 0 r) 0.01
o = sinOsc ar (f * mce2 1 1.01) 0 * 0.1
return (mrg [d, out 0 o]))
-- dbufwr ; uid graph
let b = asLocalBufId 'α' (replicate 24 210)
s = dseqId 'β' dinf (mce2 (dseriesId 'γ' 16 1 1) (dwhiteId 'δ' 8 1 16))
rp = dseriesId 'ε' dinf 0 1 {- read pointer -}
wp = dseqId 'ζ' dinf (mce2 (dseriesId 'η' 30 0 3) (dseriesId 'θ' 30 0 1)) {- write pointer -}
r = dbufrdId 'ι' b rp Loop {- reader -}
w = dbufwrId 'κ' b wp (s * 60) Loop {- writer -}
d = demand (dustId 'λ' kr 1) 0 w
f = lag (demand (impulse kr 16 0) 0 r) 0.01
o = sinOsc ar (f * mce2 1 1.01) 0 * 0.1
in mrg2 d (out 0 o)
-- dbufrd ; demand rate single memory recurrence relation ; simple counter
let rec1Id z k t f =
let b = asLocalBufId z [k]
r = dbufrdId z b 0 Loop {- reader -}
w = dbufwrId z b 0 (f r) Loop {- writer -}
in mrg2 (demand t 0 r) (demand t 0 w)
f = rec1Id 'α' 0 (impulse kr 6 0) (\r -> (r + 1) `modE` 24)
in sinOsc ar (midiCps (60 + f)) 0 * 0.1