rsc3/doc-schelp/HelpSource/Classes/LinLin.schelp

95 lines
1.4 KiB
Text
Raw Permalink Normal View History

2022-08-24 13:53:18 +00:00
class:: LinLin
summary:: Map a linear range to another linear range
related:: Classes/LinExp
categories:: UGens>Maths
Description::
Maps a linear range of values to another linear range of values.
classmethods::
method::ar, kr
argument::in
The input signal to convert.
argument::srclo
Lower limit of input range.
argument::srchi
Upper limit of input range.
argument::dstlo
Lower limit of output range.
argument::dsthi
Upper limit of output range.
Examples::
code::
// 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.
code::
// 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;
)
::