Skip to content

Commit be5ce80

Browse files
committed
Take advantage of the refactored ANIMartRIX to call the new _base methods with varying parameters at runtime
1 parent ae3a796 commit be5ce80

2 files changed

Lines changed: 64 additions & 85 deletions

File tree

platformio.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1209,7 +1209,7 @@ AR_build_flags = -D USERMOD_AUDIOREACTIVE -D UM_AUDIOREACTIVE_USE_NEW_FFT ;; WLE
12091209
AR_lib_deps = https://github.com/softhack007/arduinoFFT.git#develop @ 1.9.2 ;; used for USERMOD_AUDIOREACTIVE - optimized version, 10% faster on -S2/-C3
12101210

12111211
animartrix_build_flags = -D USERMOD_ANIMARTRIX ;; WLEDMM usermod: CC BY-NC 3.0 licensed effects by Stefan Petrick
1212-
animartrix_lib_deps = https://github.com/netmindz/animartrix.git#81eb09b91c8c9c8c01f8ea442787f8127d56c72f ;; custom PSRAM allocator
1212+
animartrix_lib_deps = https://github.com/netmindz/animartrix.git#932337eee2dab2dc7c5c26ce0e1c3536a5088c37
12131213
animartrix_lib_ignore = animartrix ;; to remove the animartrix lib dependancy (saves a few bytes)
12141214

12151215
DMXin_build_flags = -D WLED_ENABLE_DMX_INPUT ;; WLEDMM DMX physical input - requires ESP-IDF v4.4.x

usermods/usermod_v2_animartrix/usermod_v2_animartrix.h

Lines changed: 63 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -69,40 +69,34 @@
6969
//========================================================================================================================
7070

7171

