Media Player — Beat-Synced Images, Video & Music
A desktop media player that turns folders of images, video, and music into a beat-synced show: music-driven cuts, a stack of live visual effects, and cyclable look and timing presets. ~9,500 lines, built one planned feature at a time.
I wanted a player that treats a folder of images, videos, and songs like a music video: media crossfading, effects firing on the beat, cadence shifting with the music, and every knob tunable and swappable while it runs. Off-the-shelf viewers do none of that. So I started building my own in October 2025 and have grown it one small feature at a time, most taking about an hour, each with a written plan before any code.
I direct the architecture, decide every feature, and review every addition. It is a single-file Python and PySide6 desktop app for Windows 11 with touchscreen support, about 9,500 lines as of this month. It plays images and video in one timeline, driven by real-time music analysis, with a full stack of beat-synced and always-on visual effects and a composable config layer so look and cadence can be authored, swapped, and cycled independently.
The app is organized as six tabs, each doing real work:
- Media: multi-folder and multi-file sources, images-plus-videos in one show, fit and anchor modes, EXIF rotation, per-video start and end behavior, an overlay-clips folder, shuffle.
- Music: folder shuffle, live "currently playing" state, and an audio-delay control to line the beat up with a TV that runs the sound ahead of the picture.
- Timing: music-sync versus timer, image beats (1/2/4), video beat-duration and playback-speed multipliers, and a weighted-random timing system.
- FX: beat-fired effects (brightness pump, strobe, bass glow, bass vignette, beat pause, black-and-white) and always-on effects (amplitude zoom, desaturate, pan drift), plus a gradient-map color grade, per-FX weights, and an FX playlist that swaps looks on a chosen beat interval.
- Test: an audio/video calibration metronome, play a click, watch the flash, drag until they align, apply the offset.
- Shortcuts: full keyboard control for slides, music, display, and FX.




The AI wrote every line of code and every test. I set the workflow: a markdown plan per feature, my approval, then the model implements, writes smoke tests, and delivers. I decide the architecture, name every file format, choose which bugs to fix and in what order, answer the model's clarifying questions before it writes, and catch regressions in real use. A recent config-layer refactor is typical: I said "settings should store paths, not values," answered three questions about load order and empty-pointer behavior, and the model produced the refactor, caught its own regression via smoke tests, and shipped. The newest feature's test suite runs 57 checks and passes.
A stable media player, built one reviewable feature at a time. Look and cadence are separately authorable and cyclable, and the whole thing runs from music analysis to on-beat effects in real time. See the demo video above.
Small features with a written plan and a smoke test are cheap to build and easy to verify. When I have already decided the architecture, the model delivers a working feature in about an hour, every time. When it has to guess, that hour stretches.