FR: Generalize NormalisableRange

NormalisableRange “represents a mapping between an arbitrary range of values and a normalised 0->1 range”.

Sometimes one wants a bi-directional mapping/isomorphism which neither side is a 0->1 range.

As an example consider the mapping of EQ graph frequencies to screen columns, it maps between a 20->20k range to some pixel range. If one has several components using this mapping, for example in EQs like SurferEQ there’s a graph but also draggable circles on it, it would be clean to use a common mapping.