Pinboard
Ken Burns-style video generator that composites photos as vintage Polaroid snapshots on panoramic backgrounds, with smooth camera movement and music. Drop photos, a wide background image, and some music into input/, get a 4K video back.
Pinboard is one half of a birthday party video project split in two: Playbill took the program assembler, this took the photo wall. The full extraction story, what generalized cleanly and what took more work, is in Birthday at the Theater.
Generalizing it meant trading fixed assumptions for configuration: background matching fell back from filename keywords to alphabetical order, title text moved from a hardcoded string to a CONFIG parameter, and badge keep-out zones became configurable corner exclusions instead of an assumed shape.
The pipeline is one file, pipeline.py, six stages feeding forward with no config files or database between them. Layout uses Poisson disk sampling for initial placement, then SAT overlap detection and force-based relaxation to clear intersecting Polaroid frames. Each photo is weathered (desaturation, warm tint, sepia, vignette) with randomized parameters, and the video stage renders a four-phase camera path piped frame-by-frame into ffmpeg as raw RGB.
The photo wall pipeline turned out to be a general-purpose tool with no birthday-specific assumptions left in it.