6174 — Kaprekar's constant (vertical short)
A 54-second, 1080×1920 / 30 fps motion-graphic math short built with Remotion, with a Manim-rendered spacetime-grid layer and a fully synthesized soundtrack.
What's here
| Path | Purpose |
|---|---|
src/Kaprekar.tsx |
composition: six scenes, backdrop, captions, audio |
src/scenes/ |
Hook · Rule · Cascade · Funnel · Proof · Loop |
src/captions.ts |
caption cues, frame-locked to the edit |
scripts/gen_audio.py |
procedural score + SFX (drone, heartbeat, ticks, riser, drops) |
scripts/gen_voice.py |
optional ElevenLabs VO with word timestamps |
manim/warp_grid.py |
ManimGL gravity-well grid (composited in the funnel) |
out/ |
renders, stills, publish kit |
Render
python3 scripts/gen_audio.py
# two-pass loudness target: -14 LUFS / -1.5 dBTP
ffmpeg -y -i public/audio/soundtrack_raw.wav \
-af "loudnorm=I=-14:TP=-1.5:LRA=11" public/audio/soundtrack.wav
# manim layer (already bundled at public/manim/warp.mp4); rebuild with:
# PYTHONPATH=/root/manim xvfb-run -a python3 -m manimlib manim/warp_grid.py WarpGrid \
# -w -r 720x1280 --fps 30 --video_dir out/manim && cp out/manim/WarpGrid.mp4 public/manim/warp.mp4
bash scripts/render.sh 6
Output: out/kaprekar-6174.mp4 (H.264, AAC 256k, faststart, −14 LUFS).
Math (verified by brute force over 0000–9999)
- 9,990 numbers reach 6174; the 10 repdigits (0000, 1111 … 9999) are the only exceptions.
- Max path: 7 steps.
- Distribution: 383 / 576 / 2,400 / 1,272 / 1,518 / 1,656 / 2,184 for 1–7 steps.
Voiceover
scripts/gen_voice.py needs a valid ELEVENLABS_API_KEY (51 chars). The key found on this
machine is 49 chars and is rejected by the API, so this cut ships with captions + score.
Add a valid key, run the script, then unmute/re-time captions and re-render.
Xet Storage Details
- Size:
- 1.85 kB
- Xet hash:
- 21e55feffe7cca36199314dd0054f734707899797d38082d7ef3296669d5a6bd
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.