Skip to content

Custom Animations

Custom animations are rich, software-rendered effects that run on the uchroma daemon. They offer far more visual complexity than hardware effects, support layering with blend modes, and can react to your keyboard input.

Overview

Each animation is implemented as a Renderer - a Python class that draws frames to a Layer. Renderers run in their own async tasks at configurable frame rates (typically 15-30 FPS). Multiple renderers can be stacked as layers and composited together.

Key Features:

  • Full RGB control over every LED
  • Configurable via traitlets (exposed to CLI and D-Bus)
  • Layering with blend modes (screen, soft_light, dodge, etc.)
  • Reactive effects that respond to keypresses
  • Color schemes and gradients

Ambient Effects

Plasma

Classic demoscene plasma effect

The iconic plasma effect from 90s demoscene - colorful, organic blobs that flow and merge across your keyboard.

ParameterTypeDefaultRangeDescription
color_schemecolorsQap palette2+ colorsGradient colors
presetchoiceQapColorScheme presetsPredefined color schemes
gradient_lengthint3600+Gradient resolution
bash
# Default plasma
uchroma anim add plasma

# With sunset colors
uchroma anim add plasma --preset sunset

# Custom gradient
uchroma anim add plasma --color-scheme '#ff006e' '#8338ec' '#00f5d4'

Visual: Smooth, flowing blobs of color that merge and separate like oil in water. The effect uses sine wave interference patterns to create organic, ever-changing shapes.


Rainbow

Flowing HSV gradient

A simple but satisfying rainbow that flows across your keyboard. Also known as "Rainflow".

ParameterTypeDefaultRangeDescription
speedint80-20Flow speed
staggerint40-100Row offset for diagonal effect
bash
# Default rainbow
uchroma anim add rainbow

# Fast, steep diagonal
uchroma anim add rainbow --speed 15 --stagger 8

# Slow, horizontal bands
uchroma anim add rainbow --speed 3 --stagger 0

Visual: A full-spectrum rainbow gradient scrolling horizontally. The stagger parameter offsets each row, creating a diagonal wave effect.


Aurora

Northern lights curtains

Shimmering vertical curtains of light that undulate horizontally, mimicking the aurora borealis.

ParameterTypeDefaultRangeDescription
speedfloat1.00.2-3.0Animation speed
driftfloat0.30.1-1.0Horizontal drift amount
curtain_heightfloat0.70.3-1.0How far curtains extend down
shimmerfloat0.30.0-1.0High-frequency brightness variation
color_driftfloat0.50.1-2.0Color shift speed
color_schemecolorsgreen/teal/purple2+ colorsAurora colors
bash
# Classic northern lights
uchroma anim add aurora

# Fast, vibrant aurora
uchroma anim add aurora --speed 2.0 --shimmer 0.5

# Subtle, slow drift
uchroma anim add aurora --speed 0.5 --drift 0.2 --shimmer 0.1

Visual: Glowing vertical curtains that wave horizontally, fading from bright at the top to dimmer at the bottom. The default green-teal-purple palette captures the classic aurora look.


Nebula

Cosmic cloud formations

Soft, flowing cosmic clouds using procedural noise - like gazing into a nebula.

ParameterTypeDefaultRangeDescription
drift_speedfloat0.30.1-1.0Cloud movement speed
scalefloat0.150.05-0.4Cloud size (smaller = larger clouds)
detailint21-3Noise octaves (more = finer detail)
contrastfloat0.60.3-1.0Color contrast
base_brightnessfloat0.50.3-0.7Minimum brightness
color_shiftfloat0.30.0-1.0Color variation amount
color_schemecolorspurple/pink/cyan/green2+ colorsNebula colors
bash
# Cosmic nebula
uchroma anim add nebula

# Large, slow-drifting clouds
uchroma anim add nebula --scale 0.08 --drift-speed 0.15

# High contrast, detailed
uchroma anim add nebula --detail 3 --contrast 0.9

Visual: Soft, billowing clouds of color that slowly drift and morph. Uses fractal Brownian motion for organic, natural-looking formations.


Ocean

Rolling waves with caustics

Horizontal waves with bright highlights on wave crests, simulating light playing on water.

ParameterTypeDefaultRangeDescription
wave_speedfloat1.00.3-2.5Wave animation speed
wave_heightfloat0.50.2-1.0Wave amplitude
foam_thresholdfloat0.50.2-0.8When waves produce foam
caustic_intensityfloat0.30.0-0.6Brightness of caustic highlights
saturationfloat0.80.4-1.0Color saturation
color_schemecolorsdeep blue gradient2+ colorsWater colors
bash
# Calm ocean
uchroma anim add ocean

# Stormy seas
uchroma anim add ocean --wave-speed 2.0 --wave-height 0.9 --foam-threshold 0.3

# Tropical lagoon
uchroma anim add ocean --wave-speed 0.5 --color-scheme '#006994' '#40E0D0' '#ffffff'

Visual: Horizontal wave patterns moving across the keyboard, with brighter "caustic" highlights where waves crest. Foam appears on steep wave slopes.


