Update auto gain
| 152 | |
| 153 | // Update auto gain |
| 154 | void updateAutoGain(float level) { |
| 155 | if (!autoGain) { |
| 156 | autoGainValue = 1.0f; |
| 157 | return; |
| 158 | } |
| 159 | |
| 160 | static float targetLevel = 0.7f; |
| 161 | static float avgLevel = 0.0f; |
| 162 | |
| 163 | avgLevel = avgLevel * 0.95f + level * 0.05f; |
| 164 | |
| 165 | if (avgLevel > 0.01f) { |
| 166 | float gainAdjust = targetLevel / avgLevel; |
| 167 | gainAdjust = fl::clamp(gainAdjust, 0.5f, 2.0f); |
| 168 | autoGainValue = autoGainValue * 0.9f + gainAdjust * 0.1f; |
| 169 | } |
| 170 | } |
| 171 | |
| 172 | // Clear display |
| 173 | void clearDisplay() { |