From f1d770bcd610c8b5de0d7163eb70ec3b45cb07f3 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Mon, 31 Aug 2020 12:28:54 +0200 Subject: [PATCH] New auto attenuation algotihm --- sa_core.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/sa_core.c b/sa_core.c index 9f94394..76dd1ef 100644 --- a/sa_core.c +++ b/sa_core.c @@ -2029,19 +2029,22 @@ sweep_again: // stay in sweep loop when output mo // -------------------------- auto attenuate ---------------------------------- -#define AUTO_TARGET_LEVEL -30 +#define AUTO_TARGET_LEVEL -25 +#define AUTO_TARGET_WINDOW 2 + if (!in_selftest && setting.mode == M_LOW && setting.auto_attenuation && max_index[0] > 0) { // calculate and apply auto attenuate setting.atten_step = false; // No step attenuate in low mode auto attenuate int changed = false; - float actual_max_level = actual_t[max_index[0]] - get_attenuation(); - if (actual_max_level < AUTO_TARGET_LEVEL - 11 && setting.attenuate >= 10) { - setting.attenuate -= 10.0; - changed = true; - } else if (actual_max_level < AUTO_TARGET_LEVEL - 6 && setting.attenuate >= 5) { - setting.attenuate -= 5.0; + int actual_max_level = (int) (actual_t[max_index[0]] - get_attenuation()); + if (actual_max_level < AUTO_TARGET_LEVEL && setting.attenuate > 0) { + setting.attenuate -= AUTO_TARGET_LEVEL - actual_max_level; + if (setting.attenuate < 0) + setting.attenuate= 0; changed = true; - } else if (actual_max_level > AUTO_TARGET_LEVEL + 2 && setting.attenuate <= 20) { - setting.attenuate += 10.0; + } else if (actual_max_level > AUTO_TARGET_LEVEL && setting.attenuate < 30) { + setting.attenuate += actual_max_level - AUTO_TARGET_LEVEL; + if (setting.attenuate > 30) + setting.attenuate = 30; changed = true; }