Commit Graph

554 Commits

Author SHA1 Message Date
Frank
1336de12a0 Info Page: added status info for audioreactive
- Current sound source - including "failed to initialize"
- Current AGC or Manual Gain
- Sound Sync Status
2022-08-17 00:15:06 +02:00
Blaz Kristan
0f78bd3785 PWM fan manual speed override. 2022-08-16 20:57:24 +02:00
Frank
1a2701561b AR: bugfix for audio sync receive, and a few robustness improvements
* Header checking for sound sync receiver: removed wrong "!"
* make sure all member vars have initial values
* some robustness improvements in case of receiving bad UDP data.
2022-08-16 12:02:22 +02:00
Frank
91fe80334b Merge remote-tracking branch 'origin/segment-api' into audioreactive-prototype 2022-08-15 21:33:30 +02:00
Blaz Kristan
7125d19af1 Bugfix for saving usermod settings.
Modification of global interface pin allocation.
Code relocation in 4LD.
2022-08-15 20:23:47 +02:00
Frank
873e41dcfb AR: change smoothing of FFTResult
FFTResult smoothing changed; rising edges will be very quick, falling down is slower.
2022-08-15 14:28:51 +02:00
Frank
5a4713950c improved ADCsample processing (from SR WLED)
improved ADCsample processing,  including replacement of "rogue" samples from other channels (this happens at least once in 5 seconds !!).

