Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Pinwheel Expand 1D Effect #3961

Merged
merged 18 commits into from
May 15, 2024
Merged

Added Pinwheel Expand 1D Effect #3961

merged 18 commits into from
May 15, 2024

Conversation

Brandon502
Copy link
Contributor

Requested on discord to bring this effect from MM to main branch. Reworked and optimized by @softhack007.

Copy link
Collaborator

@blazoncek blazoncek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fine to me, except the use of sinf/cosf which should be replaced by sin_t/cos_t.

BTW I found out that there is no need to use int_fast32_t unless you strictly need 32 bits and the code is ported to 16 bit environments (or int_fast16_t). int would be cleaner (or unsigned where appropriate) and the compiler treats it as such, but that's just my preference.

@softhack007
Copy link
Collaborator

softhack007 commented May 9, 2024

Hi, let me answer as the one who did the optimization part of the new mapping mode.

Looks fine to me, except the use of sinf/cosf which should be replaced by sin_t/cos_t.

sin_t/cos_t are slow and less accurate.

I guess you intend to reduce 8266 memory footprint, by not pulling in the dependency to std math lib?

We might be able to implement your suggestion at least in the getpixelcolor() part, which is inaccurate any way.

BTW I found out that there is no need to use int_fast32_t unless you strictly need 32 bits and the code is ported to 16 bit environments (or int_fast16_t). int would be cleaner (or unsigned where appropriate) and the compiler treats it as such, but that's just my preference.

Not sure. In fact we do fixed-point math in setPixelColor(). As the x and y position is incremented until we hit the border, 9 bit of "fraction" just leaves about 1-2bit of slack when one of the matrix dimensions is close to the maximum of 256 (imagine a matrix 196x4). Unsigned is not possible, because we have negative increments when sin() gets negative.

So considering that x and y can be at most 256, we'd need 18bit of resolution for good results (one bit for sign, 8bit integer part, 9bit fraction). Maybe we can squeeze out 2bits of fraction so everything fits into 16bit. I'd need to do some more testing to see if reducing the resolution creates holes in the mapping.

I'm not sure if we can expect a benefit from going to int16 for x and y. What do you think?

Edit: just re-read your question - maybe I misunderstood part of it 😄 yes in principle we can change int_fast32_t to just int and add a comment that at least 18bits (signed) are needed for the algorithm to work properly.

@softhack007
Copy link
Collaborator

softhack007 commented May 9, 2024

(Changing hat - now speaking as a maintainer 🎩 )

the pinwheel mapping works with many effects, however it has a few open ends:

  • not explictly supporting "virtual 2D strip" effects like fire or popcorn (effects do work, just no "virtual 2D" along the rays)
  • getpixelColor is sometimes inaccurate, as it returns color of a pixels with correct angle, however on the outmost circle that was possibly overwritten by a neighbouring "ray" already. This could be improved by using a pixel from the segment edge, but that's still not perfect. To really solve this issue, the mapping mode would need to allocate it's own buffer on segment level.

However I think these two limitations are still acceptable for a first shot, just there is room for improvement in the future.

@softhack007 softhack007 added enhancement documentation documentation should be updated to explain behaviour labels May 9, 2024
@blazoncek
Copy link
Collaborator

blazoncek commented May 9, 2024

sin_t/cos_t implementation can be overridden using -D WLED_USE_REAL_MATH, sinf/cosf cannot.
They were introduced by @Aircoookie and I insist they are used across core WLED until he changes his mind. And yes, they were introduced to reduce RAM usage on ESP8266 despite being slightly inaccurate at extreme edges.

int_fast16_t is just a typedef of int on ESP platform (as it is 32 bit). So is int_fast32_t.
At least that's what compiler and VSC tell me.
It does matter with non fast versions. What compiler does is it adds & 0xFFFF to every instruction when using int16_t (non fast).

@softhack007
Copy link
Collaborator

softhack007 commented May 9, 2024

despit being slightly inaccurate at extreme edges.

Ok - just let me add that sin_t and cos_t are not just inaccurate - on esp32 platforms they are noticeably slower than sinf/cosf.

@Brandon502 please make the changes as request by @blazoncek.

  • For the int_fast16_t and int_fast32_t types in serPixelColor(), please change them to int and add a comment about min required number of bits ( I.e. 18bit for former int_fast32_t, 10bit for former int_fast16_t).
  • Also let's replace sinf/cosf by sin_t/cos_t. It's enough to simply change the function name.

Copy link
Collaborator

@softhack007 softhack007 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved from my side, assuming that changes already requested by @blazoncek get implemented.

Adding the "documentation" tag, because I think that limitations of the pinwheel mapping - it may not work well with some effects - should be documented in the KB. But that's a different task.

@blazoncek
Copy link
Collaborator

Ok - just let me add that sin_t and cos_t are not just inaccurate - on esp32 platforms they are noticeably slower than sinf/cosf.

Nobody said they were faster. 😁 sinf/cosf use look-up tables and can be fast, sin_t/cos_t can use polynomial approximation or can be substituted by libc's sinf/cosf implementation.
I am just trying to explain why there was a decision for wled_math.cpp. FYI I do not necessarily agree with that.

cosf/sinf changed to cos_t/sin_t. int_fast32_t and int_fast_16_t changed to int.
@Brandon502
Copy link
Contributor Author

Made the requested changes. Everything still seems to work the same on my matrix. Have not had the chance to test different size matrices yet.

@softhack007
Copy link
Collaborator

@blazoncek do you think this can go into the upcoming 0.15.0-b3, or should we better wait and merge this PR after -b3 is out?

@blazoncek
Copy link
Collaborator

I think this will be included in b3 release this weekend.

@softhack007 softhack007 requested a review from blazoncek May 10, 2024 16:04
@Brandon502
Copy link
Contributor Author

Brandon502 commented May 10, 2024

@softhack007 I never tested large matrices after your rework just looked at the code. I loaded up latest MM version on a virtual 64x64 matrix. Up to 30x30 works fine. 31x31 and 32x32 produces holes. 33x33 up to 50x50 also works correctly. 51x51 and above also produces holes on my end. Not sure if I'm setting up something wrong or if some things need to be tweaked a bit. This applies to v15 version as well for me.

@softhack007
Copy link
Collaborator

softhack007 commented May 10, 2024

@softhack007 I never tested large matrices after your rework just looked at the code. I loaded up latest MM version on a virtual 64x64 matrix. Up to 30x30 works fine. 31x31 and 32x32 produces holes. 33x33 up to 50x50 also works correctly. 51x51 and above also produces holes on my end. Not sure if I'm setting up something wrong or if some things need to be tweaked a bit. This applies to v15 version as well for me.

@Brandon502 thanks for testing. Actually, my main test environments are 24x32 and 52x52 where I didn't see holes.
Holes are always possible when the number of pixels gets very hight. Its mainly about finding the best "tuning" that avoids holes without blowing up runtime too much.

I can take a look on Sunday. If you have time, maybe test out these ideas:

  • For the 32x32 case, please change the 32 in constexpr int Pinwheel_Size_Medium = 32; to 30.
  • for the >50x50 case, I need to see if rounding helps with avoiding holes. I was hoping to get away without rounding for speed reasons. Maybe lines 758 + 759 need to include rounding, i.e. int x = (posx + Fixed_Scale/2) / Fixed_Scale; and int y = (posy + Fixed_Scale/2) / Fixed_Scale;.

Copy link
Collaborator

@blazoncek blazoncek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit perplexed by complexity of what should be a simple expansion.
I did not try to compile so can't judge the efficiency of the code but for testing I'd recommend setting up 4 segments (16x16) with pinwheel expansion and see what FPS you get.

Otherwise the code looks ok.

EDIT: Do you have a video of the expansion in action?

@Brandon502
Copy link
Contributor Author

I am a bit perplexed by complexity of what should be a simple expansion. I did not try to compile so can't judge the efficiency of the code but for testing I'd recommend setting up 4 segments (16x16) with pinwheel expansion and see what FPS you get.

Otherwise the code looks ok.

EDIT: Do you have a video of the expansion in action?

32x32.mp4

virtual matrix so liveview is a bit laggy. Shows a stable 20fps running 4 16x16 segments (Rainbow, Two Dots, Rainbow Runner, Washing Machine). A single 32x32 effect runs around ~28fps.

Removed holes on 31x31 and 32x32 grids.
@blazoncek
Copy link
Collaborator

Shows a stable 20fps running 4 16x16 segments (Rainbow, Two Dots, Rainbow Runner, Washing Machine). A single 32x32 effect runs around ~28fps.

I thought it would be slow. Unfortunate as that is.

@Brandon502 & @softhack007 if you can spot a place for speed optimisation this would need it.

A word about missing pixels: Unless you increase the "resolution" of your expansion (i.e. slow it down), you'll always get them on certain dimensions. Larger dimensions more chance for them as you are dealing with sin/cos.

@softhack007
Copy link
Collaborator

softhack007 commented May 11, 2024

@Brandon502 & @softhack007 if you can spot a place for speed optimisation this would need it.

Yes - the limiting factor is the number of setPixelColor() calls needed for the full pinwheel, so I see two options:

  • add rounding (see my previous comment) and reduce the number of "rays"
  • add two more "steps" by finding the optimal number of rays for common sizes: size <= 16 (~160 rays maybe less); 30 <= size <= 40 (~256 rays may work)

I'm always from my esp32 today - most likely can test that tomorrow.

@Brandon502
Copy link
Contributor Author

Brandon502 commented May 11, 2024

@Brandon502 & @softhack007 if you can spot a place for speed optimisation this would need it.

Yes - the limiting factor is the number of setPixelColor() calls needed for the full pinwheel, so I see two options:

* add rounding (see my previous comment) and reduce the number of "rays"

* add two more "steps" by finding the optimal number of rays for common sizes: size <= 16 (~160 rays maybe less); 30 <= size <= 40 (~256 rays may work)

I'm always from my esp32 today - most likely can test that tomorrow.

Created a custom effect so I can control rays and turn rounding on/off. Rounding seems to be much worse, at least the method you mentioned above. Here's the amount of rays needed for various sizes without rounding.

8x8 30 rays
16x16 72 rays
24x24 128 rays
32x32 200 rays
40x40 272 rays
48x48 296 rays
56x56 296 rays
64x64 448 rays

This may not be 100% accurate, but it's a decent baseline.

Added small pinwheel size. Adjusts medium and large values.
@blazoncek
Copy link
Collaborator

Dear Lord! 😁 For each pixel you draw 200 lines on 32x32? No wonder it is slow.

You need to optimize loop to only call setPixelColor() when either x or y actually changes from previous iteration.
Next optimisation would be to have dynamic "rays" that start at certain distance from center instead of all of them starting at center and overwriting same pixel over and over again.

@Brandon502
Copy link
Contributor Author

I added small pinwheel option for matrices 16x16 and below. The 4 16x16 effects on 32x32 grid went from ~20 fps to ~33 fps. Pinwheel seems to be higher fps then arc on effects that I've tested.

