* initialize slow and fast filters with current values (first call only) - reduces time for filter stabilization
* use slightly optimized variant of "rolling average" filter (result is exactly the same)
--> replaced `xX = xX * (1-a) + newX * a;` by `xX = xX + a * (newX - Xx);`
* use constants for filter parameters (for tinkering and improved readability)
zero crossing counter is often larger than in the prototype by @troyhacks - due to calculation after filtering (catches more crossings), and due to the fixed condition for detecting zero crossings (doubles the number of crossings).
This patch reduces the final value to 2/3, so it typically stays below 256.
Troy's zeroCrossingCount - counts zero crossings inside audioreactive, and makes the number availeable to other usermods and effects.
This PR is a prerequisite for PR #124 (auto playlist)
* make filters work (requires float instead of integer)
* avoid "expression propagation to double" by using float constants
* use unsigned long for all variables that depend on millis()
* calculate zero crossings after filtering out DC offsets
* update effect variable only once
* fix a logic error when detecting zero crossings
* fix array bounds violation when creating umdata entries
Trying to solve CI build errors
Tool Manager: Installing platformio/tool-scons @ ~4.40400.0
Error: Could not find the package with 'platformio/tool-scons @ ~4.40400.0' requirements for your system 'linux_x86_64'