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

113 lines
1.6 KiB
Racket

#lang scribble/manual
@(require (for-label racket))
@title{LinLin}
Map a linear range to another linear range@section{related}
Classes/LinExp
@section{categories}
UGens>Maths
@section{description}
Maps a linear range of values to another linear range of values.
@section{classmethods}
@section{method}
ar, kr
@section{argument}
in
The input signal to convert.
@section{argument}
srclo
Lower limit of input range.
@section{argument}
srchi
Upper limit of input range.
@section{argument}
dstlo
Lower limit of output range.
@section{argument}
dsthi
Upper limit of output range.
@section{Examples}
@racketblock[
// 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.
]
@racketblock[
// 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;
)
::
]