Vortex

Swirling spiral tunnel

A hypnotic vortex centered on your keyboard with spiral arms flowing inward or outward.

ParameterTypeDefaultRangeDescription
arm_countint31-6Number of spiral arms
twistfloat0.30.1-1.0Spiral tightness
flow_speedfloat1.00.3-3.0Radial flow speed
flow_directionint1-1 to 1Inward (-1) or outward (1) flow
rotation_speedfloat0.50.1-2.0Spiral rotation speed
center_glowfloat3.01.0-5.0Bright center radius
ring_densityfloat0.50.2-1.5Radial ring frequency
color_schemecolorspink/purple/blue/teal2+ colorsVortex colors
bash
# Classic vortex
uchroma anim add vortex

# Fast inward spiral
uchroma anim add vortex --flow-direction -1 --flow-speed 2.0

# Tight 6-arm spiral
uchroma anim add vortex --arm-count 6 --twist 0.8

Visual: A swirling tunnel effect with spiral arms radiating from the center. The center glows brighter, and depth rings create a 3D tunnel illusion.


Retro Effects

Copper Bars

Classic Amiga demoscene raster bars

Horizontal color bands flow and warp with sine-wave displacement - the iconic "copper bar" look from 80s/90s demos.

ParameterTypeDefaultRangeDescription
speedfloat1.00.2-3.0Animation speed
wave_amplitudefloat0.50.0-2.0Vertical wave intensity
wave_frequencyfloat0.80.2-2.0Wave frequency
band_widthint4010-100Color band width
horizontal_waveboolfalse-Add per-column variation
color_schemecolorsRainbow2+ colorsBar colors
presetchoiceRainbowColorScheme presetsPredefined palettes
gradient_lengthint36060-720Gradient resolution
bash
# Classic rainbow bars
uchroma anim add copper_bars

# With horizontal wave
uchroma anim add copper_bars --horizontal-wave

# Neon palette, fast
uchroma anim add copper_bars --preset neon --speed 2.0 --wave-amplitude 1.0

Visual: Horizontal bands of color flowing vertically, with sine-wave displacement creating a wavy, organic motion. A tribute to the Amiga demo scene.


Geometric Effects

Kaleidoscope

Rotating symmetric patterns

Hypnotic geometric patterns using polar coordinate transforms and n-fold symmetry.

ParameterTypeDefaultRangeDescription
symmetryint63-12Number of symmetric segments
rotation_speedfloat0.50.1-2.0Pattern rotation speed
pattern_modechoicespiralspiral/rings/wavesPattern type
ring_frequencyfloat0.50.2-1.5Radial pattern frequency
spiral_twistfloat2.00.5-5.0Spiral tightness (spiral mode)
hue_rotationfloat30.00.0-120.0Color rotation speed
saturationfloat0.90.5-1.0Color saturation
color_schemecolorspink/yellow/teal/purple2+ colorsPattern colors
bash
# Classic kaleidoscope
uchroma anim add kaleidoscope

# 8-fold symmetry with rings
uchroma anim add kaleidoscope --symmetry 8 --pattern-mode rings

# Slow, tight spiral
uchroma anim add kaleidoscope --rotation-speed 0.2 --spiral-twist 4.0

Visual: Symmetric patterns that rotate and morph, creating mandala-like effects. The symmetry parameter controls how many times the pattern repeats around the center.


Organic Effects

Metaballs

Organic lava lamp blobs

Soft, blobby shapes that slowly drift, merge when close, and split apart - like a lava lamp.

ParameterTypeDefaultRangeDescription
blob_countint42-8Number of blobs
speedfloat0.50.1-2.0Blob movement speed
thresholdfloat1.00.5-2.0Merge threshold
glow_fallofffloat2.01.0-4.0Glow intensity falloff
base_brightnessfloat0.20.0-0.4Background brightness
blob_radiusfloat3.01.5-5.0Blob size
color_schemecolorspink/purple/blue/teal2+ colorsBlob colors
bash
# Classic metaballs
uchroma anim add metaballs

# Many small blobs
uchroma anim add metaballs --blob-count 8 --blob-radius 2.0

# Large, slow, glowy
uchroma anim add metaballs --blob-count 3 --blob-radius 4.5 --speed 0.2

Visual: Soft, glowing blobs that drift around, merging seamlessly when they get close and splitting apart as they separate. Classic demoscene algorithm.


Motion Effects

Comets

Streaking light trails

Bright points zoom horizontally across the keyboard, leaving glowing trails.

ParameterTypeDefaultRangeDescription
comet_countint31-6Number of comets
speedfloat1.50.5-4.0Movement speed
trail_lengthint83-15Trail length in pixels
trail_decayfloat0.30.1-0.6Trail fade rate
head_brightnessfloat1.00.7-1.0Comet head brightness
color_schemecolorscyan/magenta/yellow/green2+ colorsComet colors
bash
# Shooting stars
uchroma anim add comets

# Single fast comet with long trail
uchroma anim add comets --comet-count 1 --speed 3.0 --trail-length 12

