From ae80be329a912df2ea04a20e49503488b06406a8 Mon Sep 17 00:00:00 2001 From: jim kolpack Date: Thu, 8 Oct 2026 22:07:05 -0400 Subject: [PATCH] Re-enable base jitter capped to +-1px; speed up bursts, shorten pauses Re-enabled _glitch_base_jitter per request, but capped the shift to +-1px instead of splitting the difference between the two bands' own (larger) shift values -- a full-frame shift reads very differently than a thin band shifting, so it needed to stay subtle. Confirmed no black border across a full worst-case render (strong zoom, random position, all 200 frames, all four corners). Also sped up the RGB-split jitter (GLITCH_HOLD_TICKS 5 -> 2, ~100ms per state) and shortened the pause between bursts (GLITCH_PAUSE_TICKS 15 -> 3, ~150ms). Payload stayed comfortably under budget despite both changes adding more distinct frames to encode: 355KB worst case (strong zoom + random position), vs. the 460KB device limit. --- subwave_nowplaying.star | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/subwave_nowplaying.star b/subwave_nowplaying.star index 6f10272..f053e95 100644 --- a/subwave_nowplaying.star +++ b/subwave_nowplaying.star @@ -370,8 +370,8 @@ def _zoom_transformation(art_bytes, zoom_scale, zoom_position, subsonic_id): # (top/height as a fraction of ART_SLOT) are loosely modeled on the one # keyframe that was visible: roughly the top third and an overlapping # middle band, each about 30% of the frame's height. -GLITCH_HOLD_TICKS = 5 # ~250ms per jitter state at the default 50ms/tick -GLITCH_PAUSE_TICKS = 15 # ~750ms of clean art between bursts +GLITCH_HOLD_TICKS = 2 # ~100ms per jitter state at the default 50ms/tick +GLITCH_PAUSE_TICKS = 3 # ~150ms of clean art between bursts GLITCH_STATES_PER_CYCLE = 4 # A larger pool than any one burst needs, so repeated cycles (see @@ -480,14 +480,14 @@ def _glitch_jitter(zoom): sequence = [] for cycle_index in range(GLITCH_REPEATS): for top1, h1, shift1, hue1, top2, h2, shift2, hue2 in _glitch_states_for_cycle(cycle_index): - # The art itself nudging along with the bands (not just the - # bands moving over a static image) was tried here via - # _glitch_base_jitter, splitting the difference between the - # two bands' own shift values -- commented out, not deleted, - # pending a call on whether it's actually working well. - # base_shift = int((shift1 + shift2) / 2.0) + # The art itself nudges along with the bands, not just the + # bands moving over a static image. Capped to +-1px (rather + # than splitting the difference between the two bands' own, + # larger shift values) -- a full-frame shift reads very + # differently than a thin band shifting, so it stays subtle. + base_shift = max(-1, min(1, int((shift1 + shift2) / 2.0))) state = render.Stack(children = [ - # _glitch_base_jitter(zoom, base_shift), + _glitch_base_jitter(zoom, base_shift), _glitch_band(zoom, top1, h1, shift1, hue1), _glitch_band(zoom, top2, h2, shift2, hue2), ])