Motion effects¶
Effect/control identities and help come from the authenticated catalogue. The phone owns detailed configuration; the browser has common and selected-effect parameters. Historical masks and old protocol-1 clients don't define the current UI.
Palettes covers the full base-effect set. This page specifies the motion-reactive renderers; overlays are separate layers. All output retains gamma, trims, brightness/current limits and normal render ownership.
Output envelope¶
These three renderers describe an output fraction P, not a pre-gamma colour fraction. They multiply all logical RGB channels by P^(1/gamma), so the unchanged LED gamma stage produces P times the same palette colour's Static output. Fully filled Liquid light therefore matches Static at the same colour, brightness and gamma before background, trims and current limiting. An authored dim colour remains dim, black remains black, and RGB ratios stay intact; no frame-maximum normalisation or independent channel clipping is introduced.
The inverse curve has 129 uint16 samples, at P=(i/128)^2, interpolated in P. It is generated once per gamma change and retained across effect/topology changes. There is no per-frame allocation or per-pixel exponentiation in these renderers. The existing gamma/background/overlay caches, 50 Hz effects, 500 Hz target output, dithering/fallback, render ownership, brightness ceiling and current limiter are unchanged. Current limiting can still reduce a bright or dense frame: these are brightness targets before the shared limiter, not a promise to exceed the configured budget.
Motion twinkle¶
Activity A is clamp((energy - 0.03)/0.32, 0, 1), saturating at energy 0.35, with the existing 80 ms attack and 500 ms release. Published energy already contains sensitivity; it is not scaled a second time. Stationary noise below 0.03 has no effect.
At a new cycle, admission probability is 0.05 + 0.95A. A visible cycle takes (1.2–2.4)/(1+A) seconds at Speed 1; a rejected dark wait takes (0.2–0.4)/(1+3A) seconds. Attack occupies the first third and decay the remaining two thirds, with smooth endpoints. Existing visible cycles finish without restarting, even when activity changes. Cycle boundaries discard elapsed overshoot instead of replaying missed cycles. A smooth floor of 0.08A responds immediately beneath the independent twinkles. Colours remain anchored along the full outline, including bands.
Liquid light¶
Geometry and spring behaviour are unchanged: 50% neutral fill, calibrated ±25° tilt at Sensitivity 1, roll ±30% height, pitch ±20%, fill bounded to 5–95%, 12% feathered surface, 2 Hz spring with damping ratio 0.65. Speed changes spring frequency, not held geometry. Its old 0.75 intensity multiplier is removed; the fill mask is now the output envelope. Missing calibration/motion targets neutral fill.
Motion aurora¶
Two broad independently phased waves illuminate a travelling ordered palette, rather than the previous four narrow clouds over fixed colours. Blended palettes interpolate cyclically, including the last-to-first seam. Banded palettes retain their exact stored colours, hard boundaries and sequence. One sequence wraps along each logical outline; neither edge is mirrored at the tip.
With W the mean of the two smooth cosine waves, output is P = clamp(0.04 + 0.16A + (0.42 + 0.38A)W + tilt bias, 0, 1). Activity uses the same mapping/envelope as retuned Motion twinkle. Without steering, flow rises from 0.035 to 0.155 turns/s. Calibrated signed yaw, smoothed for 80 ms and sensitivity-scaled once, blends towards up to ±0.5 turns/s at ±90°/s. Velocity follows its target with a 300 ms wall-time constant; opposite turns brake and reverse it. Palette position advances by velocity, while the waves advance at 0.7v and 0.43v + 0.008 turns/s, all scaled by animation Speed.
Calibrated roll/pitch at ±25° and Sensitivity 1 use 200 ms wall-time smoothing. Roll adds up to ±0.20 output per ear, favouring the same logical lower ear as Liquid light. Pitch adds up to ±0.15 along height, favouring tips for positive pitch and bases for negative pitch. Held tilt holds this distribution. Missing calibration disables steering and bias while retaining general activity response. Missing/stale motion relaxes activity, velocity and bias to idle. Phases remain continuous.
State, settings and compatibility¶
Settings edits preserve animation phases and active particle envelopes. Effect or topology changes initialise animation, retaining the gamma cache. All timesteps are bounded to 100 ms; phases wrap every turn. The existing 100 ms stale-sample cutoff and finite-input checks remain. Black-output pauses freeze phases and discard motion excitation; Aurora drops steering/bias to idle, Liquid drops spring momentum, and Twinkle retains offsets but clears visible cycles. Settings-save holds retain the latched frame. Calibration changes clear Aurora steering/bias without rewinding its palette/waves. Other effects' pause behaviour is unchanged.
Inertia and Stardust¶
Inertia (15) uses calibrated signed yaw to push two comets. Full input is 90°/s, idle drift is 0.06 turns/s, velocity is bounded to ±0.8 turns/s with 0.8 s damping and 20% tails. Opposite turns brake/reverse. Missing calibration or motion leaves its idle appearance.
Stardust (16) adds up to 12 blooming stars per ear above quiet sparkle. Activity changes births from 1 to 10/s; bloom takes 180 ms and decay 1 s. A full pool skips births without eviction or backlog. Mounting calibration is unnecessary.
Mapping and acceptance¶
On legacy strips, palette colours follow short-edge base → tip → long-edge base. V2 uses mapped ring/centre adapters: liquid uses global physical height, aurora uses physical X/height, and loop patterns repeat independently around each ring. Reversal belongs to the physical output layer.
IDs 3, 4, 8 and 10 are permanently retired. Settings migration preserves supported identities; clients discover membership rather than interpreting an effect mask.
Dated traces and mounted comparison procedures are preserved in the retune record and original effect record. Host frame checks don't establish mounted direction, optical appearance or loaded timing.