Commit Graph

5462 Commits

Author SHA1 Message Date
Frank
1f14673f43 workaround for "cannot read properties of undefined. reading 'split'
hmpf ... looks like somewhere deep in WLED, the FX name string gets limited to 127 chars....
2024-07-16 16:08:08 +02:00
Frank
e3b4a08393 soft light option
* bugfix for Borders (did not work with <16 bands)

* new option for soft light: when checked, the left & right edges of top lights are drawn with anti-aliasing on. Costs us 1-2 fps, so I made it optional.
2024-07-16 16:03:19 +02:00
Frank
96584c6c70 better rounding 2024-07-16 15:13:05 +02:00
Frank
e3d27de395 better handling of perspective
drawLine parameter "depth" shortens a line by a fraction - useful for VP perspective (vanishing point)
2024-07-16 13:27:56 +02:00
Frank
6565e716ab GEQ speedup
use drawLine() to draw a complete bar at once. Only possible if _not_ doing colored bars.
2024-07-15 18:14:30 +02:00
Frank
961040849e speedup for pinwheel mapping
fast sPC() in pinwheel mapping -> ~10% speedup
2024-07-15 18:06:25 +02:00
Troy
98c15d7ec0 Borders checkbox 2024-07-15 08:18:42 -04:00
Troy
54f9d4ca6d Borders checkbox for @netmindz
Netmindz likes the borders. Now a check-box to enable.
2024-07-15 08:17:00 -04:00
Frank
5401328b6e loop optimizations
* made cols/rows integer, to avoid that "cols-x" wraps around
* pre-compute some expressions that don't depend on loop counters

--> wins us 1-4 fps on my 72x72 test setup
2024-07-15 14:05:19 +02:00
Frank
4f6eb8b161 prevent array bounds violation
+ don't use dynamic array for heights[] - dynamic arrays are using malloc() -> heap frag.
2024-07-15 13:24:18 +02:00
Frank
6d1615189b Merge branch 'mdev' into 3DGEQ 2024-07-15 12:33:48 +02:00
Frank
d0927a5142 akemi and GEQ didn't like map2 2024-07-15 12:29:29 +02:00
Frank
d2762c35b0 Update FX.cpp
* add more accurate version of map() - reduces slight flickering in some 2D effects
* cache fftResult[] in effects (um_data->fftresult might get updated while the effect still calculates)
2024-07-15 11:57:46 +02:00
Troy
3857862e03 Optimized side-wall drawing
Only draw what will be visible.

This is a pretty solid speed increase when the adjacent bar is close in height, or if it's taller and would occlude it anyway, it'll be skipped.
2024-07-14 22:32:42 -04:00
Frank
6aaf7a908d more sPC optimizations
* made setPixelColorXY_fast private
* optimized Segment::fill() to use setPixelColorXY_fast
* "bar" 1D expand optimization
2024-07-14 23:49:37 +02:00
Frank
dddd1574ec (experimental) setPixelColorXY_fast speedup by setPixelColorXY_fast
* adding a _fast_ variant of SetPixelColorXY, that does not perform any error checking.
* drawLine uses the fast setPixelColor variant (bresenham algo only)
* for TESTING: segment option "reverse" switches back to the "original slow" code.
surely needs some more optimization and improvements.

First test on GEQ 3D shows 10%-30% speedup
2024-07-14 14:11:11 +02:00
Will Tatam
aa6d275a86 Swap DMX port to 1, persist user choice of port, validate port vs UART count 2024-07-13 20:26:26 +01:00
Will Tatam
584ca5e8ae Double buffer needed to prevent flicker for effects like GEQ 2024-07-13 13:51:59 +01:00
Troy
75f0c7cb98 Oopsy 2024-07-12 22:34:37 -04:00
Troy
643f82daf0 Don't use new soft drawline() option 2024-07-12 22:32:14 -04:00
Troy
4c8d500215 Seems someone improved drawline() - fixed for this 2024-07-12 22:12:59 -04:00
Troy
52130e176c Merge branch 'mdev' into 3DGEQ 2024-07-12 22:10:39 -04:00
Troy
ce8f01bf90 Bugfixed GEQ 3D
Bug fixes after lots of testing, better settings, etc.

Big thanks to @netmindz  for restructuring the code.

Add rough distance stop to Segment::drawLine()
2024-07-12 22:03:33 -04:00
Frank
346914b965 setPixelColorXY small optimizations
Caching a few segment vars gives a 5% speedup on big setups.

