packages feed

hsc3-0.2: Help/UGen/Demand/dbufrd.help.lhs

dbufrd bufnum phase loop

Buffer demand ugen.

bufnum  - buffer number to read from
phase   - index into the buffer (demand ugen or any other ugen)
loop    - loop when phase exceeds number of frames in buffer

> let n = randomRs (200.0, 500.0) (mkStdGen 0)
> in do { withSC3 (\fd -> do { async fd (b_alloc 10 24 1)
>                            ; send fd (b_setn 10 [(0, take 24 n)]) })
>       ; s <- dseq 3 (mce [0, 3, 5, 0, 3, 7, 0, 5, 9])
>       ; b <- dbrown 5 0 23 1
>       ; p <- dseq dinf (mce [s, b])
>       ; t <- dust KR 10
>       ; r <- dbufrd 10 p Loop
>       ; audition (out 0 (sinOsc AR (demand t 0 r) 0 * 0.1)) }

Buffer as a time pattern (requires buffer 10 as allocated above).

> let { i = randomRs (0, 2) (mkStdGen 0)
>     ; n = map ([1, 0.5, 0.25] !!) i }
> in do { withSC3 (\fd -> do { async fd (b_alloc 11 24 1)
>                            ; send fd (b_setn 11 [(0, take 24 n)]) })
>       ; s <- dseq 3 (mce [0, 3, 5, 0, 3, 7, 0, 5, 9])
>       ; b <- dbrown 5 0 23 1
>       ; p <- dseq dinf (mce [s, b])
>       ; j <- dseries dinf 0 1
>       ; d <- dbufrd 11 j Loop
>       ; l <- dbufrd 10 p Loop
>       ; let f = duty KR (d * 0.5) 0 DoNothing l
>         in audition (out 0 (sinOsc AR f 0 * 0.1)) }

Free buffers

> withSC3 (\fd -> do { async fd (b_free 10)
>                    ; async fd (b_free 11) })