Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / LinLin.schelp
blobcd0ed8f5ff46108585cc99e5fcb1b33de3738ed7
1 class:: LinLin
2 summary:: Map a linear range to another linear range
3 related:: Classes/LinExp
4 categories::  UGens>Maths
7 Description::
9 Maps a linear range of values to another linear range of values.
12 classmethods::
14 method::ar, kr
16 argument::in
18 The input signal to convert.
21 argument::srclo
23 Lower limit of input range.
26 argument::srchi
28 Upper limit of input range.
31 argument::dstlo
33 Lower limit of output range.
36 argument::dsthi
38 Upper limit of output range.
41 Examples::
43 code::
44 // examples:
48         var mod = SinOsc.kr(Line.kr(1, 10, 10));
49         SinOsc.ar(LinLin.kr(mod, -1,1, 100, 900)) * 0.1
50 }.play;
53 // modulating destination values.
56         var mod = LFNoise2.ar(80);
57         SinOsc.ar(LinLin.ar(mod, -1,1, MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1))) * 0.1
58 }.play;
61 // modulating source and destination values.
64         var mod = LFNoise2.ar(80);
65         SinOsc.ar(
66                 LinLin.ar(mod,
67                         SinOsc.kr(0.2), SinOsc.kr(0.2543),
68                         MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1)
69                 )
70         ) * 0.1
71 }.play;
75 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.
77 code::
78 // linlin
81         var mod = LFNoise2.ar(80);
82         SinOsc.ar(mod.linlin(-1,1, MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1))) * 0.1
83 }.play;
86 // range
89         var mod = LFNoise2.ar(80).range(MouseX.kr(200, 8000, 1), MouseY.kr(200, 8000, 1));
90         SinOsc.ar(mod) * 0.1
91 }.play;