Frame from One morphing UI shape on a 120 BPM beat

One morphing UI shape on a 120 BPM beat

A 14-second square loop in which one cursor-driven shape morphs on the beat through a loader, music player, slider, toggle, tabs, chart, command palette, and button. The creator shared it as a reusable template that asks you for your UI states and song first.

“this entire video is code, 0 after effects”

PromptFull
<inputs>
Ask me for: 8 to 12 UI states I want the shape to become (e.g. button, loader, player, slider, toggle, tabs, chart, command palette, toast), pure black and white or one accent color, and a royalty-free song around 120 BPM (e.g. Mixkit, free for commercial use).
</inputs>

<direction>
Dribbble-level UI motion. One shape, never cut: every state is the same element morphing its size, radius and color while its content swaps with a short blur. A cursor drives every change with real clicks and drags. Light warm-gray canvas, black and white components, one clean UI font (Geist). Springs everywhere, a tiny overshoot at most. The camera zooms so each state fills the frame. The last frame is the first frame, so it loops.
Banned: bouncy easing, particle bursts, glows, gradients on UI chrome, mismatched icon strokes, dead time, anything that looks like a template.
</direction>

<structure>
120 BPM, 7 bars, something happens on every beat.
Button → loader → check → dynamic island → music player with a play/pause morph → scrub the progress bar → it becomes a volume slider that stretches when dragged past max → a toggle flips on the beat → the knob becomes a liquid tab indicator → the tabs open into a chart that draws itself, with a tooltip on hover → it collapses into ⌘K → type to filter → enter → toast → back to the button.
</structure>

<build>
1. One HTML file, square 1440x1440. Every style is computed from time inside seek(t): no CSS transitions, no timers, no state carried between frames.
2. Springs are closed-form step responses. A value that changes target many times is the sum of one spring per change, so it stays a pure function of time.
3. The tab indicator's two edges ride different springs, so the leading edge stretches ahead of the trailing one. Same trick for the toggle knob.
4. Drags are direct manipulation: while the cursor is held, the value is computed from its position. On release it springs back from wherever it was.
5. Analyze the song with numpy for the beat grid and start on a downbeat. Place every UI sound by its measured peak.
6. Render with Playwright: 4 subframes per frame, blended with ffmpeg tmix for motion blur at 60fps.
7. Render one frame per beat before the full render. Fix anything off the grid, cramped or hard to read.
</build>

<gotchas>
Never put will-change on anything the camera scales or the text renders blurry. Text that swaps inside a morphing container needs its own enter and exit timing or it overlaps. Make the last frame identical to the first, cursor position and speed included, or the loop stutters.
</gotchas>

<start>
Ask me for the inputs, then show me the state list on the beat grid before you write any code.
</start>

Make it yours. Answer the <inputs> questions with your own states, colour, and song. To change the look, edit the <direction> block, for example "Light warm-gray canvas, black and white components, one clean UI font (Geist)".

Make it hereFree runs soon

You'll need

  • Your 8 to 12 UI states, a colour choice, and a royalty-free song around 120 BPM; the agent asks for these first
  • Python with numpy, plus Playwright and FFmpeg, for the beat grid and the render
How it was made

Published as a template: it has the agent ask for 8 to 12 UI states, a colour, and a royalty-free song of about 120 BPM, then show the state list on the beat grid before coding. The creator's answers weren't published. Claude picked and downloaded the song from the internet, and Claude also wrote the template itself, the creator says. Effort was set to max.

Posted Sep 24, 2026 · X · 12k likes · 1M views · 266 comments

Prompt from: Post body

Look notesby Reference

One black-and-white interface element on a warm light-gray canvas, seen as a loader, a music player, a slider, a toggle, segmented tabs, a chart card, a command palette, and a Generate button, with a cursor in most frames.

Color
Warm light gray background, black and white components, and one pink-to-violet gradient album cover in the player.
Type
One clean sans throughout: "motion study 02 / made in code" in the player, Day / Week / Month tabs, a large "84,320 total views" figure, a command palette filtering on "frame" with "Every frame is code", and "Generate".
Framing
Square frame with the element centered and large, soft drop shadows, and an arrow cursor on each control.
Sound
A royalty-free song that Claude picked and downloaded, per the creator.
Structure
Loader, music player, progress slider, toggle, Day/Week/Month tabs, a views chart with a hover tooltip, a fading command palette, the palette filtering on "frame", and a Generate button.

More like this

0:29

Apple-keynote film for a photo-print app

Opus 5.5 · HTML and CSS

0:12

Looping glassmorphism UI launch clip

Codex · HyperFrames

0:24

Speaker carousel promo for UDC 2026

Partial prompt · Opus 5.5 · Adobe After Effects

0:07

Progress-ring loader bursting into READY

Partial prompt · HyperFrames

0:16

Showreel of type, form, space and time

Opus 5.5 · HyperFrames

0:57

Collage-style vertical reel about a novel

Prompt described · Opus 5.5 · HTML and CSS

2:30

Minimalist motion reel for a Mac notch app

Claude.ai

0:20

Street-poster kinetic type identity bumper

Opus 5.5 · HTML and CSS

0:32

Motion designer showreel, Opus vs Astra

Claude Code · skia-python

0:20

Infinite-zoom loop through vintage objects

Claude.ai

0:04

Transparent YouTube subscribe lower third

Claude Code · Remotion

0:30

30-second Reddit motion graphics reel

Claude Code · Plain JavaScript

0:40

Black-and-white launch film for Grok 4.7

Opus 5.5 · HTML

0:21

Slow-reveal logo sting for TypingMind

Opus 5.5

0:15

VTuber dance-cover motion graphics edit

Opus 5.5

0:15

Flat-color 15-second motion design reel

Opus 5.5

0:08

Joy-Cons snap onto an SVG Switch and boot

Opus 5.5 · SVG

0:07

Animated tweet card with a 3D tilt

Partial prompt · HyperFrames

0:08

Before and after: clutter to one card

Partial prompt · HyperFrames

0:08

Flight arc from San Francisco to Tokyo

Partial prompt · HyperFrames

0:06

Mountain logo line-draw reveal

Partial prompt · HyperFrames

0:05

Particle logo sting with swirl transition

Partial prompt · HyperFrames

0:13

Viral showreel prompt run three times

Claude Code

1:16

Indian civilisation as a motion showreel

Claude Code · Three.js

0:03

SVG Nintendo Switch that snaps and boots

LMArena · SVG

0:06

Glitch effect on a neon sample card

Claude Code · Remotion

0:04

Magnifying glass gliding over text

Claude Code · Remotion

0:07

Shapes that morph into the word REMOTION

Gemini · Remotion

0:10

Map route from LA to New York to Paris

Claude Code · Remotion

0:10

Flat logo turned into spinning 3D metal

Claude Code · Remotion