after upstream PR https://github.com/Aircoookie/WLED/pull/3091, getPixelColor() does not restore brightness any more.
So all effects that rely on previous colors now need the LEDs buffer: getPixelColor, blenPixelColor, fade_out, blur, fadeToBlackBy
This change is an intermediate solution until upstream PR https://github.com/Aircoookie/WLED/pull/3280 is stable enough for merging.
The "Major Peak" (for double-notes effects) was computed on the raw FFT results.
However the human ear is more sensitive to higher frequencies (pink noise profile).
This code change considers human ear properties for major peak computations.
Effects like "freqmap" will look much more vivid afterwards, as higher frequencies will now have a stronger influence (harmonics are still suppressed properly).
MM specific source code is subject to GPLv3. The GPL license is more open (copyleft) than MIT, so "upgrading" our MM specific enhancements satisfies the more relaxed licensing terms from upstream.
- you need to install the bootloader from platformio build folder
- only for "opi" (octal) PSRAM; will not work with "qspi" (quad) PSRAM (2MB or 4MB)
-small cleanups for -S3/-S2/-C3 environments
cleanup:
- version increase
- clean up debug messages
- minor fixes in platformio.ini
- fix compilation with -D WLED_DISABLE_2D
helping the compiler to optimize:
- a few more __attribute__((pure))
- fx.cpp marked a few local functions as "static"
Segments are created/deleted on-the-fly; it seems that "local leds" buffers did not follow properly.
* revise segment copy/move constructors
* de-optimize use of local leds (as they need to be re-allocated when segment size changes)
* minor stability improvements
it seems that SEGMENT.blur() is the main bottleneck for many 2D effects.
This change optimizes performance of the function:
* avoid to re-write unchanged pixels
* early exit when blur_amount == 0 (=nothing to do)
* use _fast_ types where possible
I've seen up to 20% speedup with this change.
power estimation results from estimateCurrentAndLimitBri() were too low (example: estimated 1.3Amp, measured 1.6Amp). This change corrects the power calculation. Due to the changed behavior of getPixelColor, powerSum must be used as-is, not scaled down again by brightness.