119 lines
1.7 KiB
Text
119 lines
1.7 KiB
Text
|
#lang scribble/manual
|
||
|
@(require (for-label racket))
|
||
|
|
||
|
@title{Index}
|
||
|
Index into a table with a signal@section{related}
|
||
|
Classes/WrapIndex, Classes/Shaper
|
||
|
@section{categories}
|
||
|
UGens>Buffer
|
||
|
|
||
|
@section{description}
|
||
|
|
||
|
Index into a table with a signal.
|
||
|
The input signal value is truncated to an integer value and used as an
|
||
|
index into the table. Out-of-range index values are clipped to the valid
|
||
|
range.
|
||
|
|
||
|
@section{classmethods}
|
||
|
|
||
|
|
||
|
@section{method}
|
||
|
ar, kr
|
||
|
|
||
|
@section{argument}
|
||
|
bufnum
|
||
|
Index of the buffer.
|
||
|
|
||
|
@section{argument}
|
||
|
in
|
||
|
The input signal.
|
||
|
|
||
|
@section{argument}
|
||
|
mul
|
||
|
Output will be multiplied by this value.
|
||
|
|
||
|
@section{argument}
|
||
|
add
|
||
|
This value will be added to the output.
|
||
|
|
||
|
|
||
|
@section{Examples}
|
||
|
|
||
|
|
||
|
@racketblock[
|
||
|
// indexing into a fixed table
|
||
|
(
|
||
|
{
|
||
|
SinOsc.ar(
|
||
|
Index.kr(
|
||
|
LocalBuf.newFrom([ 200, 300, 400, 500, 600, 800 ]),
|
||
|
LFSaw.kr(2.0).range(0, 7)
|
||
|
),
|
||
|
0,
|
||
|
0.5
|
||
|
)
|
||
|
}.play;
|
||
|
)
|
||
|
|
||
|
// with mouse control
|
||
|
(
|
||
|
{
|
||
|
SinOsc.ar(
|
||
|
Index.kr(
|
||
|
LocalBuf.newFrom([ 200, 300, 400, 500, 600, 800 ]),
|
||
|
MouseX.kr(0, 7)
|
||
|
),
|
||
|
0,
|
||
|
0.5
|
||
|
)
|
||
|
}.play;
|
||
|
)
|
||
|
|
||
|
(
|
||
|
// indexing into a changeable table
|
||
|
s = Server.local;
|
||
|
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, { arg out = 0, i_bufnum = 0;
|
||
|
Out.ar(0,
|
||
|
SinOsc.ar(
|
||
|
Index.kr(
|
||
|
i_bufnum,
|
||
|
LFSaw.kr(2).range(0, 7)
|
||
|
),
|
||
|
0,
|
||
|
0.5
|
||
|
)
|
||
|
)
|
||
|
}).play(s, [\i_bufnum, b]);
|
||
|
)
|
||
|
|
||
|
b.setn(*[ 200, 300, 400, 500, 600, 800 ].scramble.postln - 30);
|
||
|
|
||
|
|
||
|
(
|
||
|
SynthDef(\help_Index, { arg out=0,i_bufnum=0;
|
||
|
Out.ar(0,
|
||
|
SinOsc.ar(
|
||
|
Index.kr(
|
||
|
i_bufnum,
|
||
|
MouseX.kr(0, BufFrames.ir(i_bufnum))
|
||
|
),
|
||
|
0,
|
||
|
0.5
|
||
|
)
|
||
|
)
|
||
|
}).play(s, [\i_bufnum, b]);
|
||
|
)
|
||
|
|
||
|
b.free;
|
||
|
::
|
||
|
|
||
|
]
|
||
|
|
||
|
|