Its 2024, and compilers are still stupid :-P
2024-07-13 01:37:43 +02:00
Frank
982a4bb155 Merge pull request #139 from MoonModules/upstream_patch_clusterf
AC minor patch cluster
* Anti-Aliased Lines and Circles
* replacing deprecated functions in ws.cpp
* using global brightness in analogue clock overlay
* fix for palette names (custom palettes)
* bugfix for UI: when resizing the window, it always jumped to the Colors tab
* UI: add webpage shortcuts for tabs
2024-07-13 01:13:53 +02:00
Troy
4538d24873 Merge pull request #144 from troyhacks/AC101-Support
AC101 audio support
2024-07-10 19:15:09 -04:00
Troy
1c33a4bbea Remove references to AC101 mic mode (not implemented) 2024-07-10 19:08:58 -04:00
Troy
f7e2f14ca4 Minor tab and comment clean-up. 2024-07-10 19:03:38 -04:00
Will Tatam
aed861d063 GEQ Laser use SEGMENT.data 2024-07-10 23:58:35 +01:00
Troy
1fe871c42c Fully working with analog loopthru 2024-07-10 18:54:02 -04:00
Will Tatam
8f4380b075 Rename 3D GEQ to GEQ Laser 2024-07-10 23:51:53 +01:00
Will Tatam
60fbf07bca Fix mx_width and height for 4scan 2024-07-10 23:01:21 +01:00
Will Tatam
bda4bbeeec 3D GEQ - fade speed 2024-07-10 23:00:42 +01:00
Troy
c069385600 Merge branch 'MoonModules:mdev' into AC101-Support 2024-07-10 15:32:43 -04:00
Will Tatam
3fd8078722 3D GEQ - customisable number of bands 2024-07-10 09:40:40 +01:00
Will Tatam
cb3d06bc89 3D GEQ - variable front brightness 2024-07-10 09:24:26 +01:00
Will Tatam
f6cd28cea2 3D GEQ - customisable number of bands 2024-07-10 09:20:58 +01:00
Will Tatam
45f288a2f2 3D GEQ - make front brightness a control 2024-07-10 08:59:05 +01:00
Will Tatam
2d7e416879 ; 2024-07-10 08:33:42 +01:00
Will Tatam
e452d4d316 Add @TroyHacks 3D GEQ 2024-07-10 08:26:07 +01:00
Will Tatam
e2f23542f5 Add @TroyHacks 3D GEQ 2024-07-10 08:25:40 +01:00
Will Tatam
fb30f9c641 Add Hub75Matrix 64x32 (Outdoor 8S) 2024-07-09 21:35:53 +01:00
Will Tatam
5123128e9c Limit hub75 chain length by height 64 not width to allow for 2 x 64x32 2024-07-09 18:39:58 +01:00
Frank
528ec1fa4c version of today, -b32.41
featuring FastPath v2
2024-07-05 18:25:48 +02:00
Frank
4b6d890cf7 Merge pull request #141 from MoonModules/Full_audio_FastPath
Full audio fastpath (part2)

This PR allows the audio core to deliver sound data and FFT results 2x faster (43 sps --> 87 sps).
Frequency reactive effects (GEQ, FreqMap, DJLight) will have improved "on-spot" reactions, and will typically react to audio changes within 10-20 milliseconds.
Volume reactive effect will react a bit better (but still lagging behind, due to legacy filtering design that was created when only low-quality analog mics were available). You can try changing the "Mic Quality" option to _low noise_ this will further reduce latency.

Limitations
* only works on esp32-S3 and classic esp32, due to higher CPU load for FFT
* Will not work well with analog microphone
* If your LEDs fixture achieves less than 60-80 fps, you will probably not see a difference.
2024-07-05 18:22:09 +02:00
Frank
4d03af6466 mic quality dropdown, cleanup
* mic quality: When set to "low noise" or "perfect", only minimal smoothing is performed on the "Mic Volume" input.
Every filter adds a delay, so this option can lead to better on-spot responses from effects.

* cleanup: removed a few unused variables and unused code.
2024-07-05 17:53:43 +02:00
Frank
bd997f7056 added Blackman window 2024-07-05 15:37:03 +02:00
Frank
cba883c663 parameter tuning
*some filter parameter tinkering
* restore FFT_MajPeakSmth in UDP SoundSync receiver
2024-07-05 15:12:41 +02:00
Frank
160e66a766 user-selectable FFT window functions
experiments: user-selectable FFT "windowing" options

https://en.wikipedia.org/wiki/Window_function#Cosine-sum_windows
2024-07-04 21:44:09 +02:00
Frank
9b14de06b2 fix build error on -S2, -C3 2024-07-04 20:13:57 +02:00