72-
static const char _data_FX_mode_Module_Experiment10[] PROGMEM = "Y💡Module_Experiment10 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
72+
// Combined effects with custom parameters (effects that share a _base method in ANIMartRIX)
73+
static const char _data_FX_mode_Module_Experiment810[] PROGMEM = "Y💡Module_Experiment810 ☾@Speed,,W,,, HSV Color,Gamma Correction;;1;2;c1=128,o1=0,o2=0"; // c1: w 0.3-1.0, o1: use_hsv
7374
static const char _data_FX_mode_Module_Experiment9[] PROGMEM = "Y💡Module_Experiment9 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
74-
static const char _data_FX_mode_Module_Experiment8[] PROGMEM = "Y💡Module_Experiment8 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
7575
static const char _data_FX_mode_Module_Experiment7[] PROGMEM = "Y💡Module_Experiment7 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
7676
static const char _data_FX_mode_Module_Experiment6[] PROGMEM = "Y💡Module_Experiment6 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
7777
static const char _data_FX_mode_Module_Experiment5[] PROGMEM = "Y💡Module_Experiment5 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
7878
static const char _data_FX_mode_Module_Experiment4[] PROGMEM = "Y💡Module_Experiment4 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
7979
static const char _data_FX_mode_Zoom2[] PROGMEM = "Y💡Zoom2 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
80-
static const char _data_FX_mode_Module_Experiment3[] PROGMEM = "Y💡Module_Experiment3 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
81-
static const char _data_FX_mode_Module_Experiment2[] PROGMEM = "Y💡Module_Experiment2 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
80+
static const char _data_FX_mode_Module_Experiment23[] PROGMEM = "Y💡Module_Experiment23 ☾@Speed,,Dist Offset,Dist Scale,,,Gamma Correction;;1;2;c1=128,c2=128,o2=0"; // c1: dist_offset, c2: dist_scale
8281
static const char _data_FX_mode_Module_Experiment1[] PROGMEM = "Y💡Module_Experiment1 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
8382
static const char _data_FX_mode_Parametric_Water[] PROGMEM = "Y💡Parametric_Water ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
8483
static const char _data_FX_mode_Water[] PROGMEM = "Y💡Water ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
8584
static const char _data_FX_mode_Complex_Kaleido_6[] PROGMEM = "Y💡Complex_Kaleido_6 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
8685
static const char _data_FX_mode_Complex_Kaleido_5[] PROGMEM = "Y💡Complex_Kaleido_5 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
8786
static const char _data_FX_mode_Complex_Kaleido_4[] PROGMEM = "Y💡Complex_Kaleido_4 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
8887
static const char _data_FX_mode_Complex_Kaleido_3[] PROGMEM = "Y💡Complex_Kaleido_3 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
89-
static const char _data_FX_mode_Complex_Kaleido_2[] PROGMEM = "Y💡Complex_Kaleido_2 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
90-
static const char _data_FX_mode_Complex_Kaleido[] PROGMEM = "Y💡Complex_Kaleido ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
91-
static const char _data_FX_mode_SM10[] PROGMEM = "Y💡SM10 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
92-
static const char _data_FX_mode_SM9[] PROGMEM = "Y💡SM9 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
88+
static const char _data_FX_mode_Complex_Kaleido12[] PROGMEM = "Y💡Complex_Kaleido12 ☾@Speed,,Size,,,, Gamma Correction;;1;2;c1=128,o2=0"; // c1: size 0.5-1.0
89+
static const char _data_FX_mode_SM910[] PROGMEM = "Y💡SM910 ☾@Speed,,Scale,,, Variant,Gamma Correction;;1;2;c1=128,o1=0,o2=0"; // c1: scale 0.6-1.0, o1: variant10
9390
static const char _data_FX_mode_SM8[] PROGMEM = "Y💡SM8 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
9491
static const char _data_FX_mode_SM7[] PROGMEM = "Y💡SM7 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
95-
static const char _data_FX_mode_SM6[] PROGMEM = "Y💡SM6 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
96-
static const char _data_FX_mode_SM5[] PROGMEM = "Y💡SM5 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
92+
static const char _data_FX_mode_SM56[] PROGMEM = "Y💡SM56 ☾@Speed,,Zoom,,, Variant,Gamma Correction;;1;2;c1=128,o1=0,o2=0"; // c1: s 0.7-1.0, o1: variant6
9793
static const char _data_FX_mode_SM4[] PROGMEM = "Y💡SM4 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
9894
static const char _data_FX_mode_SM3[] PROGMEM = "Y💡SM3 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
9995
static const char _data_FX_mode_SM2[] PROGMEM = "Y💡SM2 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
10096
static const char _data_FX_mode_SM1[] PROGMEM = "Y💡SM1 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
10197
static const char _data_FX_mode_Big_Caleido[] PROGMEM = "Y💡Big_Caleido ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
102-
static const char _data_FX_mode_RGB_Blobs5[] PROGMEM = "Y💡RGB_Blobs5 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
103-
static const char _data_FX_mode_RGB_Blobs4[] PROGMEM = "Y💡RGB_Blobs4 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
104-
static const char _data_FX_mode_RGB_Blobs3[] PROGMEM = "Y💡RGB_Blobs3 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
105-
static const char _data_FX_mode_RGB_Blobs2[] PROGMEM = "Y💡RGB_Blobs2 ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
98+
static const char _data_FX_mode_RGB_Blobs45[] PROGMEM = "Y💡RGB_Blobs45 ☾@Speed,,Scale,,,, Gamma Correction;;1;2;c1=128,o2=0"; // c1: scale 0.05-0.1
99+
static const char _data_FX_mode_RGB_Blobs23[] PROGMEM = "Y💡RGB_Blobs23 ☾@Speed,,,,,Variant,Gamma Correction;;1;2;o1=0,o2=0"; // o1: variant3
106100
static const char _data_FX_mode_RGB_Blobs[] PROGMEM = "Y💡RGB_Blobs ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
107101
static const char _data_FX_mode_Polar_Waves[] PROGMEM = "Y💡Polar_Waves ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
108102
static const char _data_FX_mode_Slow_Fade[] PROGMEM = "Y💡Slow_Fade ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
@@ -122,6 +116,11 @@ static const char _data_FX_mode_Waves[] PROGMEM = "Y💡Waves ☾@Speed,,,,,,Gam
122116
static const char _data_FX_mode_Chasing_Spirals[] PROGMEM = "Y💡Chasing_Spirals ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
123117
static const char _data_FX_mode_Rotating_Blob[] PROGMEM = "Y💡Rotating_Blob ☾@Speed,,,,,,Gamma Correction;;1;2;o2=0";
124118

