frac32buffer in
frac32buffer out
frac32.u.map gain
frac32.u.map max
int dir = inlet_in > 0 ? 1 : -1;
int32_t in = inlet_in > 0 ? inlet_in : -inlet_in;
int32_t gian = ___SMMUL(param_gain << 3, param_gain << 2);
float32_t gain = ___SMMUL((gian + (1 << 17)) << 2, in << 3);
gain = 1 + gain / (1 << 19);
outlet_out = ((param_max) - ((param_max)-in) / gain) * dir;