@blazoncek
Copy link
Collaborator

Pinwheel seems to be higher fps then arc on effects that I've tested.

Yes arc is slow as it iterates in polar space (increasing angle) instead of using Bresenham's circle drawing algorithm as that produces empty pixels. That is also in need of optimisation.

@Brandon502
Copy link
Contributor Author

Dear Lord! 😁 For each pixel you draw 200 lines on 32x32? No wonder it is slow.

You need to optimize loop to only call setPixelColor() when either x or y actually changes from previous iteration. Next optimisation would be to have dynamic "rays" that start at certain distance from center instead of all of them starting at center and overwriting same pixel over and over again.

200 lines total on 32x32. setPixelColor seems to be called 3604 times on 32x32. So that can definitely be reduced by avoiding overwriting near the center like you said. I'll play around with trying to reduce it.

@Brandon502
Copy link
Contributor Author

@Brandon502 i think our best chance - in addition to my optimizations to avoid double painting of pixels - is to find optimized numbers of rays for common sizeses -> 16x16, 32x32 (we already have that)

I'm not sure I fully understand your "odd rays" idea - basically you draw even numbered ones from centre (outwards) while drawing odd-numbered ones from the edge (inwards) - is this correct?

later today I want to try a similar idea - by just moving the start of "odd" rays left by 1/2 pixel, we possibly get a slightly better coverage and less holes.

Please test my latest commit with your "test setup" because i'm curious if you see a speedup.

Here's the fps on my setup.

38 FPS on 4 16x16 effects
31 FPS on 1 32x32 Rainbow

Experimental method:
34 FPS on 4 16x16 effects
26 FPS on 1 32x32 Rainbow

Combining your lastX/Y and my odd ray method
40 FPS on 4 16x16 effects
35 FPS on 1 32x32 Rainbow

I pushed my odd ray code. You can likely change the math and make it much quicker. It still goes outward but I just increment it a few times before entering the loop so it starts about midway to the edge instead of the center. When you keep track of the prevRay number you can use this method without breaking effects that don't cover full screen.

posx = (posx + inc_x * (vW/4));

This is how I'm jumping away from the center. On square matrices you can go even further from the center, but rectangles will start producing holes. Can likely find a better spot to jump and make it quicker.

@softhack007
Copy link
Collaborator

Combining your lastX/Y and my odd ray method
40 FPS on 4 16x16 effects
35 FPS on 1 32x32 Rainbow

Thanks, I think that's a great result - we are almost twice as fast now, compared to the original code. And still no holes 😃

I'll look at your "odd ray" code later tonight - and maybe add some tuning for the math.

@blazoncek
Copy link
Collaborator

I'll wait with b3.

* minor cleanup, moved prevRay into setPixelColor
* removed experimental code (too slow)
* comments cleanup
fixing holes that appeared during testing
* at 52x52 (big 296 -> 304)
* at 24x32 (medium 192 -> 208)
* at 12x16 (small 72 -> 82)

... there is still one hole at 14x16 ... well wtf
@Brandon502
Copy link
Contributor Author

Brandon502 commented May 12, 2024

@softhack007 can't test the 52x52 hole yet, but the holes on 24x32, 12x16, and 14x16 are from the prevRay method it seems. Need to tweak the jump distance a bit more.

Edit: Fixed on my end for the smaller matrices. Just messing around with the highest possible jump and I'll push.

Jump distance for odd rays fixed. Removed holes on rectangular matrices.
@Brandon502
Copy link
Contributor Author

Brandon502 commented May 12, 2024

May have messed up while committing. Forgot to pull before committing. 9e0b91a contains the fix. Still need to test on 52x52 though. The jump needed to be the same for each axis. This improves fps slightly for a single 32x32 effect.

Pinwheel_Steps_Small = 72
Pinwheel_Steps_Medium = 192
Are not producing holes anymore at least on on the rectangles I've checked so far.

@Brandon502
Copy link
Contributor Author

Brandon502 commented May 12, 2024

OddRays192 EvenRays192 OddRays72 EvenRays72

Quick visualization showing only the odd rays / even rays. May help show areas for further improvement.

softhack007 and others added 2 commits May 13, 2024 19:27
* setPixelColor: ensure that 0/0 is used
* getPixelColor: accuracy improvements

unfortunately, "scrolling" audioreactive effects are still not working properly - they end after 1/4 of the circle. Could be due to limited resolution of getPixelColor.
Fixed getPixelColor.
@Brandon502
Copy link
Contributor Author

Brandon502 commented May 13, 2024

@softhack007 fixed music mode effects. Got tired of trying ways to fix the weird rounding issues causing wrong pixel to be used in getPixelColor so I just used the exact same method as setting. Seems like it works. Changed small and medium pinwheel sizes back to the smaller values. I haven't spotted any missing holes.

Waterfall and DJ Lights (scrolling effects) are running at 55+ fps on 32x32.

@softhack007
Copy link
Collaborator

softhack007 commented May 14, 2024

Got tired of trying ways to fix the weird rounding issues causing wrong pixel to be used in getPixelColor so I just used the exact same method as setting

Hi @Brandon502, maybe that's the better solution 👍 .
A part of me keeps saying "DRY - don't repeat yourself" but most important is "it works", and the ray algo is fast enough to re-run it (without setting pixels) in getpixelcolor. It's also very compact in code size so having a reduced version in getPC should be ok.

The other benefit is that we get higher resolution in getpPixelColor now, because we always use an edge pixel not a circle inside the segment frame - that's an improvement especially on non-square layouts.

@blazoncek I think we are good now for beta3. Maybe just wait if something comes up until the evening, then merge the PR.

@softhack007 softhack007 removed the documentation documentation should be updated to explain behaviour label May 14, 2024
reducing code duplication between sPC and gPC
there were still two holes in my 52x52 setup --> added "XL" size for bigger than 50x50 - achieves 18fps on 52x52
@softhack007
Copy link
Collaborator

softhack007 commented May 14, 2024

Hi guys, for me it's good now 😃
@Brandon502 maybe you can do a final cross-check before we merge?

An intersting goodie (and we should keep that) is the behaviour of "Wavesins" with pinwheel mapping.
Its producing a moirè pattern that alternates (black/orange) with every "full scan" round. Looks a bit like a radar screen 😉

Wavesins_Pinwheel

@Brandon502
Copy link
Contributor Author

Hi guys, for me it's good now 😃 @Brandon502 maybe you can do a final cross-check before we merge?

An intersting goodie (and we should keep that) is the behaviour of "Wavesins" with pinwheel mapping. Its producing a moirè pattern that alternates (black/orange) with every "full scan" round. Looks a bit like a radar screen 😉

Hey @softhack007, I did a run through of all the effects last night. The only "broken" effects are now ones that use a "stripe" pattern. Like wavesins (above) and traffic light along with a few others. With these you can see the jump on odd rays. Even if you remove the jump they still are somewhat broken since close rays still overwrite each other. Playing with the sliders on wavesins does produce so nice patterns with the jump visible.

I'm not sure why you're getting holes on your large setup. If you want to reduce the count of rays even further can you try these values....

constexpr int Pinwheel_Steps_Small = 64;       
constexpr int Pinwheel_Steps_Medium = 160;
constexpr int Pinwheel_Steps_Big = 296; 
//    8x8  ->  24 steps    36x36  ->  192 steps
//  12x12  ->  48 steps    40x40  ->  216 steps 
// *16x16  ->  64 steps    44x44  ->  256 steps
//  20x20  ->  88 steps    48x48  ->  256 steps
//  24x24  -> 112 steps    52x52  ->  296 steps
//  28x28  -> 136 steps   *56x56  ->  296 steps
// *32x32  -> 160 steps    60x60  ->  408 steps

I've doubled check all of these values, so if they aren't working for you on >32x32 I can't trust my setup anymore lol.

@Brandon502
Copy link
Contributor Author

If you like data here's the optimal rays for every grid size and the amount of setPixelColor calls with and without jump needed for each. This data wasn't verified like the numbers above but they seem to all line up. If you ever wanted to make this even more efficient for the very large grids I think I have a way that uses this same method, just can't think of how to code it quite yet. But I'm sure there are even better ways.

Size Rays Total SetCalls JumpSetCalls
4 14 16 32 25
5 22 25 60 49
6 24 36 77 53
7 24 49 92 68
8 24 64 112 88
9 34 81 168 159
10 48 100 264 192
11 48 121 291 219
12 48 144 320 224
13 63 169 456 332
14 64 196 493 365
15 64 225 535 375
16 64 256 572 412
17 64 289 608 448
18 88 324 885 677
19 88 361 935 735
20 88 400 984 792
21 104 441 1220 924
22 112 484 1373 981
23 112 529 1447 1055
24 112 576 1508 1060
25 120 625 1679 1283
26 136 676 1977 1521
27 136 729 2060 1528
28 136 784 2136 1616
29 144 841 2343 1695
30 160 900 2681 1881
31 160 961 2780 1980
32 160 1024 2868 2068
33 184 1089 3407 2491
34 192 1156 3654 2598
35 192 1225 3763 2707
36 192 1296 3876 2724
37 192 1369 3984 2832
38 216 1444 4603 3307
39 216 1521 4727 3447
40 216 1600 4856 3584
41 216 1681 4972 4220
42 256 1764 6025 4233
43 256 1849 6179 4387
44 256 1936 6324 4532
45 256 2025 6460 4540
46 256 2116 6597 4677
47 256 2209 6739 4819
48 256 2304 6880 5760
49 296 2401 8135 5923
50 296 2500 8297 6097
51 296 2601 8468 6752
52 296 2704 8636 6932
53 296 2809 8803 7129
54 296 2916 8965 7843
55 296 3025 9136 8048
56 296 3136 9300 8264
57 368 3249 11775 8279
58 408 3364 13278 9402
59 408 3481 13515 9639
60 408 3600 13752 9672
61 408 3721 13968 9888
62 408 3844 14203 10123
63 408 3969 14427 10143

@softhack007
Copy link
Collaborator

softhack007 commented May 14, 2024

I'm not sure why you're getting holes on your large setup.

One difference is I'm using an -S3 in my setup, which requires a newer framework version (esp-idf 4.4.4 +arduino-esp 2.0.9). Could be that my additional holes comes from slightly different accuracies of sinf/cosf in the new framework. I had two holes in 51x52 and 52x52.

If you like data here's the optimal rays for every grid size and the amount of setPixelColor calls with and without jump needed for each

Thanks 👍 will put them into excel later tonight - maybe there's a pattern. I'd say let's do a second optimization round after -beta3 is out.

@Brandon502
Copy link
Contributor Author

If you like data here's the optimal rays for every grid size and the amount of setPixelColor calls with and without jump needed for each

Thanks 👍 will put them into excel later tonight - maybe there's a pattern. I'd say let's do a second optimization round after -beta3 is out.

Sounds good. Just pushed a small change to format getPinwheelAngle the same as getPinwheelLength removing the long single line method.

Final FPS numbers:
41 FPS on 4 16x16
37 FPS on 32x32 Rainbow

