class library: SynthDef - lazy implementation of removeUGen
[supercollider.git] / HelpSource / Classes / Dbufrd.schelp
blob54ba11c73da26352492b18b65adbc881cee614f5
1 class:: Dbufrd
2 summary:: Buffer read demand ugen
3 categories:: UGens>Buffer, UGens>Demand
4 related:: Classes/Dbufwr
6 classmethods::
8 method:: new
9 argument:: bufnum
10 buffer number to read from
11 argument:: phase
12 index into the buffer
13 argument:: loop
14 when phase exceeds number of frames in buffer, loops when set to 1 (default :1)
15 discussion::
16 all inputs can be either demand ugen or any other ugen.
18 examples::
19 code::
20 b = Buffer.alloc(s, 24, 1);
21 b.setn(0, { exprand(200, 500) } ! b.numFrames);
22 b.getn(0, b.numFrames, {|x| x.postln })
25 { var indexPattern;
26         indexPattern = Dseq([Dseq([0, 3, 5, 0, 3, 7, 0, 5, 9], 3), Dbrown(0, 23, 1, 5)], inf);
27         SinOsc.ar(
28                 Demand.kr(Dust.kr(10), 0, Dbufrd(b, indexPattern))
29         ) * 0.1
30 }.play;
33 // buffer as a time pattern
35 c = Buffer.alloc(s, 24, 1);
36 c.setn(0, { [1, 0.5, 0.25].choose } ! c.numFrames);
37 c.getn(0, c.numFrames, {|x| x.postln })
40 { var indexPattern;
41         indexPattern = Dseq([Dseq([0, 3, 5, 0, 3, 7, 0, 5, 9], 3), Dbrown(0, 23, 1, 5)], inf);
42         SinOsc.ar(
43                 Duty.kr(
44                         Dbufrd(c, Dseries(0, 1, inf)) * 0.5,
45                         0,
46                         Dbufrd(b, indexPattern)
47                 )
48         ) * 0.1
49 }.play;
52 // free buffers
54 b.free; c.free;