packages feed

hsc3-0.16: Help/UGen/dbufwr.help.lhs

    > Sound.SC3.UGen.Help.viewSC3Help "Dbufwr"
    > Sound.SC3.UGen.DB.ugenSummary "Dbufwr"

> import Sound.SC3 {- hsc3 -}

allocate buffer

    > withSC3 (async (b_alloc_setn1 0 0 (replicate 24 210)))

monadic graph constructor (type `C-cM-a` at g_01 to hear, `C-cM-g` to see)

> g_01 :: UId m => m UGen
> g_01 = do
>   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 0 rp Loop            {- reader -}
>   w <- dbufwrM 0 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])

variant written using a local buffer and uid ugen forms

> g_02 =
>     let b = asLocalBuf 'α' (replicate 24 210)
>         s = dseq 'β' dinf (mce2 (dseries 'γ' 16 1 1) (dwhite 'δ' 8 1 16))
>         rp = dseries 'ε' dinf 0 1 {- read pointer -}
>         wp = dseq 'ζ' dinf (mce2 (dseries 'η' 30 0 3) (dseries 'θ' 30 0 1)) {- write pointer -}
>         r = dbufrd 'ι' b rp Loop {- reader -}
>         w = dbufwr 'κ' b wp (s * 60) Loop {- writer -}
>         d = demand (dust 'λ' 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)

demand rate single memory recurrence relation.

> rec1 z k t f =
>   let b = asLocalBuf z [k]
>       r = dbufrd z b 0 Loop {- reader -}
>       w = dbufwr z b 0 (f r) Loop {- writer -}
>   in mrg2 (demand t 0 r) (demand t 0 w)

simple counter, written in terms of rec1.

> g_03 =
>     let f = rec1 'α' 0 (impulse KR 6 0) (\r -> (r + 1) `modE` 24)
>     in sinOsc AR (midiCPS (60 + f)) 0 * 0.1