It compiles, don't ship it yet - needs more testing.
2022-08-14 16:17:34 +02:00
Frank
c6691564a5 removing dead code from getSamples() 2022-08-14 14:47:03 +02:00
Frank
8acb44b202 small improvement for limitSampleDynamics
support the case when only attackTime XOR decayTime is defined
2022-08-14 14:38:27 +02:00
Frank
72770e5809 Merge remote-tracking branch 'origin/segment-api' into audioreactive-prototype 2022-08-14 14:19:57 +02:00
Frank
968721a515 some audio processing improvements and bugfixes from SR WLED
- smoothing FFTResult (don't have a matrix to test)
- UDP sound sync improvements
- some bugfixes from SR WLED
- button.cpp: avoid starvation: strip.isUpdating() can be true for a long time.

work in progress - still needs testing!!
2022-08-14 13:58:07 +02:00
Blaz Kristan
1de009a80d I2C & SPI fixes. Global interface. 2022-08-14 13:05:59 +02:00
Blaž Kristan
d05b49496c Merge branch 'segment-api' into audioreactive-prototype 2022-08-11 13:24:01 +02:00
Blaz Kristan
e0a954caa2 4LD refresh task.
Scrolling text improvement.
LED settings bugfix.
Audioreactive disabled by default.
2022-08-10 20:20:36 +02:00
Frank
ecce3243de save 1KB of RAM
save one KB (4*256 bytes) by not storing the "upper half" of FFT results. Only the lower half has interesting results.
2022-08-10 18:14:28 +02:00
Frank
5e6532959b AudioSource improvements (work in progress)
-new methods: getType(), isInitailized(), postProcessSample()
- allow users to compile for RIGHT audio channel (-D I2S_USE_RIGHT_CHANNEL)
- better handling in case audio input driver failed to initialize
- removed some unneeded code and unneeded parameters
2022-08-10 17:18:43 +02:00
Blaž Kristan
d8b7cfb36b Display task (background refresh) in 4LD 2022-08-10 14:00:04 +02:00
Blaz Kristan
957948f906 Code optimisations in effects.
Remove Wire initialisation from RTC.
Peek fix.
2022-08-09 21:14:37 +02:00
Frank
924073424f AR FFT task optimization - wait so I2S can fill its buffers
It seems that waiting first (before reading I2S) is much better than waiting after FFT is completed.
2022-08-08 13:53:46 +02:00
Frank
3a8c99d43c AR: removed two unneeded variables
some cleanup - no functional impact.
2022-08-08 10:51:46 +02:00
Frank
58987989da experimetal: limit rate at which the FFT task runs
this should do the trick.
Needs some more testing.
2022-08-07 22:19:38 +02:00
Frank
86e8ee334f future support: reading a single sample on 8266
audioreactive will still not work on 8266. This is just experimental code that allows to read a single sample from ADC every 20 millis.
2022-08-07 22:04:26 +02:00
Frank
8694e7a6bf AR: loop hickup protection (from SR WLED)
same "hickup protection" as implemented in SR WLED.
2022-08-06 18:17:45 +02:00
Frank
b46a6ed094 AR: samples dynamics limiter (experimental)
to enable, compile with -D SOUND_DYNAMICS_LIMITER.
still missing UI integration, and more testing.
2022-08-06 17:53:35 +02:00
Frank
d0f53cb14a AR: removing some old debug code
Align with SR WLED code:
- removed old debug code that did not work any more
- removed experimental MAJORPEAK_SUPPRESS_NOISE code
2022-08-06 17:24:39 +02:00
Frank
96d497a5cd AR: optimize sound sync, and code improvements
UDP audio sync: introduced new header version, because the new struct (without myvals[]) is not compatible with the previous struct. Also optimized structure size.
UDP audio sync: sender decides is AGC or non-AGC samples are transmitted.
getsamples: move volumeSmth/volumeRaw code out of AGC core function.
2022-08-06 16:48:26 +02:00
Blaz Kristan
eb8710df81 Merge branch 'audioreactive-prototype' into segment-api 2022-08-05 16:29:32 +02:00
Blaz Kristan
d328db543e Bugfixes.
- gamma on *Color palettes
- gamma moved out of WS2812FX
- palette fade (JSON) fix
2022-07-30 23:58:29 +02:00
ewowi
84750e2605 Refactor um_data: remove fftBin 2022-07-29 15:50:09 +02:00
ewowi
dfa1a3ad90 Refactor um_data: remove inputLevel 2022-07-29 15:43:27 +02:00
ewowi
c1f9445e9d Refactor um_data variables for audio reactive
- change sample to sampleRaw
- add volumeSmth, volumeRaw, my_magnitude and calculate in agcAvg
- remove sampleAvg, soundAgc, sampleAgc, sampleRaw, rawSampleAgc, FFT_Magnitude, multAgc, sampleReal, sampleGain, (myVals), soundSquelch from um_data interface
- refactor all effects using above variables
2022-07-29 15:24:04 +02:00
ewowi
bc67bf6826 Replace myVals from audio_reactive.h to SEGMENT.data
(position in um_data reserved as free, could be cleaned up later)
2022-07-29 10:04:10 +02:00
Blaz Kristan
a6f31a577a Merge branch 'segment-api' into audioreactive-prototype 2022-07-27 21:35:29 +02:00
Blaz Kristan
cb44d45eeb Merge branch 'dev' into segment-api 2022-07-22 14:41:39 +02:00
Blaz Kristan
c15ffca48c Merge branch 'master' into master-merge 2022-07-22 14:34:02 +02:00
Blaz Kristan
bda3c4ab7a Minor optimisations. 2022-07-21 18:38:07 +02:00
albarlow
c96f83b076 Registered Usermod and Pins
Implemented PinManager and rerun setup of usermod after updating pins/

Registered in const.h and pin_manager.h   I tried to follow the existing formatting/numbering in these files.

Wrapped any strings I could in F()
2022-07-21 09:48:37 +01:00
albarlow
7308f5993c Added changelog 2022-07-20 22:53:45 +01:00
Blaz Kristan
1e4f8be74b Merge branch 'mapping12soundsim' into segment-api 2022-07-20 21:22:23 +02:00
albarlow
22ac12dc36 Remove compile-time variables and revamp readme.md 2022-07-20 13:06:27 +01:00
albarlow
866296fefd Update usermod bme280 rounding
Apply rounding per usermod settings
2022-07-19 22:15:26 +01:00
albarlow
9d574397bc usermod bme280
Added public variables to the BME280 usermod based on those in the Temperature usermod.  Only complication is that this usermod utilises different function calls depending on whether user defines celsius or not.  I have handled this for the temperature, but the Dew Point and Heat Index are relative to the temperature.

I've also addressed some areas where I'd previously assumed Celsius for reporting purposes as my test case is using Farenheit.
2022-07-19 21:47:56 +01:00
Blaz Kristan
a46894f395 Bugfixes. 2022-07-19 16:16:43 +02:00
albarlow
bee48dae7e Update readme 2022-07-19 14:52:39 +01:00
albarlow
e12f7b67e5 Usermod BME280 Enhancements
I added a Usermod interface for key settings.  I used a PinArray for the SDA/SCL pins, but you can't name these individually.

I have also made a display to show the temperature/humidity values in the web interface's Info screen.

I had to change the definition of those items in order to allow these new functions to work.  I have not noticed any negative side effects to this change.

At the moment, I've not figured out how to make Celsius/Farenheit toggleable due to the way the #define setup works.

Finally, I have added a routine to publish MQTT Discovery Topics for Home Assistant (toggleable in the Usermod screen).

I've been testing this on the only suitable device I have for a few months and haven't noticed any problems.
2022-07-19 14:52:10 +01:00
Blaz Kristan
6c6849d8d7 Vectors & dynamic loadJS.
- Segments
- Modes

NOTE: crashes ESP if effect is running while deleting segment.
2022-07-17 15:58:41 +02:00
Frank
ce32ac19dd AR: better default values
gain =1 does not make much senses, at it means "0.0825"; 40 internally translates to "1". 60 seems to be a good start.
- Don't use ADC analog microphone as default, to avoid well-known conflicts with other stuff hooked up onto ADC1,
- re-enabled a forgotten delay (overlooked that in my last commit)
2022-07-11 14:30:03 +02:00
Frank
ff5d899a92 AR: gracefull suspend when under external control
- same fix as in SR-WLED upstream
- if strip.isupdating() is true for more than 12ms, run audio filter loop regardlessly. The userloop is very fast, so I'm expect no bad side-effects from this.
2022-07-10 22:47:42 +02:00
Blaz Kristan
d9f2c2b968 Segment API
- moved all drawing logic to segment
- moved transitions to segment
Conditional 2D compile.
Rearranged effect IDs.
Implemented dynamic effect arrays.
2022-07-10 22:23:25 +02:00
Blaz Kristan
f0992d56c1 Added global I2C & SPI HW pin defines
Fixed default values fo custom sliders.
Fix for color selector.
Changed fading for 2D GEQ
Audioreactive fix send/receive option
2022-07-07 23:07:20 +02:00
Frank
67bcf42125
audioreactive: typo
oops.
2022-07-07 19:29:36 +02:00
Frank
935ddd12ec audioreactive: allow compiling with newer IDF versions
same as my last patch in original WLED-SR
2022-07-07 19:27:22 +02:00
Blaz Kristan
377a11b160 Fix for enable/disable FFT task. 2022-07-06 19:46:32 +02:00
Blaz Kristan
9519c8edbd Fix disbling AudioReactive usermod
Reduce IRAM pressure for ESP8266
2022-07-06 19:42:48 +02:00
Blaz Kristan
64fd207533 Refactoring WS2812FX class.
- effect functions no longer part of class
- methods to access private members
- separate Segment, Segment_runtime, ColorTransition from WS2812FX
2022-07-06 13:13:54 +02:00
Frank
96e04f1c54 AR: option to use new (template-based) ArduinoFFT
Additonal build_flags: -D UM_AUDIOREACTIVE_USE_NEW_FFT
Additional lib_deps: https://github.com/kosme/arduinoFFT#develop @ 1.9.2
2022-07-04 17:09:20 +02:00
Frank
bfbff723ac AR: use more accurate timer for benchmarking
use  esp_timer_get_time() because it is more accurate. Actually I don't trust millis() so much ;-)
2022-07-04 13:58:25 +02:00
Frank
03dba4d7d0 restoring a few doubles
a few doubles are currently necessary, due to high speed of the control loops (see discord discussion).
2022-07-04 12:34:32 +02:00
Blaz Kristan
8b58d96aea Float variables instead of double. 2022-07-03 23:00:32 +02:00
Blaz Kristan
0a2e01a616 Multiple changes:
- change arduinoFFT to float (custom)
- update audioreactive to use float
- update effects to use float
- info slider (usermod)
- hide Peek in 2D
- minor bugfixes
2022-07-03 22:55:37 +02:00
Blaz Kristan
cf3faa1170 Merge branch 'audioreactive-prototype' into 2D-support 2022-06-29 16:30:50 +02:00
Blaz Kristan
ae50374d55 Prevent analog button from working.
If analog input selected.
2022-06-29 14:12:07 +02:00
Blaz Kristan
a3b0b8b3d0 Change on/off button for Sataicase usermod. 2022-06-28 12:33:00 +02:00
Blaz Kristan
84106d6282 Merge branch 'dev' into audioreactive-prototype 2022-06-22 18:04:40 +02:00
Blaz Kristan
4c759083be Multiple changes.
Added:
- introduced addEffect() and setupEffectData()
- conditional compile for audio effects
- introduced getModeData() and getModeDataSrc() instead of public var
- changed _modeData[] to private non-static

Fixes:
- DMTYPE use
- add reboot info to DMTYPE
- transpose & reverse with mirroring
2022-06-21 22:49:45 +02:00
Blaz Kristan
d3bb079be4 Muliple enhancements:
- Smarter on/off buttons in Info panel (usermods)
- On/Off bus in bus_manager
- 2D GEQ fix (2D CenterBars obsolete)
- hide unused palettes & modes
2022-06-20 22:17:01 +02:00
Blaz Kristan
7ebb58b1fa Code shuffling (making bugs) 2022-06-19 19:15:34 +02:00
Blaz Kristan
ac5b3110f2 Code cleanup (reduced globals). 2022-06-18 12:57:54 +02:00
Blaz Kristan
48259b4ffe Reorganised exchange array.
Updated effects to reflect reorganisation.
Provide feedback to UI for maxVol and binNum.
2022-06-18 12:36:10 +02:00
Blaz Kristan
36503f0417 Fix CRLF 2022-06-17 16:24:25 +02:00
Blaz Kristan
0daddf9896 Some fixes.
Remove (*) palettes if not all 3 color selectors shown
Updated comments
2022-06-17 16:18:35 +02:00
Blaz Kristan
f3364e1327 Scrolling text #DATETIME bugfix.
Cosmetic changes.
2022-06-16 21:52:14 +02:00
Blaz Kristan
cf54115077 Sync bug fixes.
Analog input fix.
Code cleanup.
2022-06-16 19:20:04 +02:00
Blaz Kristan
12a94c50b8 Various fixes.
Added support for no audio to some effects.
2022-06-16 16:10:38 +02:00
Blaž Kristan
f92c336ae4 Fix for fftCalc 2022-06-16 07:47:58 +02:00
Blaz Kristan
477c9ef577 Cosmetic fixes. 2022-06-15 22:17:34 +02:00
Blaz Kristan
e146a476bd Effect ID compatibility with WLED-SR
Updated some SR effects.
2022-06-15 17:21:32 +02:00
Blaž Kristan
f32a39e79f Finalised used variables in effects 2022-06-14 14:48:13 +02:00
Blaž Kristan
e7d311d23c I2S SD pin output type fix 2022-06-14 11:26:52 +02:00
Blaz Kristan
2b259f3704 Usermod API enhancements
- data exchage getUMData()
- usermod configuration helper appendConfigData()
- notification on updates onUpdateBegin()
2022-06-13 22:11:55 +02:00
Blaz Kristan
cdef8472e3 Gav... efects to test audio
Anti-aliased setPixelColor() with support for normalized x & y
2022-06-13 21:28:10 +02:00
Blaz Kristan
f9c933bf3b AudioSource classes cleanup 2022-06-13 17:34:49 +02:00
Blaz Kristan
cc995ecef8 2D Waverly audio reactive. 2022-06-12 22:17:17 +02:00
Blaz Kristan
8c759cb65a Usermod config info & data. 2022-06-11 18:55:23 +02:00
Blaz Kristan
bd45c67528 Virtual fixes.
Pins.
2022-06-11 12:35:29 +02:00
Blaz Kristan
562a206508 It compiles!
Cleaned (and possibly broken) AudioSource
Added:
- usermod notification about update
- strip.getMinShowDelay()
- pin manager updates
Changed:
- data exchange
2022-06-11 00:50:29 +02:00
Blaz Kristan
dd584e929f Added audioreactive to usermod_list
Formatting in usermod
2022-06-10 16:37:55 +02:00
Blaz Kristan
1828a2a81c Addec config save/load.
Changed double to float.
2022-06-09 18:55:35 +02:00
Blaž Kristan
a6746f77f0 Var fixes. 2022-06-09 14:44:48 +02:00
Blaz Kristan
184ff7a3b3 Audioreactive usermod. 2022-06-08 21:14:01 +02:00
Blaz Kristan
9db872db56 Fixes:
- mirroring
- FX memory allocations
- preset loading if WS request too big

Changes:
- remove "pt" in favor of "ps" in JSON
- fading in Ghost rider
2022-06-05 10:16:56 +02:00
Blaz Kristan
f1a1b89d13 Fixes.
- correct preset cycling
- updated rotary encoder preset selection
2022-06-03 22:22:18 +02:00
Blaz Kristan
793c878c66 Added display information for hue/sat/preset/cct 2022-06-02 18:30:23 +02:00
Blaz Kristan
e9cd4d95a7 Merge branch 'master' into master-merge 2022-05-29 18:22:33 +02:00
srg74
43c5de074f
Update usermod_temperature.h
Typo in line 149
2022-05-27 15:42:03 -04:00
Blaz Kristan
3d6df07335 Bugfixes in 2D.
PIR stops countdown if preset changed.
2022-05-27 13:39:22 +02:00
Blaz Kristan
17be0a2c12 Enhance rotary encoder with custom sliders.
Soft watchdog timer (by poelzi)
2022-05-24 13:45:35 +02:00
Blaz Kristan
8c31904838 Updated rotary encoder ALT to support modes array. 2022-05-22 12:56:01 +02:00
Blaz Kristan
7d25b234d5 Temperature usermod HA autodicovery. 2022-05-18 19:49:49 +02:00
Blaz Kristan
c6578870f0 PWM fan JSON API control. 2022-05-18 19:46:31 +02:00