RedAutoScale scales an unknown signal to a known range


uses RunningMin and RunningMax as scaling range and can scale signals automatically to a specified range.


*ar(in, lo, hi, inLo, inHi, reset)

*kr(in, lo, hi, inLo, inHi, reset)

in - input signal

lo and hi - desired output range

inLo and inHi - predefined min- and maximum input range

reset - a trigger that reset range

*new(lo, hi, inLo, inHi)

reset

autoScale(val)

<>lo

<>hi

<>inLo

<>inHi

<>min

<>max


//--

s.boot;


//basic usage

a= {SinOsc.ar(RedAutoScale.kr(MouseX.kr, 200, 400).round(50))}.play

a.free


//mouse button reset range

a= {SinOsc.ar(RedAutoScale.kr(MouseX.kr, 200, 400, reset:MouseButton.kr).round(50))}.play

a.free


//predefined minimum input range

a= {SinOsc.ar(RedAutoScale.kr(MouseX.kr(-10, 10), 200, 400, -5, 5, MouseButton.kr).round(50))}.play

a.free


//--

a= RedAutoScale(-10, 10);

a.autoScale(100.rand.postln) //repeat.  eventually 0 will be -10 and 99 will be 10

a.min

a.max