mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	New RGB Animations - 4 "Starlight" Animation Variations (#22212)
This commit is contained in:
		
							parent
							
								
									f96a7bbd63
								
							
						
					
					
						commit
						65b5969ed5
					
				| @ -656,6 +656,10 @@ enum rgb_matrix_effects { | |||||||
|     RGB_MATRIX_MULTISPLASH,         // Full gradient & value pulse away from multiple key hits then fades value out |     RGB_MATRIX_MULTISPLASH,         // Full gradient & value pulse away from multiple key hits then fades value out | ||||||
|     RGB_MATRIX_SOLID_SPLASH,        // Hue & value pulse away from a single key hit then fades value out |     RGB_MATRIX_SOLID_SPLASH,        // Hue & value pulse away from a single key hit then fades value out | ||||||
|     RGB_MATRIX_SOLID_MULTISPLASH,   // Hue & value pulse away from multiple key hits then fades value out |     RGB_MATRIX_SOLID_MULTISPLASH,   // Hue & value pulse away from multiple key hits then fades value out | ||||||
|  |     RGB_MATRIX_STARLIGHT,           // LEDs turn on and off at random at varying brightness, maintaining user set color | ||||||
|  |     RGB_MATRIX_STARLIGHT_DUAL_HUE,  // LEDs turn on and off at random at varying brightness, modifies user set hue by +- 30 | ||||||
|  |     RGB_MATRIX_STARLIGHT_DUAL_SAT,  // LEDs turn on and off at random at varying brightness, modifies user set saturation by +- 30 | ||||||
|  |     RGB_MATRIX_RIVERFLOW,           // Modification to breathing animation, offset's animation depending on key location to simulate a river flowing | ||||||
|     RGB_MATRIX_EFFECT_MAX |     RGB_MATRIX_EFFECT_MAX | ||||||
| }; | }; | ||||||
| ``` | ``` | ||||||
| @ -695,6 +699,10 @@ You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `confi | |||||||
| |`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL`             |Enables `RGB_MATRIX_PIXEL_FRACTAL`            | | |`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL`             |Enables `RGB_MATRIX_PIXEL_FRACTAL`            | | ||||||
| |`#define ENABLE_RGB_MATRIX_PIXEL_FLOW`                |Enables `RGB_MATRIX_PIXEL_FLOW`               | | |`#define ENABLE_RGB_MATRIX_PIXEL_FLOW`                |Enables `RGB_MATRIX_PIXEL_FLOW`               | | ||||||
| |`#define ENABLE_RGB_MATRIX_PIXEL_RAIN`                |Enables `RGB_MATRIX_PIXEL_RAIN`               | | |`#define ENABLE_RGB_MATRIX_PIXEL_RAIN`                |Enables `RGB_MATRIX_PIXEL_RAIN`               | | ||||||
|  | |`#define ENABLE_RGB_MATRIX_STARLIGHT`                 |Enables `RGB_MATRIX_STARLIGHT`                | | ||||||
|  | |`#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE`        |Enables `RGB_MATRIX_STARLIGHT_DUAL_HUE`       | | ||||||
|  | |`#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT`        |Enables `RGB_MATRIX_STARLIGHT_DUAL_SAT`       | | ||||||
|  | |`#define ENABLE_RGB_MATRIX_RIVERFLOW`                 |Enables `RGB_MATRIX_RIVERFLOW`                | | ||||||
| 
 | 
 | ||||||
| |Framebuffer Defines                                   |Description                                   | | |Framebuffer Defines                                   |Description                                   | | ||||||
| |------------------------------------------------------|----------------------------------------------| | |------------------------------------------------------|----------------------------------------------| | ||||||
|  | |||||||
| @ -39,3 +39,7 @@ | |||||||
| #include "solid_reactive_nexus.h"
 | #include "solid_reactive_nexus.h"
 | ||||||
| #include "splash_anim.h"
 | #include "splash_anim.h"
 | ||||||
| #include "solid_splash_anim.h"
 | #include "solid_splash_anim.h"
 | ||||||
|  | #include "starlight_anim.h"
 | ||||||
|  | #include "starlight_dual_sat_anim.h"
 | ||||||
|  | #include "starlight_dual_hue_anim.h"
 | ||||||
|  | #include "riverflow_anim.h"
 | ||||||
							
								
								
									
										22
									
								
								quantum/rgb_matrix/animations/riverflow_anim.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								quantum/rgb_matrix/animations/riverflow_anim.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | #ifdef ENABLE_RGB_MATRIX_RIVERFLOW | ||||||
|  | RGB_MATRIX_EFFECT(RIVERFLOW) | ||||||
|  | #    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||||||
|  | 
 | ||||||
|  | // inspired by @PleasureTek's Massdrop Alt LED animation
 | ||||||
|  | 
 | ||||||