wled00/FX_fcn.cpp Outdated Show resolved Hide resolved
@softhack007 softhack007 merged commit e33299b into Aircoookie:0_15 May 15, 2024
18 checks passed
softhack007 added a commit to MoonModules/WLED that referenced this pull request May 15, 2024
Added Pinwheel Expand 1D ->2D effect mapping mode
softhack007 added a commit to softhack007/WLEDMM_work that referenced this pull request Aug 15, 2024
commit f8a58fb709f2c5114f4ce05748b231348ba09152
Author: Damian Schneider <[email protected]>
Date:   Sat Jul 6 08:39:26 2024 +0200

    Added 'Color Waves' and 'Pride' to PS Chase

    - PS Chase now has two more options to replace color waves and pride (work in progress, about 95% finished)
    - PS Bouncing Balls now has larger particle size rendering option added (plus some improvements)
    - some cleanup

commit 16b03e7a591b847d15a8d29307a7096862c8e0c2
Author: Damian Schneider <[email protected]>
Date:   Sun Jun 30 17:24:02 2024 +0200

    Huge update, added 1D version of particle system plus many new FX

    **2D FX candidates for replacement**
    - Fireworks 1D -> PS Fireworks (not a 1:1 replacement but similar)
    - Ghost Rider -> PS Ghost Rider
    - Blobs -> PS Blobs
    - Fire 2012 -> PS Fire (note: there is no 1D replacement yet)
    - Rain - 2D -> PS Ballpit, slow setting, no floor (very similar except dots are not fading)

    **1D FX candidates for replacement**
    - Bouncing Balls -> PS bouncing balls
    - Rolling Balls -> PS bouncing balls with 'Rolling' enabled
    - Dancing Shadows -> PS Dancing Shadows
    - Drip -> PS DripDrop
    - Fireworks 1D -> PS Fireworks 1D
    - Fireworks Starburst -> PS Starburst
    - Lighthouse -> PS Chase with 'Color by position', lowest density
    - Popcorn -> PS 1D Spray with disabled bounce
    - Rain: PS DriopDrop, 'Rain' check enabled, no splash, no blur, no gravity
    - Solid Glitter -> PS Sparkler (not worth disabling, only a few bytes)

    Some Notes:
    - Glitter & Sparkle-> could be replaced with PS Sparkler with overlay OR with an additional FX that draws the background first, maybe not possible on ESP8266
    - Juggle could be replaced but will not save much (but would add more options)
    - Pride 2015 could be replaced by adding a 'pride' checkmark to PS Chase, woud save about 1kB
    - Colorwaves -> could be replaced with PS Chase with additional color setting for hue change, similar to pride. Would save another 1kB
    - Theater and Theater rainbow could be dropped -> PS Chase but it will not save much
    - Chase 2 & Chase 3 -> PS Chase (width can not be set as high as originals), share a function with Theater, so all have to be disabled (would save about 600 bytes)
    - 2D handling of some of the 1D replacements will be lost (like drip), I did not check all current FX in 2D
    - Freqmap, Freqwave and Freqmatrix (2.2kB total) could be replaced with a single FX using the PS, would save about 1kB
    - Blurring&Overlay only works if global buffer is enabled
    - All PS effects are frame-time based, there may be significant speed differences to the original effects if they use timers (and if FPS are low)

    Use these #defines to enable/disable PS or FX at compile time:
    WLED_DISABLE_PARTICLESYSTEM2D
    WLED_DISABLE_PARTICLESYSTEM1D
    DISABLE_2D_PS_REPLACEMENTS
    DISABLE_1D_PS_REPLACEMENTS

commit fc6c2dadc47f385db83e6a1f71a5ff7b2f138dc9
Author: Damian Schneider <[email protected]>
Date:   Mon May 27 08:15:22 2024 +0200

    revert files to origin

commit 3903de493d66ebc6f54c4b326d9a954f402b21c5
Merge: 29f75de7 501f988b
Author: Damian Schneider <[email protected]>
Date:   Mon May 27 08:14:52 2024 +0200

    Merge remote-tracking branch 'upstream/0_15' into FXparticleSystemSquash

commit 29f75de7202f4ada4879720c6f844ef18723c8dd
Author: Damian Schneider <[email protected]>
Date:   Mon May 27 07:39:49 2024 +0200

    Bugfix and minor improvements

    - fixed bug in center GEQ
    - added '2D washing machine' mode for particle box
    - improved color-change rate in ghostrider
    - added AR to attractor (experimental, may remove again)

commit 501f988b0f67f63860b22142ff89ef71095a9b4c
Author: Blaz Kristan <[email protected]>
Date:   Sat May 25 20:01:38 2024 +0200

    ESP-NOW usermod hook

commit f3b0906cea8175b7559b8f6b4d809da53dc7a69f
Merge: 9f581c61 904b1f11
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 21:22:35 2024 +0200

    Merge pull request #3993 from gsieben/0_15

    Update wled.h regarding OTA Password

commit 9f581c618186932163bb028d7e2fcce6fdb8a35a
Merge: 31b232d3 bfd1bdfc
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 21:20:47 2024 +0200

    Merge pull request #3994 from gsieben/0_15-Usermod-BME68X-Pull-Request

    Usermod BME68X Sensor Implementation rebased for WLED 0.15

commit 31b232d3f3302be40c3f6d20b3a098b65829d100
Merge: 0bcdc964 77e6a6de
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 21:20:03 2024 +0200

    Merge pull request #3977 from LordMike/feature/aht10_usermod

    Add a usermod for AHT10, AHT15 and AHT20 temperature/humidity sensors

commit 77e6a6de613563417e2597bc737e01071b037fa5
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:23:25 2024 +0200

    Revert .gitignore

commit 85702a8142533cdfe19f7e89a0b4317e7d767f51
Merge: 1dd9c675 0bcdc964
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:21:16 2024 +0200

    Merge branch '0_15' into feature/aht10_usermod

commit 0bcdc9641dbb8c233ddf6cf4b05080e882171f81
Merge: c1fed6d4 19ccff9f
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:17:08 2024 +0200

    Merge pull request #3968 from adamsthws/0_15_battery_usermod_readme

    Update Battery usermod documentation

commit bfd1bdfc6462e63fd38c559b605dd9fc6bc0efa7
Merge: 79ffe021 c1fed6d4
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:14:23 2024 +0200

    Merge branch '0_15' into 0_15-Usermod-BME68X-Pull-Request

commit c1fed6d469aa97df3b23cf39e992cc517693e95c
Merge: 4a7ef070 0df726cd
Author: Blaž Kristan <[email protected]>
Date:   Tue May 21 18:12:03 2024 +0200

    Merge pull request #3986 from LordMike/feature/ina226_usermod

    Add INA226 usermod for reading current and power over i2c

commit 79ffe021e42331d2268824883ba5784f7c821ee7
Author: Gabriel Sieben <[email protected]>
Date:   Tue May 21 11:41:57 2024 +0200

    Update usermod_bme68x.h

    One error message was in German

commit 904b1f114bb4428f1a46795967aa826588bb1a60
Merge: db2cdca7 4a7ef070
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 22:30:28 2024 +0200

    Merge branch 'Aircoookie:0_15' into 0_15

commit 63f481d49890e74cc512c5ccf6da25786e7f1713
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 22:09:20 2024 +0200

    Update wled.h

    Accidentally included changes removed.

commit fc5c19788e6104024c9fd2903475330829c9858c
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:49:05 2024 +0200

    Update usermod_bme68x.h

commit 56e0bde8ab660146d46e2251a0ab9a67871c229a
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:45:01 2024 +0200

    Rebase of the user mode BME68X sensor in WLED 0.15

commit db2cdca71b242a3684d4bdc60adfcdd85c441adc
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:25:08 2024 +0200

    Revert "First implementation of the user mods for the BME68X sensor in WLED 0.15"

    This reverts commit faa2fba6b94ba86a48cd374a4090112f39b3bb6d.

commit faa2fba6b94ba86a48cd374a4090112f39b3bb6d
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 14:10:25 2024 +0200

    First implementation of the user mods for the BME68X sensor in WLED 0.15

commit f727ea2874452eebbcd3789940d25c26d2965802
Author: Gabriel Sieben <[email protected]>
Date:   Mon May 20 13:13:40 2024 +0200

    Update wled.h

    OTA_PASS

commit 4a7ef07089e7d6280e1ac686c190293cc38bbf98
Author: Blaž Kristan <[email protected]>
Date:   Mon May 20 12:24:26 2024 +0200

    Fix for #3991

commit 0df726cdabac94a4512aea7d8d44ddec99255b95
Author: Michael Bisbjerg <[email protected]>
Date:   Sat May 18 15:52:01 2024 +0200

    Add note to platformio override sample

commit fae5938b0aec813410d327d617dbddbc1c7fcf51
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 13:01:28 2024 +0200

    Build bump, changelog update

commit 2ec3639900c28cf1bb170b99bfeb42f5c9ce58ac
Merge: 45134046 2aec21a6
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 11:24:18 2024 +0200

    Merge branch 'main' into 0_15

commit 4513404629fc47d7768400fe889e70e0d9bc78b7
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 11:15:16 2024 +0200

    Fix for #3987

commit 13bfda56efa8af56e92456480c35dffb2785a038
Author: Blaz Kristan <[email protected]>
Date:   Sat May 18 11:11:40 2024 +0200

    Auto segment creation bugfix
    - additional debug
    - minor optimisation

commit 075c1644077d8d85f3395223fafe57d883381864
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 17 15:03:56 2024 +0200

    Fix bug in triggered measurements

commit dcb5049f97a291b5d50b259df5832b1dea71e27a
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 17 10:47:33 2024 +0200

    Move to individual settings for samples and conversion time

commit d24cf14009ad632b89d4b119e0c093f7010acab8
Author: Michael Bisbjerg <[email protected]>
Date:   Thu May 16 00:06:41 2024 +0200

    Triggered & continuous modes

commit 3d34802ab22ab83ce6ee36f2b19c6594d52d300a
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 23:27:56 2024 +0200

    Initial ina226

commit 2aec21a6d02247389b88a19791e3b6e69a9177f9
Author: Blaz Kristan <[email protected]>
Date:   Wed May 15 15:34:53 2024 +0200

    Palette loading optimisation
    - fixes #3978
    - FX: Firenoise can use selected palette

commit 19ccff9ff1c833c567e9a1915864a828f4e7b51b
Merge: 6b8d8bf7 77ca2ec0
Author: Adam Matthews <[email protected]>
Date:   Wed May 15 22:15:18 2024 +0100

    Merge branch '0_15' into 0_15_battery_usermod_readme

commit 1dd9c6754c569d4113e9b80c15360ad95d88d749
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 21:32:08 2024 +0200

    Cleanup unecessary struct

commit f9467ceaf155b5dcce7add362138eef0074afe23
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 21:26:30 2024 +0200

    Fix state issue on change reporting, add override sample ini

