Animation
Empty Room: a cut-paper music video
My own song and my own film, start to finish: I wrote the lyrics, generated the music, wrote the story and made the video. A proof of concept for telling a music video's story in cut paper: a love that builds a house and a house that falls with it. The whole film is code. Every sheet, figure and camera move is generated in the browser and cut to the song's drum hits to the millisecond.
All of it is mine
Every part of this piece is my own work: the lyrics, the music (generated from my direction), the story and its storyboard, the characters, and the video itself. There was no client and no brief. I went from a blank page to a finished 4K music video on YouTube.
The idea
A proof of concept: can a music video tell a real story in cut paper, like a paper diorama photographed shot by shot, without a single frame drawn by hand? “Empty Room” is a breakup song, so the film follows one couple through one year. They build a house together under their tree. Then he leaves, and as the love dies, so does the house. The room empties, the tree dies, the storm takes the roof and nature takes the rest. The song is mapped onto the seasons, from spring to the storm, and a single season value drives the colour, the leaves, the ravens, the rain and the state of the house.
How it was built
The film is a web page. Every scene is built in three.js from flat sheets of paper with real thickness and an old, stained texture. I gave the direction and judged every cut. An AI coding agent (Claude Code) wrote the code from it, shot by shot, against a growing guidelines document that collected every rule we agreed on.
1. The look of photographed paper. A lens pass worked out from the scene’s depth makes it look like a small set filmed through a real camera:
- each sheet throws a soft shadow on the one behind it
- cut edges catch the light as a thin pale line
- depth of field is miniature-shallow, with focus pulls inside shots
- bright things (the bulb, lit windows, lightning) glow
Only the bad memories get film grain and print damage: scratches, dust and a hair caught in the gate. The rest of the film stays clean.
2. Animated like paper. Figures and props move a pose at a time, about twelve poses a second, the way cut-paper animation does. The poses are counted from the drum hits, so every hit lands on a new pose. The camera never shakes but always glides in depth, arcing round its subject so the paper layers slide against each other.
3. Cut to the millisecond. The song is split into stems (drums, bass, vocals, the rest) with Demucs, and the beats and bars come from Beat This! (about 176 BPM). Every cut is moved onto a measured attack: a drum hit within 42 ms, or else the nearest attack on another stem. The median move was 6.8 ms. A bar-by-bar song map (loudness, kicks and snares, drops, lyric cues) is the reference for timing anything new.
4. Rules against glitches. A ravens rule, for example: a raven sits only on something real (a fence post, a bough, the chimney). When that thing goes, the raven flies off and does not come back. Each section was storyboarded, scripted shot by shot and re-cut until it worked.
5. Export. An export mode draws every frame at its exact time and streams the raw pixels to a small Python server, which pipes them into ffmpeg together with the song. The result is a 4K, 25 fps file, rendered frame-exact whatever the speed of the machine.
Generated reference pictures
Want something like this built?
Write to me with what you have in mind. I reply within two working days.
Write to me
Next project Airport stands3D rendering