I am using OSC data streams from game pad analog sticks to control transforms of objects in the viewport. Specifically, the X and Y stick axes are driving X and Z axis rotation of a mesh object. It works well enough. The OSC input range is from 0 to 1, which I am using a Map Range node to scale +/- 90 degree rotations on either axis.
The motion is currently linear. What I would like to do is adjust the scaling disproportionately, to have more fine movement around the central point (0.5) and then broader movement closer to the extremes (approaching 0 or 1). For example, from 0 to 0.25 would be mapped from -90 to -22 degrees, 0.25 to 0.75 would be mapped from -22 to +22 degrees, and 0.75 to 1.00 would map from +22 to +90 degrees.
I thought this could be accomplished with a Curve Interpolation node, but I haven't had any success with this. I expected the x axis of the graph would represent scale input values from min to max and the y axis would represent the redistribution of those value from min to max, but from my testing, this does not appear to be the case.
This seems like it would be pretty straightforward, but I can't seem to find the correct application of nodes to achieve a non-linear range mapping. How can I do this?