Colophon

The content is mine. The machinery is not — it was built by agents, to a spec I set. This page is the honest accounting of which is which.

Everything you hear in the presentation is my own work: the reading of Romans, the exegesis, the framing for a youth and young-adult audience, the script, the delivery, and the decision to end on a question instead of a conclusion. No part of the argument was generated for me.

What agents did is everything downstream of the microphone. I designed the capture chain, wrote the direction, and set the requirements; agents built the pipeline that turns a raw take into a finished file, and agents built the page you watched it on. That split is the point of the setup — it keeps my attention on the thing only I can do, which is having something worth saying.

The finished video runs 14:24 and was recorded in a single take on 18 August 2026. It carries fifteen full-frame typographic slides and one animated map.

Capture

Deliberately simple, and deliberately the same rig I use for technical screencasts. Nothing here was bought for this assignment.

  1. Voice sE Electronics V7 Dynamic handheld capsule. Forgiving in an untreated room, which is the whole reason it is here rather than a condenser.
  2. Gain TritonAudio inline preamp An inline booster ahead of the interface. A dynamic microphone this quiet asks more gain than a small interface gives cleanly; moving the first stage of that gain up to the microphone keeps the noise floor down.
  3. Interface Focusrite Scarlett 2i2 Two inputs, phantom power for the booster, and a clean converter.
  4. Camera Logitech C922 A webcam, honestly. The presentation is a person talking; the audio matters more than the sensor does.
  5. Recorder OBS Studio Scene layout, capture, and the raw take — 860.5 seconds of Matroska, six identical mono audio streams, no editing. It hands off to the pipeline.

Why the audio gets all the money

An audience will forgive a soft picture and will not forgive bad sound. The whole chain above is arranged around that: a dynamic microphone that ignores the room, a clean gain stage before the converter, and a camera chosen on the grounds that it is adequate.

The pipeline

vidpipe is a project I started for media production — originally for screencasts of technical work, adapted here for a talking-head presentation. At the time this video was built it was plans only: a product brief, an architecture document, ten phase plans, and one working Blender spike. So the stage tooling for this project was written against those plans rather than against an existing library, in the shape the architecture describes, so it can be lifted back upstream instead of thrown away.

Two ideas from the architecture shaped everything downstream:

  1. Discoveryfaster-whisper medium.en with word timestamps → 157 segments; a silence map at −42 dB → 253 silences; a digest of 45 beats. Every graphic anchor in the video is taken from a word timing, never from a guess.
  2. AnalysisThe transcript settled the editorial question before it was asked: no restarts, no derailments, longest interior pause 2.70 seconds. The cut list is therefore one segment — head and tail only. Four interior pauses were considered as cuts and all four kept, with reasons on the record.
  3. GuardrailsA validator that turns the architecture's rules into code that exits non-zero: minimum durations, overlaps, scripture dwell per word, graphics anchored inside removed ranges, coverage band, rationale required, renderer agreeing with treatment. It caught three real defects during the build.
  4. BuildRemotion for the fifteen typographic compositions, Blender for the map. Intermediates encoded 4:4:4 at CRF 10 — these slides are almost entirely type, and chroma subsampling fringes accent-coloured words against the dark field.
  5. MasterOne ffmpeg graph: the a-roll trimmed and conformed to constant frame rate, every graphic overlaid at its mapped output time behind a 0.4s cross dissolve, audio brought to EBU R128 in two passes.
  6. VerifyDuration, dimensions, frame rate, pixel format, loudness, true peak, and audio/video sync. Smoke tests only — it says nothing about whether the video is any good.

The type

The slide style was reverse-engineered from two PowerPoint decks supplied as format examples, read by unzipping the OOXML and parsing the slide XML directly rather than converting them visually — which gives exact type data instead of an approximation. Palatino Linotype throughout; 96pt headlines of one or two words owning the frame; 54pt connectors (“the”, “and”, “of”) set smaller between them; type hand-placed off-centre, and almost no ornament. The rendered slides use URW P052, the open metric clone of Palatino, vendored into the project so renders need no network and no system font lookup.

