diff --git a/src/lib/mixer_module/mixer_module.cpp b/src/lib/mixer_module/mixer_module.cpp index 8aea8c8cc6..dc5f791af2 100644 --- a/src/lib/mixer_module/mixer_module.cpp +++ b/src/lib/mixer_module/mixer_module.cpp @@ -528,10 +528,10 @@ uint16_t MixingOutput::output_limit_calc_single(int i, float value) const value = -1.f * value; } - uint16_t effective_output = value * (_max_value[i] - _min_value[i]) / 2 + (_max_value[i] + _min_value[i]) / 2; + const float output = math::interpolate(value, -1.f, 1.f, + static_cast(_min_value[i]), static_cast(_max_value[i])); - // last line of defense against invalid inputs - return math::constrain(effective_output, _min_value[i], _max_value[i]); + return math::constrain(lroundf(output), 0L, static_cast(UINT16_MAX)); } void