commit f51da4f0c46920711a08825976d8cdfa540b8d61
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 18:56:45 2024 +0200

    Change reporting to be on significant changes

commit 2eff389ffff68824f3fd57b4dd5c5ce3769d2b39
Author: Michael Bisbjerg <[email protected]>
Date:   Wed May 15 18:35:33 2024 +0200

    Handle feedback

    - Reduce some strings
    - Use an unnamed struct to pack the bitfield instead

commit 77ca2ec0e9c7bd4eb9055d8b2dbcfd0635177d11
Author: Blaz Kristan <[email protected]>
Date:   Wed May 15 15:35:14 2024 +0200

    Compiler warning fix

commit 77e6ea8a6f903db998c821c6e83ab3759f6ce4f2
Author: Blaz Kristan <[email protected]>
Date:   Wed May 15 15:34:53 2024 +0200

    Palette loading optimisation
    - fixes #3978
    - FX: Firenoise can use selected palette

commit e33299bbd76374d1798baacaef48449ea1ee4279
Merge: 5f41de89 3cb6b173
Author: Frank <[email protected]>
Date:   Wed May 15 14:22:10 2024 +0200

    Merge pull request #3961 from Brandon502/0_15

    Added Pinwheel Expand 1D ->2D effect mapping mode

commit 74e273274c3cf433e4db9cb5723abc3dab7ed396
Author: Michael Bisbjerg <[email protected]>
Date:   Tue May 14 23:15:59 2024 +0200

    Replace 5 booleans with 1 byte flags field

commit 02bf5902f03fced548f9aaa4f628eb28412ae673
Author: Michael Bisbjerg <[email protected]>
Date:   Tue May 14 22:53:03 2024 +0200

    Add MQTT and HASS support for AHT10

commit 5f41de893833dfd02cc982cce128bf490bd6dd37
Merge: 1ceeed38 60075f6e
Author: Blaž Kristan <[email protected]>
Date:   Tue May 14 19:39:42 2024 +0200

    Merge pull request #3966 from LordMike/feature/bme280_changeable_i2c

    Add changeable i2c address to BME280 usermod

commit f71d839009fc5e539572318fa0983e29da881c5f
Author: Michael Bisbjerg <[email protected]>
Date:   Tue May 14 17:54:43 2024 +0200

    Address comments

commit 3cb6b173163ad3311b8d6063c01c7c1b74dedfd0
Author: Brandon502 <[email protected]>
Date:   Tue May 14 11:46:52 2024 -0400

    Pinwheel fix

commit c0cb677a4cf33a8244344d8269790ad46fdb5cb8
Author: Brandon502 <[email protected]>
Date:   Tue May 14 11:30:33 2024 -0400

    Pinwheel cleanup

commit a5a6a8eaeea513ce3f4fea51bcc054e4d3d62626
Author: Frank <[email protected]>
Date:   Tue May 14 11:30:25 2024 +0200

    pinwheel : fix holes on large matrix, minor code cleanup

    there were still two holes in my 52x52 setup --> added "XL" size for bigger than 50x50 - achieves 18fps on 52x52

commit ecb861de561673618f5493ebb29fb716cbcf4f21
Author: Frank <[email protected]>
Date:   Tue May 14 10:36:50 2024 +0200

    pinwheel code cleanup

    reducing code duplication between sPC and gPC

commit 1d20f18d3f1e09de65ae4cc75e7dca437a9e56bf
Author: Brandon502 <[email protected]>
Date:   Mon May 13 17:43:31 2024 -0400

    Pinwheel bugfix

    Fixed getPixelColor.

commit 68f6b3452e6f68c13fbeee187dab097b2ba8c0fb
Author: Michael Bisbjerg <[email protected]>
Date:   Mon May 13 20:09:31 2024 +0200

    Initial implementation of the AHT10/AHT15/AHT20 sensors

commit 60075f6e8c18dcf96dc7a6caf6ed80f5bb805a52
Author: Michael Bisbjerg <[email protected]>
Date:   Mon May 13 20:22:31 2024 +0200

    Avoid storing the settings of bme280 globally

commit 1d7789f544540b5aa66099c2e54f4adaac09937a
Author: Frank <[email protected]>
Date:   Mon May 13 19:27:41 2024 +0200

    pinwheel bugfixing

    * setPixelColor: ensure that 0/0 is used
    * getPixelColor: accuracy improvements

    unfortunately, "scrolling" audioreactive effects are still not working properly - they end after 1/4 of the circle. Could be due to limited resolution of getPixelColor.

commit bd10a9aa26e21ddef1e900a65cac4383b2cbdd2f
Author: Michael Bisbjerg <[email protected]>
Date:   Mon May 13 18:35:02 2024 +0200

    Change BME280I2C to be reused between configs

commit 1ceeed38bc8a38d10ea7313e781513420daa56ad
Author: Blaz Kristan <[email protected]>
Date:   Mon May 13 14:30:30 2024 +0200

    Another fix for fix :rolleyes:

commit 2e1e917952df85dcb154700623aa7796cc6ae18e
Merge: 9e0b91ac ea83ec49
Author: Brandon502 <[email protected]>
Date:   Sun May 12 17:46:52 2024 -0400

    Merge branch '0_15' of https://github.com/Brandon502/WLED into 0_15

commit 9e0b91ac17f4ad84978be399d7c8f066a4508b85
Author: Brandon502 <[email protected]>
Date:   Sun May 12 17:46:42 2024 -0400

    Pinwheel changes.

    Jump distance for odd rays fixed. Removed holes on rectangular matrices.

commit ea83ec496b923b1d8e44bb3d5e46364abea5a65a
Author: Frank <[email protected]>
Date:   Sun May 12 23:05:58 2024 +0200

    pinwheel - parameter tuning to fix some holes

    fixing holes that appeared during testing
    * at 52x52 (big 296 -> 304)
    * at 24x32 (medium 192 -> 208)
    * at 12x16 (small 72 -> 82)

    ... there is still one hole at 14x16 ... well wtf

commit f26bb26ffad857e49b812843f006bfa5f74947be
Author: Frank <[email protected]>
Date:   Sun May 12 22:35:33 2024 +0200

    Update FX_fcn.cpp

    * minor cleanup, moved prevRay into setPixelColor
    * removed experimental code (too slow)
    * comments cleanup

commit 28348f919bb5bd78f8ce41fc613eeec363e38467
Merge: c84d4c63 04706cfa
Author: Frank <[email protected]>
Date:   Sun May 12 21:30:59 2024 +0200

    Merge branch '0_15' into pr/3961

commit c84d4c637d46fadfa09855fe68465f8db780f68a
Author: Brandon502 <[email protected]>
Date:   Sun May 12 11:52:31 2024 -0400

    Pinwheel Expand 1D Optimization

    Changed method for drawing odd numbered rays.

commit 04706cfa9c68c1855dbd6bbae04da7dc9d657ae5
Author: Blaz Kristan <[email protected]>
Date:   Sun May 12 16:34:07 2024 +0200

    JS fix & warning

commit 3078bea7cce95038bc354acd73caecf9ca7327d7
Author: Frank <[email protected]>
Date:   Sun May 12 13:29:04 2024 +0200

    Pinwheel optimization: do nor repaint "same" pixels in a line

    avoids back to back duplicates within the same line

commit c91e0fc9881d60901938050b99d67db4920bde3b
Merge: 9e468bd0 5183af4e
Author: Frank <[email protected]>
Date:   Sun May 12 13:25:46 2024 +0200

    Merge branch '0_15' into pr/3961

commit 5183af4e8aa70573ce3b0ee04ba079a2db0084be
Author: Blaž Kristan <[email protected]>
Date:   Sun May 12 11:30:57 2024 +0200

    Typo.

commit 1ff5cb0596d4a355a96570a296b5c7f58ba7cf92
Author: Blaž Kristan <[email protected]>
Date:   Sun May 12 11:12:13 2024 +0200

    Experimental parallel I2S support for ESP32
    - increased outputs to 17
    - increased max possible color order overrides
    - use WLED_USE_PARALLEL_I2S during compile

    WARNING: Do not set up more than 256 LEDs per output when using parallel I2S with NeoPixelBus less than 2.9.0

commit 522e5e795774657b8da980ddae727922b3d5679f
Merge: c016dede bc5aadff
Author: Blaž Kristan <[email protected]>
Date:   Sat May 11 21:11:26 2024 +0200

    Merge pull request #3964 from adamsthws/0_15_battery_usermod_init_improvement

    Update Usermod: Battery

commit 9e468bd059510c66bbb99e41ed4855193a9cc05c
Author: Brandon502 <[email protected]>
Date:   Sat May 11 13:57:21 2024 -0400

    Pinwheel Expand 1D Optimizations

    Added small pinwheel size. Adjusts medium and large values.

commit ecc9443677e1c69291138e8bf8f54d524614a144
Author: Frank <[email protected]>
Date:   Sat May 11 14:45:42 2024 +0200

    (0_14 branch only) adding compatibility for building with upstream arduinoFFT 2.xx

    support compilation with new arduinoFFT versions 2.x

commit 6b8d8bf735c3c4e3a04a2302c89c1f1895ea7a0b
Author: Adam Matthews <[email protected]>
Date:   Sat May 11 13:34:35 2024 +0100

    Update Battery usermod documentation

    Improved wiring, installation and calibration instructions.

    Example screenshots added.

    Minor grammar improvements.

    Heading visual consistency improved.

    Improved vertical separation between sections
    (separator lines added).

    Thankyou!

commit 43d024fe429c5f519fb50f80fe75c8d184c64aea
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 10 22:43:55 2024 +0200

    Make BME280 usermod i2c address changeable

commit c016dedea4c74d35d0ce36c35e1b6e96eb711932
Merge: 3682cd6a b9ca2cfe
Author: Blaž Kristan <[email protected]>
Date:   Sat May 11 07:42:09 2024 +0200

    Merge pull request #3965 from LordMike/bugfix/usermod_bme280

commit b9ca2cfe90f18b0d5ebfaa1361d281fb98d7f0dc
Author: Michael Bisbjerg <[email protected]>
Date:   Fri May 10 20:55:10 2024 +0200

    Fix missing conversions of bme280 values

    The BME280 usermod uses a multiply-round-divide approach to cap the temperature/humidity/pressure values to some number of decimals. But the divide-part was missing in a few instances.

commit d3492b5b6c38e6a8cb2136bc8d7654a4594b59df
Author: Brandon502 <[email protected]>
Date:   Fri May 10 16:06:37 2024 -0400

    Pinwheel Expand 1D Bug Fix

    Removed holes on 31x31 and 32x32 grids.

commit 3682cd6a5e92dd0fa88d0f660b464d906fd50c8b
Merge: b209b1e4 69da2f4b
Author: Blaž Kristan <[email protected]>
Date:   Fri May 10 21:44:40 2024 +0200

    Merge pull request #3913 from Aircoookie/tm1914

    Tm1914 chip support

commit b209b1e481715716825d6ad2b34f5abb924dee05
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 16:01:47 2024 +0200

    Peek on/off fix

