Classes | UGens>Maths

# LinLin : Object

Map a linear range to another linear range
Source: Line.sc
See also: LinExp

## Description

Maps a linear range of values to another linear range of values.

## Class Methods

### LinLin.ar(in: 0, srclo: 0, srchi: 1, dstlo: 1, dsthi: 2)

### LinLin.kr(in: 0, srclo: 0, srchi: 1, dstlo: 1, dsthi: 2)

#### Arguments:

in | The input signal to convert.
srclo | Lower limit of input range.
srchi | Upper limit of input range.
dstlo | Lower limit of output range.
dsthi | Upper limit of output range.

### Inherited class methods

## Instance Methods

### Inherited instance methods

## Examples

    // examples:

    (
    {
        var mod = SinOsc.kr(Line.kr(1, 10, 10));
        SinOsc.ar(LinLin.kr(mod, -1,1, 100, 900)) * 0.1
    }.play;
    )

    // modulating destination values.
    (
    {
        var mod = LFNoise2.ar(80);
        SinOsc.ar(LinLin.ar(mod, -1,1, MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1))) * 0.1
    }.play;
    )

    // modulating source and destination values.
    (
    {
        var mod = LFNoise2.ar(80);
        SinOsc.ar(
            LinLin.ar(mod,
                SinOsc.kr(0.2), SinOsc.kr(0.2543),
                MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1)
            )
        ) * 0.1
    }.play;
    )

linlin and range can be used to create a LinLin implicitly from a ugen, mapping its output values from linear range to an exponential one. The rate is derived from the ugen.

    // linlin
    (
    {
        var mod = LFNoise2.ar(80);
        SinOsc.ar(mod.linlin(-1,1, MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1))) * 0.1
    }.play;
    )

    // range
    (
    {
        var mod = LFNoise2.ar(80).range(MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1));
        SinOsc.ar(mod) * 0.1
    }.play;
    )

helpfile source: /Applications/SuperCollider.app/Contents/Resources/HelpSource/Classes/LinLin.schelp
link::Classes/LinLin::