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