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")