i have a bigger set of abstractions which can distort a range of numbers,
as i found that you simply need that to build GUI stuff.
the most basic version uses different functions such as pow, exp, log,
tanh and so on, and the input and output ranges are always 0. – 1.
then there are abstractions which work with a user-given range. they
accept arguments like "107 250" and perform the above functions on the
chosen input range – as well as output a curve of that range.
further abstractions work bipolar – the input range is split in the middle,
and calculations like exp or log are done to both halves individually, in opposite
last but not least you could take a range of 0-20 and perform such a distortion
only to 0-12 and leave the rest of the range as it is: linear.
and where mathematical stuff wont work anymore, there is always table or coll
to translate n to m.