|  | bool RIVERFLOW(effect_params_t* params) { | ||||||
|  |     RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||||||
|  |     for (uint8_t i = led_min; i < led_max; i++) { | ||||||
|  |         HSV      hsv  = rgb_matrix_config.hsv; | ||||||
|  |         uint16_t time = scale16by8(g_rgb_timer + (i * 315), rgb_matrix_config.speed / 8); | ||||||
|  |         hsv.v         = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||||||
|  |         RGB rgb       = rgb_matrix_hsv_to_rgb(hsv); | ||||||
|  |         RGB_MATRIX_TEST_LED_FLAGS(); | ||||||
|  |         rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return rgb_matrix_check_finished_leds(led_max); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #    endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
 | ||||||
|  | #endif     // ENABLE_RGB_MATRIX_RIVERFLOW
 | ||||||
							
								
								
									
										30
									
								
								quantum/rgb_matrix/animations/starlight_anim.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								quantum/rgb_matrix/animations/starlight_anim.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | #ifdef ENABLE_RGB_MATRIX_STARLIGHT | ||||||
|  | RGB_MATRIX_EFFECT(STARLIGHT) | ||||||
|  | #    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||||||
|  | 
 | ||||||
|  | void set_starlight_color(int i, effect_params_t* params) { | ||||||
|  |     uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); | ||||||
|  |     HSV      hsv  = rgb_matrix_config.hsv; | ||||||
|  |     hsv.v         = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||||||
|  |     RGB rgb       = hsv_to_rgb(hsv); | ||||||
|  |     rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool STARLIGHT(effect_params_t* params) { | ||||||
|  |     if (!params->init) { | ||||||
|  |         if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) { | ||||||
|  |             int rand_led = rand() % RGB_MATRIX_LED_COUNT; | ||||||
|  |             set_starlight_color(rand_led, params); | ||||||
|  |         } | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||||||
|  |     for (int i = led_min; i < led_max; i++) { | ||||||
|  |         set_starlight_color(i, params); | ||||||
|  |     } | ||||||
|  |     return rgb_matrix_check_finished_leds(led_max); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #    endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
 | ||||||
|  | #endif     // ENABLE_RGB_MATRIX_STARLIGHT
 | ||||||
							
								
								
									
										31
									
								
								quantum/rgb_matrix/animations/starlight_dual_hue_anim.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								quantum/rgb_matrix/animations/starlight_dual_hue_anim.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | |||||||
|  | #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE | ||||||
|  | RGB_MATRIX_EFFECT(STARLIGHT_DUAL_HUE) | ||||||
|  | #    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||||||
|  | 
 | ||||||
|  | void set_starlight_dual_hue_color(int i, effect_params_t* params) { | ||||||
|  |     uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); | ||||||
|  |     HSV      hsv  = rgb_matrix_config.hsv; | ||||||
|  |     hsv.v         = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||||||
|  |     hsv.h         = hsv.h + (rand() % (30 + 1 - -30) + -30); | ||||||
|  |     RGB rgb       = hsv_to_rgb(hsv); | ||||||
|  |     rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool STARLIGHT_DUAL_HUE(effect_params_t* params) { | ||||||
|  |     if (!params->init) { | ||||||
|  |         if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) { | ||||||
|  |             int rand_led = rand() % RGB_MATRIX_LED_COUNT; | ||||||
|  |             set_starlight_dual_hue_color(rand_led, params); | ||||||
|  |         } | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||||||
|  |     for (int i = led_min; i < led_max; i++) { | ||||||
|  |         set_starlight_dual_hue_color(i, params); | ||||||
|  |     } | ||||||
|  |     return rgb_matrix_check_finished_leds(led_max); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #    endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
 | ||||||
|  | #endif     // ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE
 | ||||||
							
								
								
									
										31
									
								
								quantum/rgb_matrix/animations/starlight_dual_sat_anim.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								quantum/rgb_matrix/animations/starlight_dual_sat_anim.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | |||||||
|  | #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT | ||||||
|  | RGB_MATRIX_EFFECT(STARLIGHT_DUAL_SAT) | ||||||
|  | #    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||||||
|  | 
 | ||||||
|  | void set_starlight_dual_sat_color(int i, effect_params_t* params) { | ||||||
|  |     uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); | ||||||
|  |     HSV      hsv  = rgb_matrix_config.hsv; | ||||||
|  |     hsv.v         = scale8(abs8(sin8(time) - 128) * 2, hsv.v); | ||||||
|  |     hsv.s         = hsv.s + (rand() % (30 + 1 - -30) + -30); | ||||||
|  |     RGB rgb       = hsv_to_rgb(hsv); | ||||||
|  |     rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool STARLIGHT_DUAL_SAT(effect_params_t* params) { | ||||||
|  |     if (!params->init) { | ||||||
|  |         if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) { | ||||||
|  |             int rand_led = rand() % RGB_MATRIX_LED_COUNT; | ||||||
|  |             set_starlight_dual_sat_color(rand_led, params); | ||||||
|  |         } | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     RGB_MATRIX_USE_LIMITS(led_min, led_max); | ||||||
|  |     for (int i = led_min; i < led_max; i++) { | ||||||
|  |         set_starlight_dual_sat_color(i, params); | ||||||
|  |     } | ||||||
|  |     return rgb_matrix_check_finished_leds(led_max); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #    endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
 | ||||||
|  | #endif     // ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 db
						db