1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
class:: WrapIndex
summary:: Index into a table with a signal.
related:: Classes/Index, Classes/Shaper
categories:: UGens>Buffer
Description::
The input signal value is truncated to an integer value and used as an
index into the table. Out-of-range index values are wrapped cyclically to
the valid range.
classmethods::
method::ar, kr
argument::bufnum
Index of the buffer.
argument::in
The input signal.
argument::mul
Output will be multiplied by this value.
argument::add
This value will be added to the output.
Examples::
code::
// indexing into a table
(
{
var buf = LocalBuf.newFrom([ 200, 300, 400, 500, 600, 800 ]);
var freq = WrapIndex.kr(buf, MouseX.kr(0, BufFrames.ir(buf) * 3));
SinOsc.ar(freq) * 0.1
}.play;
)
// the same using a global buffer
(
t = [ 200, 300, 400, 500, 600, 800 ];
b = Buffer(s, t.size, 1);
// alloc and set the values
s.listSendMsg( b.allocMsg( b.setnMsg(0, t) ).postln );
SynthDef(\help_Index, { |out=0, bufnum=0|
Out.ar(out,
SinOsc.ar(
WrapIndex.kr(
bufnum,
MouseX.kr(0, BufFrames.ir(bufnum) * 3)
),
0,
0.5
)
)
}).play(s, [\bufnum, b.bufnum]);
)
::
|