From 0a786903560408cdcbf9120bbcd08356c70439a0 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Mon, 4 Dec 2023 20:00:31 +0100 Subject: [PATCH] mixer_module: correct output_limit_calc_single calculation --- src/lib/mixer_module/mixer_module.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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