SuperCollider CLASSES

Index

Index into a table with a signal
Inherits from: PureUGen : UGen : AbstractFunction : Object

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.

Class Methods

*ar (bufnum, in: 0, mul: 1, add: 0)

*kr (bufnum, in: 0, mul: 1, add: 0)

Arguments:

bufnum

Index of the buffer.

in

The input signal.

mul

Output will be multiplied by this value.

add

This value will be added to the output.

Inherited class methods

Instance Methods

Inherited instance methods

Examples

// 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;