119+
// local float map helper (same as in FX.cpp but needed here since that one is static)
120+
static float animartrix_mapf(float x, float in_min, float in_max, float out_min, float out_max) {
121+
if (in_max == in_min) return out_min;
122+
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
123+
}
125124

126125
class ANIMartRIXMod:public ANIMartRIX {
127126
private:
@@ -168,21 +167,19 @@ class ANIMartRIXMod:public ANIMartRIX {
168167
};
169168
ANIMartRIXMod anim;
170169

171-
uint16_t mode_Module_Experiment10() {
172-
anim.initEffect();
173-
anim.Module_Experiment10();
170+
uint16_t mode_Module_Experiment810() {
171+
anim.initEffect();
172+
// c1 maps 0-255 to w range 0.3-1.0, o1 selects HSV color mode
173+
float w = animartrix_mapf(SEGMENT.custom1, 0, 255, 0.3f, 1.0f);
174+
bool use_hsv = SEGMENT.check1;
175+
anim.Module_Experiment810_base(w, use_hsv);
174176
return FRAMETIME;
175177
}
176178
uint16_t mode_Module_Experiment9() {
177179
anim.initEffect();
178180
anim.Module_Experiment9();
179181
return FRAMETIME;
180182
}
181-
uint16_t mode_Module_Experiment8() {
182-
anim.initEffect();
183-
anim.Module_Experiment8();
184-
return FRAMETIME;
185-
}
186183
uint16_t mode_Module_Experiment7() {
187184
anim.initEffect();
188185
anim.Module_Experiment7();
@@ -208,14 +205,15 @@ uint16_t mode_Zoom2() {
208205
anim.Zoom2();
209206
return FRAMETIME;
210207
}
211-
uint16_t mode_Module_Experiment3() {
212-
anim.initEffect();
213-
anim.Module_Experiment3();
214-
return FRAMETIME;
215-
}
216-
uint16_t mode_Module_Experiment2() {
217-
anim.initEffect();
218-
anim.Module_Experiment2();
208+
uint16_t mode_Module_Experiment23() {
209+
anim.initEffect();
210+
// c1 maps 0-255 to dist_offset 12-16, c2 maps 0-255 to dist_scale 4-16
211+
float dist_offset = animartrix_mapf(SEGMENT.custom1, 0, 255, 12.0f, 16.0f);
212+
float dist_scale = animartrix_mapf(SEGMENT.custom2, 0, 255, 4.0f, 16.0f);
213+
// speed derived from dist_offset ratio, dir_idx: 0 for high offset, 3 for low
214+
float speed = animartrix_mapf(SEGMENT.custom1, 0, 255, 0.01f, 0.02f);
215+
int dir_idx = (SEGMENT.custom1 < 128) ? 3 : 0;
216+
anim.Module_Experiment23_base(speed, dist_offset, dist_scale, dir_idx);
219217
return FRAMETIME;
220218
}
221219
uint16_t mode_Module_Experiment1() {
@@ -253,24 +251,20 @@ uint16_t mode_Complex_Kaleido_3() {
253251
anim.Complex_Kaleido_3();
254252
return FRAMETIME;
255253
}
256-
uint16_t mode_Complex_Kaleido_2() {
257-
anim.initEffect();
258-
anim.Complex_Kaleido_2();
254+
uint16_t mode_Complex_Kaleido12() {
255+
anim.initEffect();
256+
// c1 maps 0-255 to size 0.5-1.0
257+
float size = animartrix_mapf(SEGMENT.custom1, 0, 255, 0.5f, 1.0f);
258+
anim.Complex_Kaleido_12_base(size);
259259
return FRAMETIME;
260260
}
261-
uint16_t mode_Complex_Kaleido() {
262-
anim.initEffect();
263-
anim.Complex_Kaleido();
264-
return FRAMETIME;
265-
}
266-
uint16_t mode_SM10() {
267-
anim.initEffect();
268-
anim.SM10();
269-
return FRAMETIME;
270-
}
271-
uint16_t mode_SM9() {
272-
anim.initEffect();
273-
anim.SM9();
261+
uint16_t mode_SM910() {
262+
anim.initEffect();
263+
// c1 maps 0-255 to scale 0.6-1.0, o1 selects variant10
264+
float scale = animartrix_mapf(SEGMENT.custom1, 0, 255, 0.6f, 1.0f);
265+
bool variant10 = SEGMENT.check1;
266+
float speed = variant10 ? 0.006f : 0.005f;
267+
anim.SM910_base(speed, scale, variant10);
274268
return FRAMETIME;
275269
}
276270
uint16_t mode_SM8() {
@@ -284,14 +278,12 @@ uint16_t mode_SM8() {
284278
//
285279
// return FRAMETIME;
286280
// }
287-
uint16_t mode_SM6() {
288-
anim.initEffect();
289-
anim.SM6();
290-
return FRAMETIME;
291-
}
292-
uint16_t mode_SM5() {
293-
anim.initEffect();
294-
anim.SM5();
281+
uint16_t mode_SM56() {
282+
anim.initEffect();
283+
// c1 maps 0-255 to s 0.7-1.0, o1 selects variant6
284+
float s = animartrix_mapf(SEGMENT.custom1, 0, 255, 0.7f, 1.0f);
285+
bool variant6 = SEGMENT.check1;
286+
anim.SM56_base(s, variant6);
295287
return FRAMETIME;
296288
}
297289
uint16_t mode_SM4() {
@@ -319,24 +311,18 @@ uint16_t mode_Big_Caleido() {
319311
anim.Big_Caleido();
320312
return FRAMETIME;
321313
}
322-
uint16_t mode_RGB_Blobs5() {
323-
anim.initEffect();
324-
anim.RGB_Blobs5();
325-
return FRAMETIME;
326-
}
327-
uint16_t mode_RGB_Blobs4() {
328-
anim.initEffect();
329-
anim.RGB_Blobs4();
314+
uint16_t mode_RGB_Blobs45() {
315+
anim.initEffect();
316+
// c1 maps 0-255 to scale 0.05-0.1
317+
float scale = animartrix_mapf(SEGMENT.custom1, 0, 255, 0.05f, 0.1f);
318+
anim.RGB_Blobs45_base(scale);
330319
return FRAMETIME;
331320
}
332-
uint16_t mode_RGB_Blobs3() {
333-
anim.initEffect();
334-
anim.RGB_Blobs3();
335-
return FRAMETIME;
336-
}
337-
uint16_t mode_RGB_Blobs2() {
338-
anim.initEffect();
339-
anim.RGB_Blobs2();
321+
uint16_t mode_RGB_Blobs23() {
322+
anim.initEffect();
323+
// o1 selects variant3 (different dist offset and color mapping)
324+
bool variant3 = SEGMENT.check1;
325+
anim.RGB_Blobs23_base(variant3);
340326
return FRAMETIME;
341327
}
342328
uint16_t mode_RGB_Blobs() {
@@ -442,40 +428,33 @@ class AnimartrixUsermod : public Usermod {
442428

443429
if(!enabled) return;
444430

445-
strip.addEffect(203, &mode_Module_Experiment10, _data_FX_mode_Module_Experiment10);
431+
strip.addEffect(203, &mode_Module_Experiment810, _data_FX_mode_Module_Experiment810);
446432
strip.addEffect(204, &mode_Module_Experiment9, _data_FX_mode_Module_Experiment9);
447-
strip.addEffect(205, &mode_Module_Experiment8, _data_FX_mode_Module_Experiment8);
448433
strip.addEffect(206, &mode_Module_Experiment7, _data_FX_mode_Module_Experiment7);
449434
strip.addEffect(207, &mode_Module_Experiment6, _data_FX_mode_Module_Experiment6);
450435
strip.addEffect(208, &mode_Module_Experiment5, _data_FX_mode_Module_Experiment5);
451436
strip.addEffect(209, &mode_Module_Experiment4, _data_FX_mode_Module_Experiment4);
452437
strip.addEffect(210, &mode_Zoom2, _data_FX_mode_Zoom2);
453-
strip.addEffect(211, &mode_Module_Experiment3, _data_FX_mode_Module_Experiment3);
454-
strip.addEffect(212, &mode_Module_Experiment2, _data_FX_mode_Module_Experiment2);
438+
strip.addEffect(211, &mode_Module_Experiment23, _data_FX_mode_Module_Experiment23);
455439
strip.addEffect(213, &mode_Module_Experiment1, _data_FX_mode_Module_Experiment1);
456440
strip.addEffect(214, &mode_Parametric_Water, _data_FX_mode_Parametric_Water);
457441
strip.addEffect(215, &mode_Water, _data_FX_mode_Water);
458442
strip.addEffect(216, &mode_Complex_Kaleido_6, _data_FX_mode_Complex_Kaleido_6);
459443
strip.addEffect(217, &mode_Complex_Kaleido_5, _data_FX_mode_Complex_Kaleido_5);
460444
strip.addEffect(218, &mode_Complex_Kaleido_4, _data_FX_mode_Complex_Kaleido_4);
461445
strip.addEffect(219, &mode_Complex_Kaleido_3, _data_FX_mode_Complex_Kaleido_3);
462-
strip.addEffect(220, &mode_Complex_Kaleido_2, _data_FX_mode_Complex_Kaleido_2);
463-
strip.addEffect(221, &mode_Complex_Kaleido, _data_FX_mode_Complex_Kaleido);
464-
strip.addEffect(222, &mode_SM10, _data_FX_mode_SM10);
465-
strip.addEffect(223, &mode_SM9, _data_FX_mode_SM9);
446+
strip.addEffect(220, &mode_Complex_Kaleido12, _data_FX_mode_Complex_Kaleido12);
447+
strip.addEffect(222, &mode_SM910, _data_FX_mode_SM910);
466448
strip.addEffect(224, &mode_SM8, _data_FX_mode_SM8);
467449
// strip.addEffect(225, &mode_SM7, _data_FX_mode_SM7);
468-
strip.addEffect(226, &mode_SM6, _data_FX_mode_SM6);
469-
strip.addEffect(227, &mode_SM5, _data_FX_mode_SM5);
450+
strip.addEffect(226, &mode_SM56, _data_FX_mode_SM56);
470451
strip.addEffect(228, &mode_SM4, _data_FX_mode_SM4);
471452
strip.addEffect(229, &mode_SM3, _data_FX_mode_SM3);
472453
strip.addEffect(230, &mode_SM2, _data_FX_mode_SM2);
473454
strip.addEffect(231, &mode_SM1, _data_FX_mode_SM1);
474455
strip.addEffect(232, &mode_Big_Caleido, _data_FX_mode_Big_Caleido);
475-
strip.addEffect(233, &mode_RGB_Blobs5, _data_FX_mode_RGB_Blobs5);
476-
strip.addEffect(234, &mode_RGB_Blobs4, _data_FX_mode_RGB_Blobs4);
477-
strip.addEffect(235, &mode_RGB_Blobs3, _data_FX_mode_RGB_Blobs3);
478-
strip.addEffect(236, &mode_RGB_Blobs2, _data_FX_mode_RGB_Blobs2);
456+
strip.addEffect(233, &mode_RGB_Blobs45, _data_FX_mode_RGB_Blobs45);
457+
strip.addEffect(235, &mode_RGB_Blobs23, _data_FX_mode_RGB_Blobs23);
479458
strip.addEffect(237, &mode_RGB_Blobs, _data_FX_mode_RGB_Blobs);
480459
strip.addEffect(238, &mode_Polar_Waves, _data_FX_mode_Polar_Waves);
481460
strip.addEffect(239, &mode_Slow_Fade, _data_FX_mode_Slow_Fade);

0 commit comments

Comments
 (0)