commit 4afed48f58569394f1a71a74d2df26a0b8be7acd
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 15:59:11 2024 +0200

    Use libc trigonometric functions on ESP32 by default
    - use custom (space saving) functions on ESP8266

commit 6a18ce078e3b2f31404d3309b39985638d53fcf4
Author: Brandon502 <[email protected]>
Date:   Thu May 9 20:38:41 2024 -0400

    Pinwheel Expand1D changes

    cosf/sinf changed to cos_t/sin_t. int_fast32_t and int_fast_16_t changed to int.

commit bc5aadff7d73931f971b3d1ee534b7a2d4dc7f0a
Author: Adam Matthews <[email protected]>
Date:   Thu May 9 23:09:45 2024 +0100

    Update Usermod: Battery

    Issue:
    When taking the initial voltage reading after first powering on, voltage hasn't had chance to stabilize so the reading can be inaccurate, which in turn may incorrectly trigger the low-power preset. (Manifests when the user has selected a low read interval and/or is using a capacitor).

    Resolution:
    A non-blocking, fixed 10 second delay has been added to the initial voltage reading to give the voltage time to stabilize.

    This is a reworked version of the (now closed) PR here:
    https://github.com/Aircoookie/WLED/pull/3959

    - Rebased the update for 0_15.

    - Added a constant so the delay can be modified via my_config.h.

    - Small adjustments to make the PR compatible again after the recent restructuring in this PR: (https://github.com/Aircoookie/WLED/pull/3003).

    Thankyou!

commit de89b516dcb8522cd7578acf4b958a83fba140a9
Merge: 4dbe9a70 b88c300d
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 00:04:43 2024 +0200

    Merge branch '0_15' of https://github.com/aircoookie/WLED into 0_15

commit 4dbe9a701596d130ff34157c111abf93f0c29846
Author: Blaz Kristan <[email protected]>
Date:   Fri May 10 00:02:28 2024 +0200

    Antialiased line & circle

commit a320f164045c53b4b8454c9b25e792f64fae57ca
Author: Blaz Kristan <[email protected]>
Date:   Thu May 9 23:58:58 2024 +0200

    Real math fix

commit 21e4604424dda3cd8db9c44ed2c90ce3831cb80f
Author: Damian Schneider <[email protected]>
Date:   Thu May 9 21:35:12 2024 +0200

    added center GEQ back in, changed AR behaviour of spray a little

    center GEQ is a mix between the PS equalizer and vortex, tuned for AR. some more tuning may be needed, it can probably be extended and improved a little.

commit 3c5928f8b2792a9dfec18f7c3ff53a714ef1c869
Author: Damian Schneider <[email protected]>
Date:   Thu May 9 14:19:31 2024 +0200

    Added PS source option to emit more than one particle, addes AR to Blobs and Spray

commit da79b93387cb80873d5dc65cd864be866a4b70bf
Author: Brandon502 <[email protected]>
Date:   Tue May 7 18:04:29 2024 -0400

    Added Pinwheel Expand 1D Effect

commit b88c300d0467bd65dd9e58b3ae99977434f70fab
Author: Frank <[email protected]>
Date:   Thu Apr 18 12:57:29 2024 +0200

    audioreactive: workaround for ArduinoFFT bug 93

    This fix works around a problem that was solved in upstream ArduinoFFT 2.0.2

commit b12f20cc48e9e526583044754040382afd24c8a7
Author: Damian Schneider <[email protected]>
Date:   Tue May 7 21:54:02 2024 +0200

    - added WLED_DISABLE_PARTICLESYSTEM option & cleanup & bugfixes

    - cleanup / reformatting
    - fixed volcano movement
    - small bugfix for ESP32 (random() does not work, using random16() )

commit 4502d7ab8ca16bad9d5387de63fe308baa7a6737
Merge: 2458a85c b3206121
Author: Damian Schneider <[email protected]>
Date:   Tue May 7 21:39:29 2024 +0200

    Merge remote-tracking branch 'upstream/0_15' into FXparticleSystemSquash

commit 88372cd516f959db0033644479621f5221aef3b1
Author: Blaz Kristan <[email protected]>
Date:   Tue May 7 16:34:15 2024 +0200

    Brighter peek (ignore strip brightness)

commit b3206121cc63c625e92ff80e3f7d062055e7284d
Merge: 47e1cbda 5bccb5fc
Author: Blaž Kristan <[email protected]>
Date:   Tue May 7 07:35:46 2024 +0200

    Merge pull request #3942 from gaaat98/audioreactive-analog

    Enabled some audioreactive effects for single pixel strips/segments

commit 5bccb5fc422f4f680b6d3720db47c6bac2f11c1e
Author: gaaat98 <[email protected]>
Date:   Tue May 7 00:31:37 2024 +0200

    removed commented checks

commit 47e1cbdaff450ca7169adb1bbb66cef51be89b83
Merge: 2607c44f 52020cbe
Author: Blaž Kristan <[email protected]>
Date:   Mon May 6 20:41:00 2024 +0200

    Merge pull request #3003 from itCarl/usermod-battery-update2023

    Usermod Battery 🔋 Added Support for different battery types, Optimized file structure

commit 2458a85ca10b90890a665790901ae068fb1b48ed
Author: Damian Schneider <[email protected]>
Date:   Mon May 6 19:48:29 2024 +0200

    remove esp_random() as it is not supported on ESP8266

commit 52020cbe269e39dae3493e387bacbd35eefdc92b
Author: Maximilian Mewes <[email protected]>
Date:   Mon May 6 17:46:26 2024 +0200

    CP fix

commit d33651c25bfdc3ab4457c6e95496914fb924bad1
Author: Maximilian Mewes <[email protected]>
Date:   Mon May 6 17:45:02 2024 +0200

    Update setup method

commit 18e9f9c304482e3506e8982805b5df33a2bbf6c4
Author: Maximilian Mewes <[email protected]>
Date:   Mon May 6 17:39:40 2024 +0200

    Rename Battery classes

commit 2607c44fbb577cc549a23a5e0dbaf858c1fd2d80
Author: Frank <[email protected]>
Date:   Mon May 6 11:00:41 2024 +0200

    make objdump work

    Script update based on latest version from Tasmota
    * add support for all esp32 variants
    * add "-C" : Decode (demangle) low-level symbol names into user-level C++ names.

commit a8ad5b1087732753f935394b1057c9974264ba54
Author: Damian Schneider <[email protected]>
Date:   Sun May 5 22:09:47 2024 +0200

    Squashed commit of the following:

    commit ba337abb548c530042713d2d46373d36bfa7204a
    Merge: 0b45f665 3f9a6cae
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 21:57:32 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 0b45f6652a619cdb315d437fb8dd9c0038f4b792
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 21:56:19 2024 +0200

        bugfix, sprayEmit() would not return and get stuck

        - forgot default return value...

    commit 255815605608a7fcacc2aa5264aeefb95d8bb4bb
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 11:19:02 2024 +0200

        code cleanup, removed some unused stuff

    commit ac5399aa26f403dbb0c7ab05163c0bd9d0d60f6b
    Author: Damian Schneider <[email protected]>
    Date:   Sun May 5 08:18:43 2024 +0200

        Added advanced particle size control and new Blob FX

        - advanced size control allows for growing, shrinking, wobbling
        - render function updated to support asymmetric rendering
        - various code improvements and bugfixes
        - some FX parameter tuning
        - bugfix: removed sli() sei() calls in render function that caused random flickering on S3/C3 (may add that back in but only for ESP8266 to reduce fragmentation)
        - removed some debug / test stuff

    commit 3f9a6cae53889898486dae727bbacebc680d6ee0
    Author: Frank <[email protected]>
    Date:   Sat May 4 14:34:23 2024 +0200

        AR: fix for arduinoFFT 2.x API

        in contrast to previous 'dev' versions, the storage for windowWeighingFactors is now managed internally by the arduinoFFT object.

    commit cd5494fdd2040ba8d6858532b7348b082c345ebb
    Author: Frank <[email protected]>
    Date:   Sat May 4 13:36:56 2024 +0200

        AR pin config: SCK == 1 --> PDM microphone

    commit 5ab1b14d6b32b1aef17ee01b334205d42d98d832
    Merge: fa76431d 379f1813
    Author: Blaž Kristan <[email protected]>
    Date:   Fri May 3 23:25:36 2024 +0200

        Merge pull request #3946 from freakintoddles2/0_15

        Adds an API parameter to allow the user to skip to the next preset in a playlist at any time

    commit 379f1813620a56bb0b3136315feb647fb0c3d45d
    Author: Todd Meyer <[email protected]>
    Date:   Fri May 3 11:51:47 2024 -0700

        Further simplification

    commit dd19aa63d0e15693f0666ea1e33a370677b88450
    Author: Todd Meyer <[email protected]>
    Date:   Fri May 3 08:47:14 2024 -0700

        Forgot F[], added it

    commit 6df3b417a94899fd382708208ced9ab08845826c
    Author: Todd Meyer <[email protected]>
    Date:   Fri May 3 08:30:37 2024 -0700

        Updated based on more feedback

    commit fa76431dd673e5c1a24c75fe7d9348a93e3f22f5
    Author: Blaz Kristan <[email protected]>
    Date:   Fri May 3 16:08:20 2024 +0200

        Changelog update

    commit 6504fb68b6ba3fc49d18594df78812c6e153e9bc
    Author: Blaz Kristan <[email protected]>
    Date:   Fri May 3 15:46:16 2024 +0200

        Minor MQTT optimisation.

    commit 2ff49cf657a322d17ec4fab854d9834ae10a5566
    Author: Blaz Kristan <[email protected]>
    Date:   Fri May 3 15:45:15 2024 +0200

        Fix for #3952
        - included IR optimisations & code rearrangement

    commit fa1aa1fe805aaf5f91bfe6b8f7d237e494ef643c
    Merge: 85b95a29 22f6128b
    Author: Blaž Kristan <[email protected]>
    Date:   Fri May 3 09:56:14 2024 +0200

        Merge pull request #3944 from paspiz85/pas4

        Using brightness in analog clock overlay

    commit 85b95a2940b5c17bf3d37b53ae945bc121f3b1c1
    Merge: 4df936a4 736a8b1b
    Author: Blaž Kristan <[email protected]>
    Date:   Fri May 3 09:53:00 2024 +0200

        Merge pull request #3945 from w00000dy/Webpage-shortcuts

        Add Webpage shortcuts and Fix resizing bug

    commit 5e38039c4dd630d7b4c6841deb5e0b04aa07f573
    Author: Todd Meyer <[email protected]>
    Date:   Thu May 2 14:36:18 2024 -0700

        Updated based on more feedback

    commit 4df936a437a2e643fca724885b336b6bb3034bbd
    Author: Blaz Kristan <[email protected]>
    Date:   Thu May 2 10:33:10 2024 +0200

        Fix for unfortunate prior CRLF coversion.

    commit 736a8b1b80102d2f9b32b8cc88ce5f409eeca116
    Author: Blaz Kristan <[email protected]>
    Date:   Thu May 2 10:31:50 2024 +0200

        Fix for rotating tablet into PC mode.

    commit 22f6128bc47c7ee7349b4f039758bf46962b0eba
    Author: Pasquale Pizzuti <[email protected]>
    Date:   Thu May 2 09:04:07 2024 +0200

        using global brightness

    commit db475b69988567f19c3969d1808c96918924f55e
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:09:17 2024 -0700

        Update playlist.cpp

    commit 6daf7f6322eacdc0ff83756b4da735d02a269fa9
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:07:52 2024 -0700

        Update wled.cpp

        reworked based on PR feedback

    commit 16086c09615d7e8c2e2050c650b9af00b875062c
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:05:26 2024 -0700

        Update wled.h

        reworked based on feedback from original PR

    commit e88c81ad0d6a1ff8c18667facd2b7b326ede2b74
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:04:02 2024 -0700

        Update set.cpp

        reworked based on feedback

    commit a2b9aed40df5bb55eb4f53db72c6871c72c9b30d
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:03:16 2024 -0700

        Update playlist.cpp

        reworked approach based on feedback

    commit caa4fe1ec4f814f89fa2c77ef7405b0935b846ec
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:02:27 2024 -0700

        Update json.cpp

        reworked approach based on feedback

    commit 25fb878e5434dd47b888bd3e5a46176c369ff8c4
    Author: freakintoddles2 <[email protected]>
    Date:   Wed May 1 10:01:30 2024 -0700

        Update fcn_declare.h

        reworked approach based on feedback

    commit 77167a28546443c1e8be84f0713f40b227a64285
    Author: Damian Schneider <[email protected]>
    Date:   Wed May 1 13:53:59 2024 +0200

        Found and fixed crashes, it was wrongly assigned pointers

    commit 3527144b94b61ba46134e635dd05294c14980b87
    Author: Damian Schneider <[email protected]>
    Date:   Wed May 1 12:08:03 2024 +0200

        Fixed another memory / pointer bug, but there is still one left...

        -also some minor fixes

    commit 06ae14c0d6766239b7776d6f8cadd37c5865eaf7
    Author: Damian Schneider <[email protected]>
    Date:   Wed May 1 07:07:48 2024 +0200

        added 'perpetual' flag to particles

    commit a1d6ffadad852449a825431ad0bb8bba2f7f448d
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:49:52 2024 -0700

        Update json.cpp

        adds support for np boolean parameter to skip to next preset

    commit 3b89814b6935261d65f95059690591f51a0eab5f
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:33:30 2024 -0700

        Update set.cpp

        added new NP command to API to allow user to skip to next preset in a playlist. Example use is win&NP in a preset.

    commit 071e0be445ed012ff9ab1f72347440684eed678f
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:23:43 2024 -0700

        Update fcn_declare.h

        Updated to add the optional skipNext bool to handlePlaylist() which allows people to skip to the next preset when desired

    commit bed364d75e8ecc0f65c43bfb1db4d9a089072158
    Author: freakintoddles2 <[email protected]>
    Date:   Tue Apr 30 16:21:40 2024 -0700

        Update playlist.cpp

        Updated to allow a user to optionally skip to the next preset in the playlist anytime they desire.

    commit d2984e9e160f649e0d900761d76240740201a4b6
    Author: Woody <[email protected]>
    Date:   Tue Apr 30 18:57:53 2024 +0200

        add Webpage shortcuts, resolves #2362

    commit fd9570e7826b53a0c59440179bd340f195d0bb6a
    Author: Pasquale Pizzuti <[email protected]>
    Date:   Tue Apr 30 17:52:35 2024 +0200

        using color_fade

    commit ff10130176ff06a81ed09113b6669703583a3c71
    Author: Woody <[email protected]>
    Date:   Tue Apr 30 16:53:47 2024 +0200

        Fix resizing bug
        The bug was that when resizing the window, it always jumped to the Colors tab instead of staying on the currently selected tab.

    commit c7d292a7165e81e0c0429b4f94e3e401b4e3dad0
    Author: Pasquale Pizzuti <[email protected]>
    Date:   Tue Apr 30 14:09:12 2024 +0200

        using brightness in analog clock overlay

    commit 5472f76a3dd08e0e76eb52f17160e639fb43b6ca
    Merge: a6bf5b60 9f99a189
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 30 07:50:44 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit a6bf5b603d9f7e5f4184f01345047da95a0acd1f
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 30 07:41:04 2024 +0200

        added walls to ghostride, fixed some bugs

    commit 33ede416e5e430e70e49cc037f338e8238111492
    Author: Damian Schneider <[email protected]>
    Date:   Mon Apr 29 19:46:19 2024 +0200

        Replaced Ghost Rider FX with PS version

        - new FX is kept close to original animation but added more user settings

    commit 2e0cb3a49fb9dbfa3619c6bbcf31c01a8cd8585d
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 28 19:29:57 2024 +0200

        Fixed some nasty memory bugs, fixed some FX parameters

        - fixed memory alignment bug in PS pointer assignment by making sure only multiples of 4 are allowed for particles and sources
        - added saturation back to particle struct, as it was aligned to 10 bytes anyway.
        - fixed a bug where a null pointer could be accessed
        - fixed rendering out of frame particles if buffer allocation failed
        - improvements on ESP8266

    commit 3eb94ebffa92a0a3f9823537028fe218ce4ddd15
    Merge: 53607d6c 8110259d
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 28 11:30:44 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 53607d6cdb0953af3c330b3d4da74d33eeb949a2
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 28 11:25:57 2024 +0200

        added individual size particle rendering plus some fixes

        - advanced particles can now be rendered to individual sizes. It is computationally intensive but it works well for up to 15 very large particles and more smaller ones
        - added collision handling for individual sizes (walls and collisions)
        - fixed bugs in particlebox
        - fixed fire not transitioning properly (flickering) when frame skip is active
        - removed 'wraparound' function as it can easily be done by casting to an unsigned and then modulo
        - fixed ballpit particles wandering left and right very fast if wrapX is set

    commit 7abc440f90a18538ac277e062c86c7dca4d13615
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 27 13:40:38 2024 +0200

        removed zero inits

        - removed zero initialisations in FX, segment.data is set to zero by alloc function

    commit 54e94ddb91554302d7b5717a01ac99f3b7089970
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 27 13:18:30 2024 +0200

        Bugfixes, improvements and added wall roughness setting

        - fixed bug in PS fuzzy noise which made it asymmetric for some reason, seems to work better now
        - added particle size option to attractor but had to remove speed setting (now fixed emit speed)
        - some parameter tuning of FX
        - improvements to code size in render function
        - added smear option to blurring (not tested much, may be buggy without smear)
        - speed improvement to caldForce_dv, added zero checking.

    commit a22466a852f4aeedfa7a77994c67c0ff016cad37
    Merge: 3386a844 004b1c3e
    Author: Damian Schneider <[email protected]>
    Date:   Fri Apr 26 08:56:07 2024 +0200

        Merge branch 'FXparticleSystem' of https://github.com/DedeHai/WLED into FXparticleSystem

    commit 3386a844eb156a1f82c2d25e67360b74241afbe2
    Author: Damian Schneider <[email protected]>
    Date:   Fri Apr 26 08:55:17 2024 +0200

        added local render blurring, boosting FPS, work in progress

        - changed fast-add function to use pointers
        - added fast-scaling function
        - added simple (but fast) 2D blurring function
        test shows that local blurring of full frame is almost double the speed (40FPS now is 80FPS).
        lots of comments still there

    commit 004b1c3eaa0522ce58219a8d682c35eb2dd399f5
    Merge: e43f3bd5 e83d3cb4
    Author: Damian Schneider <[email protected]>
    Date:   Thu Apr 25 15:50:07 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit e43f3bd5c612379c7004db005cd90e688f2036de
    Author: Damian Schneider <[email protected]>
    Date:   Wed Apr 24 17:33:02 2024 +0200

        bugfix in wrap function and firwork FX

    commit 2e7fbc0310321f223a808a02a2c739adcc658d43
    Author: Damian Schneider <[email protected]>
    Date:   Wed Apr 24 06:39:30 2024 +0200

        debugging going on

    commit 7b68946c023f64dc1dd0da996dfa573b2e303864
    Author: Damian Schneider <[email protected]>
    Date:   Mon Apr 22 18:52:13 2024 +0200

        in the middle of fixing FX to use new PS functions

    commit e01781407734db9c12332b8ee4c37c3977660298
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 20 15:34:16 2024 +0200

        added more tests, non compiling at the moment

    commit 856527b447d19ae4596b0b40ba92d98c87d92cc5
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 20 12:10:24 2024 +0200

        work in progress, added test function to increase particle size, also added wobbling test

    commit 4146ff4233af5b2c48a2f08bc5c4811fbe2a5782
    Merge: 50489f73 d126611e
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 16 19:32:14 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 50489f7364f4f312a940c368dce5fda6316366a0
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 16 19:29:05 2024 +0200

        work in progress, added motion blur and line attracto (non working)

    commit f7337b9b71a792251e65e73459780e5fa733033f
    Merge: 5e2dca35 d18f078b
    Author: Damian Schneider <[email protected]>
    Date:   Sun Apr 7 13:39:23 2024 +0200

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 5e2dca35772dd8376b2d015ff5973897366ab1a3
    Author: Damian Schneider <[email protected]>
    Date:   Sat Apr 6 07:15:51 2024 +0200

        Fixed Speed limit

        limiting speed was incorrect, leading to overflows. fixed this.
        also fixed bugs in GEQ, removed some debug stuff, added FPS limit to fire (just en experiment)

    commit 0a251aefbe7f50bf071a1ee8e11b1640c163d8d9
    Author: Damian Schneider <[email protected]>
    Date:   Thu Apr 4 17:51:32 2024 +0200

        another huge update, many improvements, fine-tune collision, fire and some other FX

        -removed classic fire render as palette now looks much better
        -tweaked fire parameters to more awesome
        -added (optional) turbulence to fire using perlin-noise
        -ported spray FX to use PS-class
        -now definitely fixed asymmetrical collision issue: do not use bitshifts on negative numbers!
        -changed piling behaviour of particles, full rework. looks way more natural now and works much better
        -changed bouncing behavour: they now bounce at full diameter, making them stay fully in frame when laying on the floor
        -replaced all relevant bitshifts with divisions for higher accuracy throughout the PS
        -added new modes to particle box FX
        -changed a lot of FX parameters (finetuning)
        -changed all config strings to proper settings (matrix only)
        -fixed newly introduced bugs
        -added speedup/slowdown to vortex FX (aka candy, aka rotating sprays)
        -some renaming
        -fixed bugs… lots of bugs
        -merged rendering functions, removed obsolete stuff

    commit 32343eaa757de7656cf0814e9a0f16eabb3feb7d
    Author: Damian Schneider <[email protected]>
    Date:   Tue Apr 2 20:26:24 2024 +0200

        updated fire, added some functions to PS, ported attractor FX

        - added turbulance to fire (after hours of fine-tuning) it now looks even more awesome
        - added attractor animation back in and improved it with more functionality
        - fixed the attractor function in the PS
        - renamed FX: 'candy' is now called 'vortex'
        - added new force function to apply a force immediately (and handle the timing in the FX)
        - added update function to PS for size update to handle dynamic segment size change
        - made waterfall width dynamic on segment width
        - removed some debug stuff
        - added #defines for maximum number of particles/sprays
        - updated fire parameter to make it look better on ESP8266
        - some little bugfixes

    commit 59f2b9ae98b77b345984c097e79f352ded1abcff
    Author: Damian Schneider <[email protected]>
    Date:   Mon Apr 1 19:04:28 2024 +0200

        more bugfixes, some animation tuning, added volcano back in

        - fixed animation transitions with proper pointer setting in each FX call
        - added color by age setting to particle system
        - maybe fixed collision having a tendency to go to the left
        - fixed bugs in fireworks FX
        - added fire spread width as a slider
        - changed max number of particles and sprays based on some ram calculations
        - some other random fixes

    commit 136f40ff62fb7f0bf4577cbc769f90a741b17c00
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 31 17:42:48 2024 +0200

        More Bugfixes, more converted FX

    commit 5f824c34b3cfdee2703783c06604f041125386d8
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 31 09:50:46 2024 +0200

        many (many!) bugfixes, added fire FX back in (and improved it a lot) added local renderbuffer for huge speed boost

        -lots of bugfixes in Particle system
        -added local rendering buffer (renders to buffer in heap)
        -added fast and accurate color-add function
        -bugfixes in render function
        -added improved 'sticky' particles in collision (unfinished business)
        -added ballpit animation back
        -lots of tweaks to fire FX and fire rendering functions, looks even better now (still unfinished)
        -added palette render option to fire

        still many debug print outputs around, needs cleanup at one point

    commit 03967a95eaebec20bf1b30bcfdb8346e138ba954
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 29 20:25:13 2024 +0100

        put particle system in a class. work in progress.

        another huge update to the particle system.
        went through the whole code, rewrote many of the functions. many improvements over the previous code. fixed many bugs (and even an ancient one in rendering function). spent many hours optimizing the code for speed and usability.
        still a work in progress, debugging is ongoing. more updates to come.

    commit 162bdaa63d24d75831010b428bc6abc6aec8eb56
    Merge: c6d5d3ef 85a51e6c
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 24 13:07:57 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit c6d5d3efa254387702e589df4f413987f106da0f
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 24 12:02:55 2024 +0100

        updated PS Fireworks with many changes and fine-tuning of parameters

        -removed spiral explosions
        -added more versatility to circular explosions
        -removed user selectable amount of rockets
        -tuned explosion size of circular explosions to match random explosions (more or less, may need improvement)
        -changed order of sliders in volcano animation

    commit 500b84724a470f0140fbd74597eb1a09b958f7d0
    Author: Damian Schneider <[email protected]>
    Date:   Sat Mar 23 20:11:48 2024 +0100

        bugfix

    commit 35c21572fdf3b1f2e2aa2fc699e22e64f418f6d9
    Author: Damian Schneider <[email protected]>
    Date:   Sat Mar 23 20:11:23 2024 +0100

        Big update: lots of little fixes and big speed boost on fire animation

        -fixed fire burning more on the left side
        -fixed crash in particle attractor
        -added many improvements for ESP8266
        -improved particle rendering efficiency
        -efficiency improvements in general
        -changed the way fire is rendered, now more than 2x faster
        -re-tuned fire to new rendering, also seperately tuned it for ESP8266
        -changed all random8() to random16() as it runs faster on ESPs
        -some reformating
        -some renaming of effect stuff
        -fine tuning on falling particle effect
        -improvements to collision handling (faster and better)
        -added a (temporary) function for speed tests, will be removed again

    commit 306a850a11c3e3272d2455e3ba2c166dc77e889a
    Author: Damian Schneider <[email protected]>
    Date:   Thu Mar 21 22:42:45 2024 +0100

        slight speed improvements in fire, like 1-2FPS

    commit 913e91025a7d8dcd05496bef0ea34398ffd146f6
    Author: Damian Schneider <[email protected]>
    Date:   Thu Mar 21 15:55:40 2024 +0100

        Particle FX Rename, default parameter tuning, bugfix

        -Now shorter names, 'PS' in front to filter the list
        -Tuned default parameters to make them look better by default
        -Bugfix in particle system (removed duplicate application of velocity)
        -reduced PS fire RAM usage (less particles, less base flames, no noticeable difference)
        -some variable renaming

    commit 7026159da3e87c73952d129a4c923c7f109f862d
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 19 20:17:13 2024 +0100

        Cleanup & Bugfixes plus major improvements for ESP8266

        -added particle reductions for ESP8266 for all FX
        -Removed collisions from Particle Perlin Noise FX, slows things down and does not contribute to a better effect experience
        -lots of optimizations for ESP8266, all FX now work (at least on 160MHz but still slow)
        -Some bugfixes
        -removed unused variables to make compiler happy

    commit ff9d2ebd44544e0883f4c765cc10955bf2b30db5
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 17 21:59:42 2024 +0100

        FX update

        - changed firework exhaust to low saturation
        - updated rotating particle spray animation

    commit a56d888f8d7c3e7253fb1427dff9ad12039410f0
    Author: Damian Schneider <[email protected]>
    Date:   Wed Mar 20 19:39:26 2024 +0100

        added rotating GEQ, work in progress

        -animation works but sliders are too sensitive. need to adjust the ranges

    commit 79917762291bcde032a01d0fea3c738e76acd483
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 17 15:41:46 2024 +0100

        GEQ  FX parameter tuning

    commit ecc64ae03dcf7f619218569145b169eea37d00a8
    Author: Damian Schneider <[email protected]>
    Date:   Sat Mar 16 11:43:22 2024 +0100

        Particle GEQ fixes, it now actually works

    commit 87adbedc71388d0dc035cee4f59a2a7f863ee25e
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 15 20:52:47 2024 +0100

        added particle GEQ effect (untested)

    commit bdfb1a9d22a446764bf0619efb669c3cec735767
    Merge: 3678aa9d 7b366d49
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 21:48:34 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 3678aa9d9f1b32a099b9fe7503021a9e31d27b69
    Merge: ac092181 88b30e7e
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 21:47:28 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit ac0921818542e74f5ded49f56d31df9299aaf834
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 20:45:52 2024 +0100

        cleanup

        removed / added comments

    commit 4930cda17d8518b2c3ac0669888820d4a04f4a8a
    Author: Damian Schneider <[email protected]>
    Date:   Tue Mar 12 20:17:02 2024 +0100

        cleanup session

        -removed particle box 'rocking boat' (buggy) and replaced with random sloshing.
        -removed comments
        -changed some variables into 32bit for speed boost on ESP32
        -added link to KB at the top of FX.cpp

    commit 9c6d6f19bea04d274b9bc1a7ecf39f2401cac1cf
    Author: Damian Schneider <[email protected]>
    Date:   Sun Mar 10 22:35:13 2024 +0100

        cleanup

        -removed wrap_update function, now integrated into move_update
        -added more 'out of bounds' checking in fire functions, may speed it up a little

    commit b99a62feff45e4769ba579ceb0f7474b299dfeb3
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 8 19:23:52 2024 +0100

        removed comments, added comments

    commit 66ac5ac81b6ee25a39482bbe31e9199e8e51ec5a
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 8 18:14:59 2024 +0100

        Revert "fixed touch buttons for ESP32 S2 and S3"

        This reverts commit 09041551862361cd8c7444ca25403f5f96a9077b.

    commit 62a975d687841189e4ef24b5b154f3a3a7fc6779
    Author: Damian Schneider <[email protected]>
    Date:   Fri Mar 8 18:14:52 2024 +0100

        Revert "some tuning for touch buttons on S2/S3"

        This reverts commit d21ad8e7d1651a96f879d43ef1146a72a6ed8271.

    commit d01a1511cb4f9d2400541e2e8e0d0a8f20cfbe8c
    Author: Damian Schneider <[email protected]>
    Date:   Mon Feb 26 18:20:07 2024 +0100

        add todo

    commit 6740cb69bc61caabdad40451b47744738aced706
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 22 19:16:42 2024 +0100

        chaned rotating spray default parameters

    commit 1a7ef9b0ca7063abd42846b3346d54e5947302d9
    Author: Damian Schneider <[email protected]>
    Date:   Wed Feb 21 20:26:17 2024 +0100

        updated rotating particle spray with more user options

    commit d21ad8e7d1651a96f879d43ef1146a72a6ed8271
    Author: Damian Schneider <[email protected]>
    Date:   Wed Feb 21 18:38:34 2024 +0100

        some tuning for touch buttons on S2/S3

        now better fits the default threshold value of 32

    commit 09041551862361cd8c7444ca25403f5f96a9077b
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 18 15:52:36 2024 +0100

        fixed touch buttons for ESP32 S2 and S3

        touch is implemented differently on S2 and S3, these changes make touch buttons work on S2 and S3

    commit a7759702a761eb2158e2d6a08bb31c94cf3890fd
    Merge: 241b0808 21173dc9
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 18 11:29:00 2024 +0100

        Merge remote-tracking branch 'upstream/0_15' into FXparticleSystem

    commit 241b08082e98942fae2290658ff02eb3c4247828
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 16:50:16 2024 +0100

        added particle WrapUpdate function, added spray FX, some bugfixes

    commit 11a84c1b2a142d3debaaeb35335079454830a2ec
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 14:23:05 2024 +0100

        removed TODOs

    commit 74ed705b9cb465ba573b6bce35ecaabfd64eeb0d
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 14:19:56 2024 +0100

        updated particle attractor animation parameters and added more user options to perlin noise

    commit 32979e59010831b5011f398dff10777c04c82f2c
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 17 12:50:20 2024 +0100

        lots of bugfixes

    commit b96ad99e0a99c393e78b672659577a58b9cbe1d7
    Author: Damian Schneider <[email protected]>
    Date:   Tue Feb 13 17:00:42 2024 +0100

        changed particle pile demo into waterfall plus some tweaks

    commit 46aef896b252568c3bd2ea2a40a4d6e89fdbef51
    Author: Damian Schneider <[email protected]>
    Date:   Tue Feb 13 06:47:35 2024 +0100

        Bugfix in particle push, now piling is working again

        particle pile-up did not work correctly, now fixed

    commit dc5c58e98a0d8ec5dd753b8d8c3c0f9f444d90db
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 18:25:37 2024 +0100

        Fixed some bugs in particle system, runs much smoother now

        also tweaked some of the FX

    commit 7c49f886419c0232118c6abc4dcdc70309f94bf9
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 13:32:23 2024 +0100

        removed option for fastcolor add

        it made very little difference in performance, but for ESP8266 it may matter so it is set permanently there. graphically the difference is also very small (sometimes a particle gets brighter or less saturated)

    commit da94d31990a4a7284ed2c7c99fc7eb98023c27b6
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 11:32:07 2024 +0100

        Improved collision handling (faster, less oscillations), changed variables to 32bit for faster calculation

        32bit variables are faster on ESP32, so use them whenever a variable is used a lot, it saves one instruction per access.

    commit 8fe044ee69161b4854cb71a69129bc07155ada3e
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 08:14:34 2024 +0100

        added fix for piling oscillations

        untested, need to verify it works

    commit f1ffbe0cf77866df42482806f85305a15d4ccefd
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 10 07:35:45 2024 +0100

        improved collision efficiency

        improved efficiency for stackup (pushback), added code to correctly determine direction if particles meed (probably overkill but now its there)

    commit e945faf86e578a26c14130eec94dc43e170eb8ac
    Author: Damian Schneider <[email protected]>
    Date:   Fri Feb 9 20:30:26 2024 +0100

        collision detection is now a function plus some improvements & fixes

    commit d00126bce066521cfeb62be7ef3868db520d4250
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 22:34:36 2024 +0100

        added option to use fast color add, may improve performance a little

        also fixed a bug in fire animation

    commit 7d6965d14c3fcfcc6737ae98cf87bed1c1cfe195
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 21:50:51 2024 +0100

        bugfixes in impact animation

    commit 18c79cedda9a3eaa20b01fd209b2dd3680203c14
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 21:19:30 2024 +0100

        Added saturation to be set for each particle individually

        at the expense of more ram usage, animations now have more options for color control (already used in fireworks now)

    commit a147a4bd97483aaf08b2197f2b740b686a6f8506
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 20:40:21 2024 +0100

        added angle emitter, added fireworks effect using it

    commit 7bc59c6622997013232f9bb6a738db2d64c7aafe
    Merge: 7bcfcb44 6dcd9596
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 18:34:16 2024 +0100

        Merge branch '0_15' into FXparticleSystem

    commit 7bcfcb445af6b617229c94d7fd058521ea472837
    Author: Damian Schneider <[email protected]>
    Date:   Thu Feb 8 18:33:00 2024 +0100

        bugfixes, attracot now works

        still unknown, why more than 256 particles are needed in memory allocation to not make it crash, but it works for now

    commit cc98036e3f096d1da0c59e5cce3d1ff96c990fe9
    Author: Damian Schneider <[email protected]>
    Date:   Wed Feb 7 19:48:54 2024 +0100

        added particle attractor, added two new FX but still buggy

        particle attractor animation does not work, somthing wrong with pointer allocation, it worked with static variables

    commit 820d8dd3dca5f1acb6111bb38c8092640256bff2
    Author: Damian Schneider <[email protected]>
    Date:   Tue Feb 6 12:44:48 2024 +0100

        added preliminary functions and FX

    commit 3b8221935c593d0179c5ad629939250835bd6280
    Merge: a7ef020c 00038453
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 12:46:26 2024 +0100

        Merge branch '0_15' into FXparticleSystem

    commit a7ef020cc96898d5e858895e39662e63f9c8b948
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 12:40:37 2024 +0100

        updated particle box and firework effects

        particle box now is more random in random mode (still a work in progress)
        firework is now more configurable by sliders

    commit 520a6d54c618b4c22acc8d2084010b6558ac01ec
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:39:01 2024 +0100

        Update platformio.ini

    commit 6165083f160095e73410bcc3aedce7513cb3b094
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:20:42 2024 +0100

        added latest version of functions

        this somehow also got lost from an earlier commit

    commit c42e759c5d8ccc7a1b793b5d9f6de9a793d1ffdd
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:17:08 2024 +0100

        reformat

    commit 3e8d0790766790f32b40748026c846960739ffa6
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:15:58 2024 +0100

        added collision handling back in

        update from another commit that got lost

    commit c320b0ad80edb72ab09adcc22569f398f9015d86
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:13:54 2024 +0100

        cleanup

    commit 2db3123d9c6e8f85c19cb6736c3a5fb2d4364988
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:04:04 2024 +0100

        removed comments

    commit 45f26169043209d7f9cf7dfdc6bb142fa7ba21bd
    Author: Damian Schneider <[email protected]>
    Date:   Sun Feb 4 10:02:46 2024 +0100

        added particle FX animations

        not yet final version but working

    commit 538ffdbf46abf42e75c261d1a021d0ecf1426543
    Author: Damian Schneider <[email protected]>
    Date:   Sat Feb 3 10:45:34 2024 +0100

        Adding Particle System functions

        Basic Particle system defining particle structs, some emitters and particle to LED rendering

commit a6e536189c5bc0d3e18b026ff6fcd1682d1cdb8b
Author: Frank <[email protected]>
Date:   Sun May 5 21:56:01 2024 +0200

    output_bin.py : fix for mapfile copy

    The build script was not looking into the right place, so there was never a .map file dropped into build_output/map/

    Builds with the newer arduino-esp32 v2.0.x framework actually generate a .map file that is placed directly next to firmware.bin

commit 3f9a6cae53889898486dae727bbacebc680d6ee0
Author: Frank <[email protected]>
Date:   Sat May 4 14:34:23 2024 +0200

    AR: fix for arduinoFFT 2.x API

    in contrast to previous 'dev' versions, the storage for windowWeighingFactors is now managed internally by the arduinoFFT object.

commit cd5494fdd2040ba8d6858532b7348b082c345ebb
Author: Frank <[email protected]>
Date:   Sat May 4 13:36:56 2024 +0200

    AR pin config: SCK == 1 --> PDM microphone

commit 5ab1b14d6b32b1aef17ee01b334205d42d98d832
Merge: fa76431d 379f1813
Author: Blaž Kristan <[email protected]>
Date:   Fri May 3 23:25:36 2024 +0200

    Merge pull request #3946 from freakintoddles2/0_15

    Adds an API parameter to allow the user to skip to the next preset in a playlist at any time

commit 379f1813620a56bb0b3136315feb647fb0c3d45d
Author: Todd Meyer <[email protected]>
Date:   Fri May 3 11:51:47 2024 -0700

    Further simplification

commit dd19aa63d0e15693f0666ea1e33a370677b88450
Author: Todd Meyer <[email protected]>
Date:   Fri May 3 08:47:14 2024 -0700

    Forgot F[], added it

commit 6df3b417a94899fd382708208ced9ab08845826c
Author: Todd Meyer <[email protected]>
Date:   Fri May 3 08:30:37 2024 -0700

    Updated based on more feedback

commit fa76431dd673e5c1a24c75fe7d9348a93e3f22f5
Author: Blaz Kristan <[email protected]>
Date:   Fri May 3 16:08:20 2024 +0200

    Changelog update

commit 6504fb68b6ba3fc49d18594df78812c6e153e9bc
Author: Blaz Kristan <[email protected]>
Date:   Fri May 3 15:46:16 2024 +0200

    Minor MQTT optimisation.

commit 2ff49cf657a322d17ec4fab854d9834ae10a5566
Author: Blaz Kristan <[email protected]>
Date:   Fri May 3 15:45:15 2024 +0200

    Fix for #3952
    - included IR optimisations & code rearrangement

commit fa1aa1fe805aaf5f91bfe6b8f7d237e494ef643c
Merge: 85b95a29 22f6128b
Author: Blaž Kristan <[email protected]>
Date:   Fri May 3 09:56:14 2024 +0200

    Merge pull request #3944 from paspiz85/pas4

    Using brightness in analog clock overlay

commit 85b95a2940b5c17bf3d37b53ae945bc121f3b1c1
Merge: 4df936a4 736a8b1b
Author: Blaž Kristan <[email protected]>
Date:   Fri May 3 09:53:00 2024 +0200

    Merge pull request #3945 from w00000dy/Webpage-shortcuts

    Add Webpage shortcuts and Fix resizing bug

commit 5e38039c4dd630d7b4c6841deb5e0b04aa07f573
Author: Todd Meyer <[email protected]>
Date:   Thu May 2 14:36:18 2024 -0700

    Updated based on more feedback

commit 4df936a437a2e643fca724885b336b6bb3034bbd
Author: Blaz Kristan <[email protected]>
Date:   Thu May 2 10:33:10 2024 +0200

    Fix for unfortunate prior CRLF coversion.

commit 736a8b1b80102d2f9b32b8cc88ce5f409eeca116
Author: Blaz Kristan <[email protected]>
Date:   Thu May 2 10:31:50 2024 +0200

    Fix for rotating tablet into PC mode.

commit 22f6128bc47c7ee7349b4f039758bf46962b0eba
Author: Pasquale Pizzuti <[email protected]>
Date:   Thu May 2 09:04:07 2024 +0200

    using global brightness

commit db475b69988567f19c3969d1808c96918924f55e
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:09:17 2024 -0700

    Update playlist.cpp

commit 6daf7f6322eacdc0ff83756b4da735d02a269fa9
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:07:52 2024 -0700

    Update wled.cpp

    reworked based on PR feedback

commit 16086c09615d7e8c2e2050c650b9af00b875062c
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:05:26 2024 -0700

    Update wled.h

    reworked based on feedback from original PR

commit e88c81ad0d6a1ff8c18667facd2b7b326ede2b74
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:04:02 2024 -0700

    Update set.cpp

    reworked based on feedback

commit a2b9aed40df5bb55eb4f53db72c6871c72c9b30d
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:03:16 2024 -0700

    Update playlist.cpp

    reworked approach based on feedback

commit caa4fe1ec4f814f89fa2c77ef7405b0935b846ec
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:02:27 2024 -0700

    Update json.cpp

    reworked approach based on feedback

commit 25fb878e5434dd47b888bd3e5a46176c369ff8c4
Author: freakintoddles2 <[email protected]>
Date:   Wed May 1 10:01:30 2024 -0700

    Update fcn_declare.h

    reworked approach based on feedback

commit 5f13fc3c623864551a34f9926317b8e50ac0a73f
Merge: d01542d0 9f99a189
Author: Damian Schneider <[email protected]>
Date:   Wed May 1 14:11:42 2024 +0200

    Merge remote-tracking branch 'upstream/0_15' into FXparticleSystemSquash

commit d01542d0adfd3643d5aecc795316d5f64ac515db
Author: Damian Schneider <[email protected]>
Date:   Wed May 1 14:10:36 2024 +0200

    major bugfix, hopefully resolves all crashes

    - uncought out of bounds memory access in rendering and a bug in pointer assignment caused many hard to track down crashes. should be fixed now.
    - some minor fixes as well

commit a1d6ffadad852449a825431ad0bb8bba2f7f448d
Author: freakintoddles2 <[email protected]>
Date:   Tue Apr 30 16:49:52 2024 -0700

    Update json.cpp

    adds support for np boolean parameter to skip to next preset

commit 3b89814b6935261d65f95059690591f51a0eab5f
Author: freakintoddles2 <[email protected]>
Date:   Tue Apr 30 16:33:30 2024 -0700

    Update set.cpp

    added new NP command to API to allow user to skip to next preset…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants