← Back to the tea house
← LEDGER
AO-056 / Oct 17, 2026

A love song's music video, made five ways with AI

Claude made five music videos for a love song from my game, each a different way. What broke in each, how the newest keeps its setting consistent, and how it compares with the one drawn in code.

Claude has now made five music videos for “Moonlight at the Waterline”, the love song from BLACKWATER, the cave-diving zombies game I built in four days. In the song a man waits all night at the end of a stone jetty with a lantern, while someone he loves dives a sea cave across the bay. We never see who.

The versions made with AI models kept failing the same way. The model copied whatever it was shown, mistakes included. So the new one paints every shot of him over a 3D set of the jetty, blurred until only the layout is left to copy. I think the one drawn in code might still be the better video.

The new one is 34 shots over 2:45, painted to look like a film still from 1968. Most of the motion comes from MiniMax-H3 (H3 for short), an AI video model. Three shots of rising bubbles are drawn in code. The final render ran on a rented graphics card for $2.44.

The new one next to the one drawn in code

I like the version eight agents drew in code a lot. Both are timed to the same song, so they play in sync. Click a lyric line and both jump to it.

  1. (the jukebox / the title)
  2. The tide is slowly creeping up the sand
  3. The evening breeze is chilling on my hand
  4. Your empty coat is sitting here with me
  5. I'll watch the silver ripples on the sea
  6. And I'll wait for you
  7. The lighthouse throws its long and lonely beam
  8. While far below you chase an underwater dream
  9. I check my pocket watch and sigh once more
  10. The bubbles rising slowly to the shore
  11. You're a little late, my love
  12. Moonlight at the waterline
  13. I'm keeping vigil by the sea so blue
  14. But deep down dark where secrets stay
  15. The heavy water keeps the things it likes
  16. So please come back to me
  17. I see your oxygen bubbles rise
  18. Floating up into the starry skies
  19. My heart beats double time
  20. Under the pale moonshine
  21. Oh, tell me you're alright
  22. The water keeps what it likes
  23. But you will return
  24. Won't you, my love?
Moonlight at the Waterline, v4 and the code-drawn cutBoth 2:45 on the same song · web copies 1280×720

The code version never loses its one idea, his lantern above the water and her lamp below. Every word is readable before it’s sung. Its weak spots are hands, her coat, and a jump from kneeling to sitting at the drop. The new one has a real place. The jetty and the town stay the same from every angle, and the camera rises, circles him and sinks through the waterline. It also took three rounds of stills and seven thrown-out takes, and one round sat twelve days waiting on my answer.

What each version taught me

  • v1 copied an old story draft from the game’s folder. It put the wrong lover on the jetty, because my prompt never said who sings.
  • v2 fixed the casting. Up close, its people still looked like game models.
  • The whole-song H3 cut copied its gray guide. It repeated one composition about a dozen times, and every shot lasted exactly one bar.
  • The code version had no image or video model that could copy anything. Eight agents made it in 80 minutes, and that might be why it holds up so well.
  • The new one copied its 3D set too, box houses and all. Blurring the set before painting over it fixed that.
  • Naming a light’s owner paints the owner. “A diver’s lamp” put a diver in 9 of 11 cave frames.
  • A painted last frame has to fit the camera move. When it didn’t, H3 jumped straight to it instead of moving.

Five videos, one song

In the player above, the new one is labeled v4.

VersionDateHow it was madeWhat was wrong
v127 Sep3D models built in Blender, filmed inside the Godot game engineThe wrong person on the jetty, the cave creature shown instead of hinted at, lyrics out of frame
v227 SepThe same, after one paragraph of notes from meRight casting, crude faces up close
The H3 cut27 to 28 Sepv2’s frames as a guide for the MiniMax-H3 video modelThe same shot again and again, every cut on the bar, small soft lyrics
The code version4 OctEight agents drawing every frame in code, no image or video modelHands, and a coat that reads like a loaf of bread
v4, the new one17 OctAI paintings over a 3D set, animated by MiniMax-H3Seven takes thrown out before it was done

The first three versions

Claude built the first two cuts in Blender, a free 3D program, and filmed them inside Godot, a free game engine. There was no AI video at all. This is v2.

So I asked for the whole song through H3. Claude gave it v2’s frames as a guide (a previs, a rough version of every shot). It also painted over those frames with Qwen-Image, an AI image model, to make the still each clip ends on. That came to 33 six-second clips chained end to end, about 2.9 hours on my laptop’s graphics card.

It looked more like a film and less like a game. I told Claude it was “a lot better, but is still extremely subpar”. H3 copied the guide’s one composition, him from behind with the moon on the water, about a dozen times. Every shot lasted exactly one bar, so the edit has no shape.

Everything else wrong with the H3 cut
  • The lyrics were pasted back on in spots chosen for the Godot framing, small and thin over different pictures.
  • Her gear changed from shot to shot.
  • Bubbles rose to a visible surface, even though the prompt said you never see the surface.
  • It rendered at 736x416, so it was soft.

Here are frames from across the whole cut. It’s row after row of the same shot.

A contact sheet of the H3 cut: row after row of the man from behind on a jetty under the moon, with a few underwater frames between

What I cut from the first plan

The new one started with a brief that called v2 the bar to beat. Claude’s first board had 38 painted keyframes. A board is a set of stills, one per key moment, that I OK before any video gets made. I cut these four ideas.

The diver's face behind an oval mask, underwater
Her facecut: nobody should know who dives
A warm memory: the woman's head on the man's shoulder on a moonlit beach
The flashbackcut, for the same reason
Bubbles rising along the guide line toward a bright surface
Bubbles at the surfaceshe's far off, not under him
The man as an old man on the jetty with the lantern and her red coat
The old mancut: no time jump

My notes said you should never see her face or be able to tell the diver’s gender. No old man, and a lot more camera movement. The note that shaped everything after it was about the place. “In every clip of him standing there the surroundings are slightly different.”

The man on a low jetty, the lantern on the stones beside him
Keyframe 4a low stone pier
The man sitting on a wall with the coat and lantern, a harbour behind
Keyframe 8a sea wall with a harbour
The man holding the lantern up on a wide jetty, a lighthouse behind
Keyframe 18a wide jetty and a lighthouse
My other notes on the first board
  • Bubbles breaking the surface by the jetty made no sense when she’s far across the bay.
  • No bubble-to-moon dissolve.
  • The reel was in the water in some shots and not in others. Some shots had a dock and some didn’t.

Building the jetty in 3D first

I suggested painting him once and spinning a camera around him with H3 to get a 3D model. Claude tested it first. H3 made up the side it couldn’t see, a whole town of colored houses included, and the props around him moved. Every run would invent a different place.

Frames from an H3 orbit around the painted man: the background changes and invents a town on the cliff

So Claude built the place first, in Blender, from code. A jetty, a headland with a lighthouse, a line of cork floats out to the cave, and the moon pinned to one spot. Every shot of him became a painting over a render of that set from the shot’s own camera.

A grey 3D render of a stand-in figure on the jetty with the town behind
The set, from shot 4's camera
The same view painted: the man in his overcoat by the parapet, the coat beside him, the town on the hill
Painted over it
How each painting knew what its camera could see

The prompt for each painting named only what that camera could actually see. Claude worked that out by checking the line of sight from the camera to every landmark. Without it, a view facing away from the sea came back with a moon and a lighthouse pasted in.

My next note said “the 3d space doesn’t change every time like it used to”. But now the paintings stuck to the set too much. The town was flat, identical box houses, because that’s how the set had it. “Because your previs has no trees, there are no trees in the image.”

Blurring the set so only the layout gets copied

The fix was to give the painter less. Claude now blurs the set render before Qwen-Image sees it, and the prompt says to keep the camera, the horizon and the big shapes, and to paint every surface fresh. The town became one wide painting of cottages on a wooded hillside, hung on a curved card in the set, 120 metres behind the jetty. Every camera sees the same town from its own angle.

Same shots, three ways. Strictly over the set, loosely with no town, and loosely with the painted town.

The same shots painted three ways: strictly over the set, loosely with no town, and loosely with the painted town backdrop

H3 gets no guide video this time. Each clip only moves between its painted first and last frames. There’s a setting that’s supposed to make H3 follow a guide less. A test on Earthlight, an episode of my AI TV series, found it changed almost nothing at any value between 0.55 and 0.85. How much of a guide gets copied depends on what you put in the guide.

The cave, the retakes and the ending

Six shots came back for retakes, one of them twice. Most had the same cause. A painted last frame has to be a believable end of the camera move, or H3 cuts to it instead of moving there.

The cave lamp, the render, the retakes, the ending and the bubbles

The cave lamp. The caves got no set at all. They’re painted from words, very dark, lit by a beam from outside the frame. The first batch put a diver in 9 of 11 frames, because the prompt said “a diver’s lamp”, and naming the light’s owner paints the owner. The light is now just a shaft from somewhere outside the picture, and the cave is empty.

A cave frame with a diver holding a lamp beside a toy diver
"A diver's lamp"9 of 11 frames grew a diver
The red toy diver alone on a ledge in a shaft of warm light
"A shaft of light from outside the frame"

Twelve days, then $2.44. Claude had asked me to OK about four and a half hours on my laptop’s graphics card, and the board sat waiting twelve days for my answer. When I finally approved it, a rented 48 GB cloud card (an L40S) did the work instead. That was 37 clips at 1344x768 with the last shot as a chain of four, plus 20 paintings and 2 keyframes. The card ran 2 hours 8 minutes, about an hour and 41 of it actual GPU work. A separate Claude session ran the rented machine and picked up each batch as it was ready. It cost $2.44.

Six retakes. Then Claude checked every clip frame by frame, and six shots came back, one of them twice.

Frames from a clip that jumps from one camera angle to another in its first second, with a wave breaking over the jetty
A hard cut, not a moveits last frame was painted from another angle
The headland across the bay riddled with dark holes like a sponge
A sponge headlandthe noise in my 3D model, painted in
The float line lit like a row of candles leading to a glowing cave mouth
Candles on the waterthe floats are dark corks everywhere else
A gloved hand holding the dive lamp sliding into the edge of the frame
A hand at the edgenobody is ever seen below
A falling lamp in the cave with a reflective water surface appearing
A surface in the cavethe cave is entirely under water
Frames from the arc round the man holding up his lantern, the town sliding away to the open bay
When it worksthe last frame agrees with the move

When the painted last frame fit the move, H3 moved beautifully, like the arc around him that slides the town off the left of the frame and brings in the open bay. Where Qwen had painted the end from another height or angle, H3 didn’t move at all. It cut, or cross-faded, to the last frame in the first half-second. Those shots now run from their first painting alone.

The ending in three takes. The last shot is one unbroken move down the cave to his lantern, four clips chained together, and it took three tries. With only a start and an end frame, H3 invented the middle. The far light became a candle seen from straight above, and then the picture wiped across to the ending. A middle frame fixed the third clip. Taking the end frame off the fourth removed the last wipe.

Take 1 of the descent: rock, darkness, a candle from above, then the lantern
Take 1a candle from above, then a wipe
Take 2: the lantern far below, then a second framing slides in
Take 2the middle fixed, a wipe at the end
Take 3: one continuous descent onto the lantern and the stopped pocket watch
Take 3in the film

Where the bubbles come from. They never come from the edge of the screen. They seep from cracks in the rock far out under the bay, then fill the whole night sky above him. They’re drawn in 3D through each shot’s camera, and hidden behind him and the stones by a cut-out mask made from the clip itself.