diff options
| author | db <108231591+bactaholic@users.noreply.github.com> | 2023-11-26 05:07:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-26 23:07:32 +1100 |
| commit | 65b5969ed56e0e7fe033400bef374de1c4dbb663 (patch) | |
| tree | 49ac02568ae89768c842512e0c10126c0d5f7243 | |
| parent | f96a7bbd6304410e15fa6fc744a9b0fa660f1eeb (diff) | |
New RGB Animations - 4 "Starlight" Animation Variations (#22212)
| -rw-r--r-- | docs/feature_rgb_matrix.md | 8 | ||||
| -rw-r--r-- | quantum/rgb_matrix/animations/rgb_matrix_effects.inc | 4 | ||||
| -rw-r--r-- | quantum/rgb_matrix/animations/riverflow_anim.h | 22 | ||||
| -rw-r--r-- | quantum/rgb_matrix/animations/starlight_anim.h | 30 | ||||
| -rw-r--r-- | quantum/rgb_matrix/animations/starlight_dual_hue_anim.h | 31 | ||||
| -rw-r--r-- | quantum/rgb_matrix/animations/starlight_dual_sat_anim.h | 31 |
6 files changed, 126 insertions, 0 deletions
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index 01ecff1f3f..824ff50648 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md | |||
| @@ -656,6 +656,10 @@ enum rgb_matrix_effects { | |||
| 656 | RGB_MATRIX_MULTISPLASH, // Full gradient & value pulse away from multiple key hits then fades value out | 656 | RGB_MATRIX_MULTISPLASH, // Full gradient & value pulse away from multiple key hits then fades value out |
| 657 | RGB_MATRIX_SOLID_SPLASH, // Hue & value pulse away from a single key hit then fades value out | 657 | RGB_MATRIX_SOLID_SPLASH, // Hue & value pulse away from a single key hit then fades value out |
| 658 | RGB_MATRIX_SOLID_MULTISPLASH, // Hue & value pulse away from multiple key hits then fades value out | 658 | RGB_MATRIX_SOLID_MULTISPLASH, // Hue & value pulse away from multiple key hits then fades value out |
| 659 | RGB_MATRIX_STARLIGHT, // LEDs turn on and off at random at varying brightness, maintaining user set color | ||
| 660 | RGB_MATRIX_STARLIGHT_DUAL_HUE, // LEDs turn on and off at random at varying brightness, modifies user set hue by +- 30 | ||
| 661 | RGB_MATRIX_STARLIGHT_DUAL_SAT, // LEDs turn on and off at random at varying brightness, modifies user set saturation by +- 30 | ||
| 662 | RGB_MATRIX_RIVERFLOW, // Modification to breathing animation, offset's animation depending on key location to simulate a river flowing | ||
| 659 | RGB_MATRIX_EFFECT_MAX | 663 | RGB_MATRIX_EFFECT_MAX |
| 660 | }; | 664 | }; |
| 661 | ``` | 665 | ``` |
| @@ -695,6 +699,10 @@ You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `confi | |||
| 695 | |`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL` |Enables `RGB_MATRIX_PIXEL_FRACTAL` | | 699 | |`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL` |Enables `RGB_MATRIX_PIXEL_FRACTAL` | |
| 696 | |`#define ENABLE_RGB_MATRIX_PIXEL_FLOW` |Enables `RGB_MATRIX_PIXEL_FLOW` | | 700 | |`#define ENABLE_RGB_MATRIX_PIXEL_FLOW` |Enables `RGB_MATRIX_PIXEL_FLOW` | |
| 697 | |`#define ENABLE_RGB_MATRIX_PIXEL_RAIN` |Enables `RGB_MATRIX_PIXEL_RAIN` | | 701 | |`#define ENABLE_RGB_MATRIX_PIXEL_RAIN` |Enables `RGB_MATRIX_PIXEL_RAIN` | |
| 702 | |`#define ENABLE_RGB_MATRIX_STARLIGHT` |Enables `RGB_MATRIX_STARLIGHT` | | ||
| 703 | |`#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE` |Enables `RGB_MATRIX_STARLIGHT_DUAL_HUE` | | ||
| 704 | |`#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT` |Enables `RGB_MATRIX_STARLIGHT_DUAL_SAT` | | ||
| 705 | |`#define ENABLE_RGB_MATRIX_RIVERFLOW` |Enables `RGB_MATRIX_RIVERFLOW` | | ||
| 698 | 706 | ||
| 699 | |Framebuffer Defines |Description | | 707 | |Framebuffer Defines |Description | |
| 700 | |------------------------------------------------------|----------------------------------------------| | 708 | |------------------------------------------------------|----------------------------------------------| |
diff --git a/quantum/rgb_matrix/animations/rgb_matrix_effects.inc b/quantum/rgb_matrix/animations/rgb_matrix_effects.inc index df34718838..a02238a2d1 100644 --- a/quantum/rgb_matrix/animations/rgb_matrix_effects.inc +++ b/quantum/rgb_matrix/animations/rgb_matrix_effects.inc | |||
| @@ -39,3 +39,7 @@ | |||
| 39 | #include "solid_reactive_nexus.h" | 39 | #include "solid_reactive_nexus.h" |
| 40 | #include "splash_anim.h" | 40 | #include "splash_anim.h" |
| 41 | #include "solid_splash_anim.h" | 41 | #include "solid_splash_anim.h" |
| 42 | #include "starlight_anim.h" | ||
| 43 | #include "starlight_dual_sat_anim.h" | ||
| 44 | #include "starlight_dual_hue_anim.h" | ||
| 45 | #include "riverflow_anim.h" \ No newline at end of file | ||
diff --git a/quantum/rgb_matrix/animations/riverflow_anim.h b/quantum/rgb_matrix/animations/riverflow_anim.h new file mode 100644 index 0000000000..79a38e7f6e --- /dev/null +++ b/quantum/rgb_matrix/animations/riverflow_anim.h | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | #ifdef ENABLE_RGB_MATRIX_RIVERFLOW | ||
| 2 | RGB_MATRIX_EFFECT(RIVERFLOW) | ||
| 3 | # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 4 | |||
| 5 | // inspired by @PleasureTek's Massdrop Alt LED animation | ||
| 6 | |||
| 7 | bool RIVERFLOW(effect_params_t* params) { | ||
| 8 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||
| 9 | for (uint8_t i = led_min; i < led_max; i++) { | ||
| 10 | HSV hsv = rgb_matrix_config.hsv; | ||
| 11 | uint16_t time = scale16by8(g_rgb_timer + (i * 315), rgb_matrix_config.speed / 8); | ||
| 12 | hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||
| 13 | RGB rgb = rgb_matrix_hsv_to_rgb(hsv); | ||
| 14 | RGB_MATRIX_TEST_LED_FLAGS(); | ||
| 15 | rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||
| 16 | } | ||
| 17 | |||
| 18 | return rgb_matrix_check_finished_leds(led_max); | ||
| 19 | } | ||
| 20 | |||
| 21 | # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 22 | #endif // ENABLE_RGB_MATRIX_RIVERFLOW | ||
diff --git a/quantum/rgb_matrix/animations/starlight_anim.h b/quantum/rgb_matrix/animations/starlight_anim.h new file mode 100644 index 0000000000..33f0b61a91 --- /dev/null +++ b/quantum/rgb_matrix/animations/starlight_anim.h | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | #ifdef ENABLE_RGB_MATRIX_STARLIGHT | ||
| 2 | RGB_MATRIX_EFFECT(STARLIGHT) | ||
| 3 | # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 4 | |||
| 5 | void set_starlight_color(int i, effect_params_t* params) { | ||
| 6 | uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); | ||
| 7 | HSV hsv = rgb_matrix_config.hsv; | ||
| 8 | hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||
| 9 | RGB rgb = hsv_to_rgb(hsv); | ||
| 10 | rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||
| 11 | } | ||
| 12 | |||
| 13 | bool STARLIGHT(effect_params_t* params) { | ||
| 14 | if (!params->init) { | ||
| 15 | if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) { | ||
| 16 | int rand_led = rand() % RGB_MATRIX_LED_COUNT; | ||
| 17 | set_starlight_color(rand_led, params); | ||
| 18 | } | ||
| 19 | return false; | ||
| 20 | } | ||
| 21 | |||
| 22 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||
| 23 | for (int i = led_min; i < led_max; i++) { | ||
| 24 | set_starlight_color(i, params); | ||
| 25 | } | ||
| 26 | return rgb_matrix_check_finished_leds(led_max); | ||
| 27 | } | ||
| 28 | |||
| 29 | # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 30 | #endif // ENABLE_RGB_MATRIX_STARLIGHT \ No newline at end of file | ||
diff --git a/quantum/rgb_matrix/animations/starlight_dual_hue_anim.h b/quantum/rgb_matrix/animations/starlight_dual_hue_anim.h new file mode 100644 index 0000000000..df6461b8b7 --- /dev/null +++ b/quantum/rgb_matrix/animations/starlight_dual_hue_anim.h | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE | ||
| 2 | RGB_MATRIX_EFFECT(STARLIGHT_DUAL_HUE) | ||
| 3 | # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 4 | |||
| 5 | void set_starlight_dual_hue_color(int i, effect_params_t* params) { | ||
| 6 | uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); | ||
| 7 | HSV hsv = rgb_matrix_config.hsv; | ||
| 8 | hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||
| 9 | hsv.h = hsv.h + (rand() % (30 + 1 - -30) + -30); | ||
| 10 | RGB rgb = hsv_to_rgb(hsv); | ||
| 11 | rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||
| 12 | } | ||
| 13 | |||
| 14 | bool STARLIGHT_DUAL_HUE(effect_params_t* params) { | ||
| 15 | if (!params->init) { | ||
| 16 | if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) { | ||
| 17 | int rand_led = rand() % RGB_MATRIX_LED_COUNT; | ||
| 18 | set_starlight_dual_hue_color(rand_led, params); | ||
| 19 | } | ||
| 20 | return false; | ||
| 21 | } | ||
| 22 | |||
| 23 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||
| 24 | for (int i = led_min; i < led_max; i++) { | ||
| 25 | set_starlight_dual_hue_color(i, params); | ||
| 26 | } | ||
| 27 | return rgb_matrix_check_finished_leds(led_max); | ||
| 28 | } | ||
| 29 | |||
| 30 | # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 31 | #endif // ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE \ No newline at end of file | ||
diff --git a/quantum/rgb_matrix/animations/starlight_dual_sat_anim.h b/quantum/rgb_matrix/animations/starlight_dual_sat_anim.h new file mode 100644 index 0000000000..f6ecd48aa1 --- /dev/null +++ b/quantum/rgb_matrix/animations/starlight_dual_sat_anim.h | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT | ||
| 2 | RGB_MATRIX_EFFECT(STARLIGHT_DUAL_SAT) | ||
| 3 | # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 4 | |||
| 5 | void set_starlight_dual_sat_color(int i, effect_params_t* params) { | ||
| 6 | uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); | ||
| 7 | HSV hsv = rgb_matrix_config.hsv; | ||
| 8 | hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||
| 9 | hsv.s = hsv.s + (rand() % (30 + 1 - -30) + -30); | ||
| 10 | RGB rgb = hsv_to_rgb(hsv); | ||
| 11 | rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||
| 12 | } | ||
| 13 | |||
| 14 | bool STARLIGHT_DUAL_SAT(effect_params_t* params) { | ||
| 15 | if (!params->init) { | ||
| 16 | if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) { | ||
| 17 | int rand_led = rand() % RGB_MATRIX_LED_COUNT; | ||
| 18 | set_starlight_dual_sat_color(rand_led, params); | ||
| 19 | } | ||
| 20 | return false; | ||
| 21 | } | ||
| 22 | |||
| 23 | RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||
| 24 | for (int i = led_min; i < led_max; i++) { | ||
| 25 | set_starlight_dual_sat_color(i, params); | ||
| 26 | } | ||
| 27 | return rgb_matrix_check_finished_leds(led_max); | ||
| 28 | } | ||
| 29 | |||
| 30 | # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 31 | #endif // ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT \ No newline at end of file | ||
