packages feed

hsc3-0.1: 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

Example

> let n = randomRs (200.0, 500.0) (mkStdGen 0)
> withSC3 (\fd -> do send fd (b_alloc 10 24 1)
>                    wait fd "/done"
>                    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 8192 (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
> withSC3 (\fd -> do send fd (b_alloc 11 24 1)
>                    wait fd "/done"
>                    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 8192 (MCE [s, b])
> j <- dseries 8192 0 1
> d <- dbufrd 11 j Loop
> l <- dbufrd 10 p Loop
> audition (out 0 (sinOsc AR (duty KR (d * 0.5) 0 DoNothing l) 0 * 0.1))

Free buffers

> withSC3 (\fd -> do send fd (b_free 10)
>                    wait fd "/done"
>                    send fd (b_free 11)
>                    wait fd "/done")