# Many slow comets
uchroma anim add comets --comet-count 5 --speed 0.8

Visual: Bright white comet heads streak across the keyboard, leaving colorful fading trails behind them. Multiple comets at different speeds create depth.


Particle Effects

Embers

Warm glowing particles

A field of warm glowing particles that drift slowly upward, pulse in brightness, and occasionally flare brighter.

ParameterTypeDefaultRangeDescription
particle_countint83-15Number of embers
drift_speedfloat0.30.1-1.0Upward drift speed
pulse_speedfloat1.50.5-4.0Brightness pulse rate
glow_radiusfloat2.01.0-4.0Ember glow size
colorcolor#ff6b35-Ember color (warm orange)
base_brightnessfloat0.60.3-0.8Base glow intensity
flare_chancefloat0.020.0-0.1Random flare probability
bash
# Campfire embers
uchroma anim add embers

# Many small, fast-rising embers
uchroma anim add embers --particle-count 12 --drift-speed 0.6 --glow-radius 1.5

# Slow, pulsing with frequent flares
uchroma anim add embers --pulse-speed 0.8 --flare-chance 0.05

Visual: Warm orange-red particles float upward like embers from a dying fire. They pulse gently and occasionally flare to full brightness.


Reactive Effects

Reactive effects respond to your keyboard input, creating visual feedback as you type.

Ripple (Custom)

Ripples emanate from keypresses

When you press a key, colorful circular ripples expand outward from that position.

ParameterTypeDefaultRangeDescription
ripple_widthint31-5Ring thickness
speedint51-9Ripple expansion speed
presetchoice-ColorScheme presetsColor preset
randombooltrue-Random rainbow colors
colorcolor--Fixed color (disables random)
bash
# Rainbow ripples
uchroma anim add ripple

# Single color ripples
uchroma anim add ripple --color '#00ffff' --no-random

# Fast, thin ripples with preset
uchroma anim add ripple --preset sunset --speed 8 --ripple-width 1

Visual: Each keypress spawns an expanding circular wave. Multiple keypresses create beautiful overlapping ripple patterns. Colors can be random, from a preset, or fixed.

Note: Requires a device with key input support (keyboards).


Reaction

Keys change color when pressed

A simple reactive effect where keys flash a color when pressed and fade back to a background color.

ParameterTypeDefaultRangeDescription
speedint61-9Fade speed (9 = fastest)
background_colorcolorblack-Resting color
colorcolorwhite-Flash color
bash
# White flash on black
uchroma anim add reaction

# Cyan flash on dark blue
uchroma anim add reaction --color cyan --background-color '#001133'

# Fast green flash
uchroma anim add reaction --color '#00ff00' --speed 9

Visual: Keys rest at the background color. When pressed, they instantly flash to the accent color, then smoothly fade back. Creates a gradient trail as you type.

Note: Requires a device with key input support (keyboards).


Typewriter

Warm incandescent glow fade

Keys illuminate with a warm, incandescent glow when pressed and slowly fade like old typewriter keys. Creates a "heat map" of your typing.

ParameterTypeDefaultRangeDescription
glow_colorcolor#ffaa44-Glow color (warm amber)
decay_timefloat1.50.5-5.0Seconds to fade to ~10%
spreadfloat0.30.0-0.6Spread to neighboring keys
base_brightnessfloat0.150.0-0.3Ambient glow level
peak_brightnessfloat1.00.7-1.0Maximum brightness
warmthfloat0.30.0-0.6Shift toward white at peak
bash
# Classic typewriter
uchroma anim add typewriter

# Slow decay, high spread (heat map)
uchroma anim add typewriter --decay-time 3.0 --spread 0.5

# Cool blue glow, no spread
uchroma anim add typewriter --glow-color '#4488ff' --spread 0.0

Visual: Keys glow warmly when pressed, with the brightness shifting toward white at peak intensity (like heated metal). The glow spreads slightly to neighbors and slowly fades, leaving a visual trail of your recent typing.

Note: Requires a device with key input support (keyboards).


CLI Quick Reference

bash
# List all available renderers with parameters
uchroma anim --list

# Add a renderer (auto-assigns z-index)
uchroma anim add <renderer> [--param value ...]

# Add at specific z-index
uchroma anim add -z 0 plasma

# Show active layers
uchroma anim show

# Modify a layer's parameters
uchroma anim set <zindex> --param value

# Remove a layer
uchroma anim rm <zindex>

# Stop all animations
uchroma anim stop

# Pause/unpause
uchroma anim pause

Layering Examples

Stack multiple effects for complex visuals:

bash
# Aurora with reactive ripples
uchroma anim add aurora --speed 0.5
uchroma anim add ripple

# Nebula with typing heat map
uchroma anim add nebula --drift-speed 0.2
uchroma anim add typewriter --spread 0.4

# Ocean with shooting comets
uchroma anim add ocean --wave-speed 0.7
uchroma anim add comets --comet-count 2 --speed 2.0

Higher z-index layers render on top. Blend modes determine how layers combine (see Animation System for details).

Released under the LGPL-3.0 License.