§ JOURNAL

The Breakdown #01: Merge Conflict

October 28, 2026
Merge Conflict title in voxel type, white and gold, with Mote the dot-matrix AI face watching

How a failed duet became Merge Conflict.

We made a music video out of things coders actually say. The first plan was a duet, and it failed four different ways. What we shipped came out of those failures.

▶ Watch Merge Conflict on YouTube

The Breakdown is a new series where we open up one finished piece and show how it was made: the plan, what broke, and what we'd do differently. First up is our newest video.

The toolkit

  • Claude Code: direction, code and the overnight builds
  • ACE-Step 1.5: the song (music and vocals), an open-source music model running on our own GPU
  • Whisper (large-v3): checking what each take actually sang
  • torchaudio forced alignment (MMS): pinning every word to the beat
  • three.js: the voxel 3D world
  • HyperFrames: scenes to frames
  • ffmpeg: mixing, cutting and encoding
  • Finisher: QC, loudness and captions, our in-house QC pass

We also tried Blender for the 3D world. It's powerful, but we want to experiment with it more before it goes into a finished piece, so Merge Conflict stuck with three.js. Look for Blender in an upcoming project.

The pipeline behind it

None of those tools works alone. They're wired together in our in-house video pipeline, the same system we use for product walkthroughs, tutorials and these music videos:

  • It starts on the board. Every video begins as a task on our company board, where we sign off on the idea and on every draft.
  • One command builds the whole video. The song, word timing, Mote's mouth, the mix, the 3D render and the master all come out of a single build script. A note like "the text feels late" means re-running one step, not re-cutting the edit.
  • QC runs before anyone watches. Finisher checks every render for loudness, gaps in the audio, flashes and sync. On Merge Conflict it flagged the silence before the ending, which we'd put there on purpose, so we kept it.
  • Release is part of the pipeline. Once a cut is approved, the master, captions and thumbnail go up to YouTube, and our AI team drafts the launch posts for us to approve.

---

The idea

Every developer has the same phrases stuck in their head. It's always DNS. Kill the child process. Did you read the docs? The tests are passing, so it's fine. We wanted a song made entirely out of them: a bouncy electro-pop track, about two minutes long, built for people who write code.

There's a story in it too. The AI is the competent senior engineer. The human is the vibe coder, the one who hits accept all, accept all and pastes the error straight back in.

Meet Mote

Mote, the AmbientPixels dot-matrix face, smiling in gold above the words: hello, I'm Mote.

The AI is played by Mote, AmbientPixels' recurring character. She's a face made of dots, grown out of the 3×3 pixel grid in our logo, with a single gold dot at her center. She has no body and no hair (yet). Everything she feels shows in how the dots move: two for the eyes, a few for the mouth, and that gold core.

Mote first appeared in our music video Context Window, in which an AI looks out through the screen at the person typing to it, and every line is true to how a language model actually works. Merge Conflict is her second role, and the first where she gets to be the smartest one in the room. She does the singing, the side-eyeing and, at the very end, the refusing.

Plan A: a duet (it didn't happen)

The song was written as a conversation, so the obvious plan was two voices: Mote sings her lines and a second singer takes the human's.

Try 1: stitch two takes together. We generated the parts separately and spliced them. On paper the joins measured about 96% clean. By ear you could hear every seam, ten versions in a row. The numbers said yes and the ear said no, and the ear was right.

Try 2: one take, both voices. We wrote duet lyrics, generated a dozen takes in one pass, and used a script that scored each sung line by pitch to check whether the voice actually changed. That got us a first draft. But an earlier take had a beat and instruments we liked more, and you can't keep one take's music while swapping in another take's singing.

Try 3: re-sing the take we loved. So we tried to keep that earlier take's music and re-voice it as a duet. The model kept the music almost perfectly, but Mote sang every line. When we dug into the model, the reason was simple: at the settings that keep the music, it only gets about two steps to change anything, and that isn't enough to change the singer.

Try 4: repaint just the human's lines. The edges came out clean and the rest of the song was untouched, but nobody new sang inside the repainted parts.

So we dropped the duet. Mote sings every line, and the picture shows who's talking.

The constraint became the concept

Six frames from Merge Conflict laid out as a contact sheet, each with its timecode and section

Once the human had no voice, they needed another way to be in the video. We found it in the most human thing on any developer's screen: the cursor.

The first draft showed the human as a silhouette made of typed words. It was fine, but it looked too much like our last video. For v2 the whole world moved inside a code editor. Line numbers run down the side, the type is built from voxels, and every section of the song gets its own scene:

  • Cold open. The prompt is typed in silence, and pressing Enter starts the song.
  • Verse 1: the process-tree garden. On "kill the child process" only the kid's red balloon floats away. The orphan keeps running. The zombie falls over and gets back up.
  • Verse 2. The human's lines are typed out in white while ACCEPT ALL stamps itself across the screen.
  • Verse 3: the message tower. "Did you read the docs?" / "I asked the AI" / "I am the AI." Her lines are built in gold, his are typed in white, and the tower falls over on "that's the problem."
  • The final chorus. Two editor panes, his HEAD and her main, close in on each other and slam together on "merge." Real conflict markers (<<<<<<< HEAD, =======, >>>>>>> main) burst out on every "conflict!"
  • The ending. The music cuts on the downbeat, someone types git push --force, and Mote answers: no.

The bridge is a museum of our own bugs

The bridge lyrics aren't made up. They're bugs we actually hit while building our video pipeline:

> the shell ate one of the two dollar signs
> the GPU can't find cublas sixty-four
> the render died with the old session
> and I sang this line twice

Each one sits on a lit pedestal, like a museum exhibit. Then the song played one more joke on us. The take we kept doesn't sing the second "twice," so the second pedestal lost its word as well. We left it that way, because the video shows what the song actually sings.

Small problems that took the most time

The big decisions went quickly. These details took most of the hours:

  • The words drifted off the beat. Our first timing came from the lyric sheet, and some words landed up to 1.3 seconds away from where they were sung. We switched to forced alignment, which pins every word to the exact moment it appears in Mote's vocal track. Then we started the picture 80 milliseconds ahead of the audio, because text that appears a beat late feels late even when it's technically on time.
  • Gold text you couldn't read. Every voxel had its own outline, so large words turned into a gold lattice. Now big words are built from solid cubes and small words get one outline per letter.
  • Flat text disappears at low angles. The camera has to look down at about 35 to 40 degrees, or the words have to stand up off the page.
  • A ghost in the intro. Separating the vocals from the music left a faint whisper of "re-base it" behind in the instrumental opening. We fixed it with a filter that removes her voice and leaves almost everything else alone.
  • A deleted database that got cut off. The break's punchline, "it deleted the database," originally stopped in the middle of the held "-base." We moved the cut to where the note really ends.

By the numbers

  • 4 ways we tried to make a duet, and none of them made the final cut
  • 8 milestone renders between the v2 plan and the final cut
  • 38 caption lines, one for each sung line plus the outro
  • 1:50 final runtime, down from 2:14 in the first draft
  • 0 human singers, and the video is better for it

What we'd do differently

Test the hardest thing first. We assumed the duet would work and planned the whole picture around it. One day spent testing "can this model switch voices?" would have saved several.

Trust the ear over the meter. A 96% match score didn't matter when the person listening could hear the seams.

Let the limitation choose the idea. "The cursor is the human" is better than the duet would have been, and we only found it because the duet failed.

---

Next on The Breakdown: we'll take apart another piece, whether that's a video, a product, or something that went wrong. If there's something you want us to open up, send us a note.

▶ Watch Merge Conflict · More from AmbientPixels