D/A FIELD NOTES / 2026.10.25 DO NOT ADJUST YOUR SET // BERLIN
FIELD NOTES / STUDIO JOURNAL

Media Editing, Part 3: Cutting, Culling and Naming

Turning cut points into clip lengths, cutting without keyframe surprises, and organising the keepers into banks you can play from in the dark.

This is part three of a four-part series on media editing for live performance. Start with part one, or catch up on part two.

By now you should have a detection file full of timestamps and a contact sheet that tells you roughly what's in the source. This is the part where it becomes clips.

Turn cut points into clip lengths

From the project root (cd .. if you're still in 01-scenes), do one bit of housekeeping. Range detection can append the end time twice, and duplicate timestamps become zero-length clips, so dedupe first:

awk '!seen[$0]++' 01-scenes/scenes.txt > 01-scenes/scenes-clean.txt

Now turn the timestamps into clip lengths:

scene-time -i 01-scenes/scenes-clean.txt -o 01-scenes/cutlist.txt

Each line comes out as start,duration, because ffmpeg wants a duration, not an end point. The first line starts at zero; the last line runs to the end of the source.

If you want to drop micro-clips, this writes a pruned copy that omits anything under 0.4 seconds:

awk -F, 'function sec(t,p){ if (t ~ /:/) { split(t,p,":"); return p[1]*3600+p[2]*60+p[3] } return t+0 } { if (sec($2) >= 0.4) print }' \
  01-scenes/cutlist.txt > 01-scenes/cutlist-clean.txt

Adjust the number, or just open the file and delete the obvious zeroes by hand. A 0.1-second clip can be a wonderful flash and a terrible default.

Cut the clips

cd 02-clips
scene-cut -i ../00-source/source.mp4 -c ../01-scenes/cutlist.txt

If you made the pruned list, swap in cutlist-clean.txt. Every clip is named with its start and end time, so you can trace it back to the source.

scene-cut re-encodes each segment to H.264 High, yuv420p, AAC, with +faststart. That's deliberate. Stream copying would be faster, but you'd inherit the keyframe placement and container quirks of the source. For performance I want every clip to start cleanly and play everywhere. The cost is time, and a little quality if you're fussy; the benefit is predictability. That's the generational loss the Video Editing post talks about, accepted deliberately in exchange for clean starts. The original source is untouched, so you can always go back.

If you want a better master, edit the script and add -crf 18 -preset slow to the libx264 line. If you want smaller files for a laptop with no room left, raise the CRF (say, -crf 26). The defaults are sensible; the point is that you know where the knobs are.

Sometimes the detector splits a shot because a light flashes or the camera's auto-exposure jumps. If the two halves belong together, don't fight the threshold; merge them back. The Video Editing post has a small merge script for exactly this, and it's also handy for joining a run of clips into a longer bed.

Cull

Two hundred clips is not a show. It's a filing problem.

The first pass is mechanical: watch the clips, keep the ones with a strong first frame, a bit of movement, and a clean exit. A scene is not a clip. It's a candidate. A five-second segment of a person walking into frame might be brilliant, or it might be five seconds of a person walking into frame. You won't know until you see it in motion.

I also keep an eye out for clips that survive being projected large. Compression artefacts, noise and soft focus are much more obvious at four metres wide than they are in a preview window. A clip that looks merely okay on a laptop can be extraordinary on a wall, and the reverse is also true.

Name them for the dark

The second pass is naming. This matters more than it sounds. On stage, in a dark room, with someone talking in your ear, you need to find A01-street-at-night.mp4 without reading a timecode.

From the project root (cd .. if you're still in 02-clips):

mkdir -p 03-selects/A-openers 03-selects/B-textures 03-selects/C-punctuation
cp '02-clips/source-[00:14:22-00:14:29].mp4' \
  03-selects/A-openers/A01-street-at-night.mp4

Quote the brackets. I use three banks:

  • A — openers. Strong images, four to ten seconds. The things you put on screen when the track drops.
  • B — textures. Two to six seconds. Movement, grain, colour, loops. The bed of the set.
  • C — punctuation. One-second flashes, glitches, interruptions. The things you fire once and then get away from.

Three banks is enough to improvise with. More than that and you'll forget what's in them.

The names should tell you what the clip is, not when it happened. A01-street-at-night.mp4 is a useful name. source-[00:14:22-00:14:29].mp4 is a receipt. Keep the receipt in 02-clips if you need to trace something back; the toolbox should be readable at a glance.

What you should have now

  • 02-clips/ — every segment the detector found, cut and re-encoded.
  • 03-selects/A-openers/, B-textures/, C-punctuation/ — the keepers, named and banked.

In part four we'll conform the keepers to the rig, strip the audio, test everything on the actual show machine, and go through the sharp edges that can still bite you.

The series: 1. Media Editing · 2. Finding the Cuts · 3. Cutting, Culling and Naming · 4. Performance-Ready Clips