Not sure how HISE does it (I didn't look in the source) but here's the function from my math library:
inline function exponentialCurve(min, max, midpoint, alpha) { local a = Math.log((max - min) / (midpoint - min)); local b = Math.log(2); local exponent = a / b; return min + (max - min) * Math.pow(alpha, exponent); } inline function reverseExponentialCurve(min, max, midpoint, value) { local a = Math.log((max - min) / (midpoint - min)); local b = Math.log(2); local exponent = a / b; return Math.pow((value - min) / (max - min), 1 / exponent); }Basically it's
set the ratio set the divisor, log(2) because you're aiming for the halfpoint find the exponent exponentiate the alpha to find the correct value in the range, add it to the minimum