qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

starlight_smooth_anim.h (779B)


      1 // Copyright 2022 @art-was-here
      2 // SPDX-License-Identifier: GPL-2.0+
      3 
      4 #ifdef ENABLE_RGB_MATRIX_STARLIGHT_SMOOTH
      5 RGB_MATRIX_EFFECT(STARLIGHT_SMOOTH)
      6 #    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
      7 
      8 static uint8_t phase_offsets[RGB_MATRIX_LED_COUNT];
      9 
     10 hsv_t STARLIGHT_SMOOTH_math(hsv_t hsv, uint8_t i, uint8_t time) {
     11     if (phase_offsets[i] == 0) {
     12         phase_offsets[i] = random8();
     13     }
     14     hsv.v = scale8(abs8(sin8((time + phase_offsets[i]) / 2) - 128) * 2, hsv.v);
     15     return hsv;
     16 }
     17 
     18 bool STARLIGHT_SMOOTH(effect_params_t* params) {
     19     if (params->init) {
     20         memset(phase_offsets, 0, sizeof(phase_offsets));
     21     }
     22     return effect_runner_i(params, &STARLIGHT_SMOOTH_math);
     23 }
     24 
     25 #    endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
     26 #endif     // ENABLE_RGB_MATRIX_STARLIGHT_SMOOTH