Decisions worth defending

No structure that isn’t content. Every slide is flat type on a flat field. There are exactly two drawn non-type elements in the whole deck: the horizontal line in the Romans Road, which is the road, and the five bands in the epistle form. Nothing else has a rule, a frame, a box, or a radius.

The Romans Road runs 78 seconds, and pushes graphic coverage to 40% — above the 25–35% band the profile wants. The validator flags it and the manifest argues back: the narration reads four verses back to back with no gap the speaker could return into, and the alternative, four disconnected scripture cards, throws away the one thing that makes it a road. So the camera travels a road wider than the frame, parking on each verse as it is read, and after the last stop it keeps going off the right edge — because “a road leads somewhere, doesn’t it?” is the point, and a road that ends tidily inside the frame answers that question the wrong way.

Scripture is cued to the reading, not staggered evenly. Each line of each scripture card has its own frame cue taken from the word timings, and lands a third of a second before it is spoken, so the eye is already on the line when the voice arrives instead of chasing it.

What went wrong

Several defects were caught by the validator, and more by looking at frames: six frames lost off the end because OBS writes a nominally-30fps file whose timing is not quite on the grid; a quarter-second of speaker flashing between two cross-dissolving cards; a road camera that drifted for twenty seconds instead of holding; greyed commas that read as dropped specks because Palatino sets a low, calligraphic comma.

Two survived all of that and were caught by me, on viewing.

1. The audio ran 6.6 seconds ahead of the picture

“the audio is mismatched from the video by about 6 seconds. I wonder if this represents the amount of time that the video was cut from the front… or the placement of the opening slide but didn’t shift the audio?”

The second guess was the mechanism. The cold-open offset is applied in two independent places in the filter graph — one for picture, one for sound — and the audio chain then trimmed itself to a fixed duration after the delay had been inserted. That trim measures from the delayed stream’s own start, so it discarded exactly the leading silence the delay had just added. The picture kept its offset; the sound lost its own.

This is the worst kind of failure. The file was the right length, the loudness was on target, and every graphic sat on its correct frame. Nothing being checked touched it. The fix was one filter. The more important fix was the check: verification now takes thirteen long interior pauses from the discovery silence map, maps each onto the output timeline the same way a graphic is mapped, and measures the actual volume there. They come in 29–48 dB below the speech average, which proves sync end to end rather than only at the head.

2. The map was not one journey

“the map has paul returning to jerusalem and then beginning again without a connection”

The first pass drew the whole third missionary journey, ending at Jerusalem, and then the planned leg began afresh at Corinth with nothing joining them. Technically it was one colour and one connected line the entire time, which is why it needed a human look to catch: the Macedonian stretch doubles back exactly over itself, so the return is invisible, and the voyage home departs from Miletus rather than Ephesus — so the eye sees three arms radiating from a hub, not a path.

The fix cuts the journey at Corinth, which is where Paul is sitting when he writes Romans. The planned leg then continues from exactly the point the journey stops, and the whole graphic is one unbroken line. What is no longer drawn is recorded in the data file and in the graphic’s manifest entry, because a graphic that omits something should say so somewhere a reader will find it.

Known, and left as-is

The source

The code that generated this presentation is public. Both repositories are on GitHub:

The unabridged engineering account, including the defects not retold here, is BUILD-LOG.md in the first repository.

This page

A static site with no build step and no framework, self-hosted so the presentation lives somewhere I control rather than somewhere I rent. The player is the browser’s own <video> element — it already gives fullscreen, picture-in-picture, playback speed, and volume in every current browser, with no dependency and no third-party request. The YouTube resemblance is the chrome around the player, not the player itself. Keyboard shortcuts follow YouTube’s (k or space, j and l, m, f), and playback position is remembered between visits. The video file is served with byte-range support, so seeking and scrubbing behave normally, and it is also linked directly for anyone who would rather have the file.

Attributions

Sources cited in the video