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).
* re-enabled old detector which does not detect beats. However something bad may still be better than nothing...
* fixed a typo in RipplePeak and Waterfall effect, which cased wrong configuration of the peak detector.
resolves https://github.com/MoonModules/WLED/issues/43
using a dynamic array for newSamples[num_samples] was never needed. It was a risks as the buffer was allcated/deallocated with every call of getSamples().
"sound pressure" for line-in was always close to max - which is expected, because the ADC chip utilize the full 24/16bit sample range.
The new calculation leads to some more "movement".
* 40Hz low-cut and DC blocker filter - will remove any signal offsets and also removes rumbling noise up to 12db
* DC blocker set as default for all sources (prerequisite for later measuring sound pressure)
additional filtering options are in the making :-)
This mode freezes MicLev even fast. However it makes some assumptions that may not always be true:
* At least 12 seconds of silence during start
* a high quality microphone with very low noise level.
--> If you are not sure about these preconditions, better use normal "Freeze" mode.
- micLev: "freeze" mode - should help to prevent short "dropout" wen music is playing
- freqRMS: if set to "On", will use a different method for averaging higher frequencies. May give you more action in GEQ. Could lead to GEQ "overshooting" as Mic Profiles are not adjusted to this method.
* const.h: static json buffer (usermod settings pages) was getting tight, added some margin
pio.ini: enable WLED_DEBUG_HOST in esp32_4MB_M_debug and esp32_16MB_M_debug
audio_reactive, um6050, wled.h
- replace DEBUGOUT.print(x) by DEBUGOUT(x) etc
wled.h: switch between serial/netdebug
cfg.cpp, set.cpp, wled.cpp, xml.cpp
- store netDebugPrintIP and netDebugPrintPort in cfg.json
index.js: rename info tab on off to Net Debug
settings.sync: add netdebug
net_debug.h/cpp: use global netDebugPrintIP remove debugPrintHostIP
Audio reactive usermod: add pio.ini build flags defaults (⎌) for mclk, sda and scl (if set)
4ld usermod:
- if pio.ini build flags not set, make them -1 (undefined is even better but then problems with allocate pins, to be done later)
- pio.ini build flags defaults (⎌) different if spi (clockspi and mosispi instead of scl and sda)
- add pio.ini build flags defaults (⎌) for SPI CS, DC and RESET
- shorten oappend MM function names
- add aOpt: analog options only
- add pin 17 for esp8266 (analog pin)
- add a.pins array to show analog pins in pin dropdown
some optimizations for -C3.
* skip every second FFT, and use interpolation instead.
* reduce sampling rate from 22Khz to 18Khz
* new debug measurement for I2S cycle times (FFTTask)
--> in total, this brings CPU load for sound processing down to 60% (from >100% previously)
AudioReactive: add disableROPins on WS, SCK, MCLK and SCL
4LD: add disableROPins on CLK
settingsum:
- addfield: max 49 pins, if (global interface) also disabled, rename if to global, show 🔴 if pin claimed
- add disableROPins
- pinDropdownsPost
- rename SDA to if:SDA (etc) so it is part of claimed pins (also in set.cpp and xml.cpp)
xml.cpp:
- appendGPIOinfo(): get rsvd and ro_gpio from pinManager.isPinOk instead of hardcoded
- getSettingsJS: add pinDropdownsPost