My Own Funeral

WinnerGenHQ · Give Your Character a Voice

In 1987 a doctor gives Reverend Otis Freeman three months, so he preaches his own funeral while he is still around to enjoy it. On Thanksgiving night 2005, his family still plays the church tape.

Only Otis speaks, in a voice designed from a paragraph of description. The tape he is on and the television it plays on are both written in code.

OtisDoctor gave me three months! So I’m preaching my own funeral, church, because I have heard Deacon Brown preach! Don’t you cry for me. I know where I’m going. I just can’t come back and tell you about it!

Casting

Midjourney V8.2, Seedream 5.0 Pro

Otis had to look like a man nothing could scare. He is not old and he is not visibly ill, because the words carry the diagnosis.

The church came from four reference videos of late-eighties services, with their red-carpeted platforms, carved pulpits, robed choirs and hot tungsten light. Midjourney V8.2 drew the casting and the sets, and Seedream 5.0 Pro locked them into keyframes. The tape opens over the congregation’s Sunday hats, where the church’s own camera stood on its tripod.

The 2005 house is a brick ranch on Thanksgiving night, lit by the screen. The family is seen once, on the sofa, and never speaks.

Otis at the pulpit with the robed choir behind him, seen over the congregation’s hats
the tape’s first frame, over the hats
Otis on the red-carpeted platform in a black three-piece suit and a red carnation
the reference that holds his face, glasses and suit
The 2005 den with the television switched on and blank
the den, the screen left blank for the tape
The family on the sofa, lit by the television
the family’s one shot

Voice

ElevenLabs Voice Design, Eleven v4

the Voice Design prompt

A 66-year-old Black American man from Mississippi, a country preacher. Low, smoky, resonant baritone, full of power and warmth, with a gravelly rasp, a deep chuckle, and a commanding pulpit cadence that rises and rolls fast when he preaches. Southern drawl. Recorded close on a church microphone, no music.

Out of a TV

  • Voice as heard
  • Added by the chain
  • Removed by the chain
the voice shot from the process film, running live from the same spectra and the same audio. press listen, then switch stages while he speaks.

Every line is spoken on Eleven v4 in that designed voice. The take in the film comes from a steadier second set, recorded because in the first pick “Don’t you cry for me” fell too far after the Deacon Brown line.

Then the line goes where the sound in that church would have gone. It plays through the PA into the sanctuary, into the camcorder’s microphone and onto the tape’s linear track, and out of a small TV speaker into a carpeted den.

church PA
a sanctuary with a 1.9 s tail
VHS linear track
100 Hz to 8 kHz, AGC, wow and flutter, hiss
TV speaker
180 Hz to 6.5 kHz, a cabinet resonance at 950 Hz
the den
carpeted, a 0.35 s tail

Blocking

three.js

Before any video, the whole fifteen seconds was blocked in three.js as a grey-box and timed to the voice take.

The church camera has an operator. His servo zoom runs from 50 to 135 mm at an uneven speed, with a pause, and his pans follow Otis a beat late and overshoot.

Once the film was finished, the blocking was matched back to it frame by frame, with the TV’s corners within 2.6 pixels and Otis’s face within 0.84.

the grey-box left of the line, the finished film right of it, on one clock.

Lip sync

Seedance 2.5, ElevenLabs Speech to Speech

Seedance 2.5 takes an audio reference, so the plan was to hand it the designed voice and let Otis act to it. Every full-length run with the sermon recording as that reference came back blocked, pitch-shifted copies included.

Short tests showed why. In 2.5 the reference sets the timbre. The lips follow whatever Seedance says itself, and the words come from the prompt.

So the reference became a separate, neutral line in the same voice, and the sermon went into the prompt. Seedance spoke it with native lip sync in something close to Otis’s voice, and ElevenLabs Speech to Speech moved that dialogue onto the designed voice with its timing untouched.

blocked
six of six runs with the sermon itself as the reference
takes
six at fifteen seconds, four of them with native lip sync
kept
Kb, finished at 1080p
after Speech to Speech
0.96 word match with the script
the six takes on one clock. top row C, E and I, bottom row J2, Ka and Kb. C and E ran with the audio off, so their lips never follow the voice. Kb is the take in the film.

Tape

VHS signal model, Python, and here in WebGL

The 1987 tape is computed from the Seedance take one frame at a time, the way a camcorder and two VCRs would have treated it.

The camera’s date goes into the picture before it reaches the tape, so it smears with everything else. The family’s copy is a dub of the church master, a second generation, and the rewind between the two films runs through the same model in search mode.

The deck below runs that model on your graphics card, from the clean take. Under the picture is a waveform monitor on one line. It opens on line 433, through the date stamp, where the digits are square pulses, so you can watch the record bandwidth round them off, the playback halos overshoot them, and every dub make both worse.

stage 6 of 6

dubbed

A copy of the church’s master. Every loss happens again, on top of the first.

225 TV lines of luma, 32 of chroma

copies2the copy the family plays
trackinglocked

The amber line on the picture chooses the row the scope plots. Drag it anywhere.

signal pathclick a stop or drag along the path

Tube

slot-mask CRT model, three.js

The television is a model of a slot-mask tube, rendered in three.js. It draws 480 Gaussian beam lines that widen with brightness, through a slot mask 640 triads across, with halation and bloom in the faceplate.

The phosphor face sits 3 cm behind the bezel and bulges 6 mm, so the bezel covers the edge of the picture with real parallax as the camera moves. The front glass reflects the room behind the camera, which is the family’s sofa, mirrored and blurred.

The camera filming it exposes one 240-line field with a 180 degree shutter.

beams
480 Gaussian lines, wider as the beam current rises
mask
slot mask, 640 triads across, 1 mm pitch
glass
halation, faceplate bloom, the room’s reflection
camera
one 240-line field, 180 degree shutter
fit
the bezel’s opening fitted at subpixel level, under 0.8 px off
the layers switch on one by one, then the dive into the slot mask on the stamp.
triads across
640
beam lines
480

Scroll over the screen to zoom, drag to look around, double-click to step in.

layers

Switch a layer off to see what it adds.

the film’s tube shader on the comp’s own room, live, with the tape above playing on it. the mask is worked out for every pixel at every distance, so it holds from the whole den down to a single phosphor.

Room

Depth Anything 3, Seedance 2.5

The den is one Seedream still cut into rigid cards at their Depth Anything 3 depths, from the curtains at 2.32 m to the console at 1.66 m. That is enough depth for the camera to move through it with real parallax.

The picture lights the room. The bezel’s lip, the console top and the fan take the tape’s colour frame by frame, and the varnish on the console reflects the bottom of the screen.

In the film, the pull back out of the screen hands over at 9.7 seconds to a Seedance shot generated from the comp’s own frame. The tape and the tube are tracked back into its screen, and the move eases to a stop before the cut to the family.

power on, snow, play, and the push into the tape.
out of the stamp, the room in depth, back into the screen.

35 mm

film model, Python

The 2005 house gets a 35 mm finish, and that is computed too.

A colourist’s per-shot balance, a spherical prime at night aperture, Kodak Vision2 500T 5218 halation around the strongest highlights and three dye-layer grain fields at 2K scan scale, new every frame, all sit under a 2383 print curve.

The same pass runs over the tape on the screen, so the 1987 picture picks up the 2005 lens and grain.

The family on the sofa with the 35 mm finishThe same frame straight out of Seedance
the Seedance framewith the finish

Haitian Creole

Eleven v4, Sync Lipsync 3

The bonus cut is the same sermon in Haitian Creole, the language of Miami’s Haitian churches since the 1970s.

The ElevenLabs Dubbing API does not take Haitian Creole, and in the languages it does take it spoke through both laughs. So the Creole was translated line by line to the English timing and spoken on Eleven v4 in Otis’s designed voice, which keeps both laughs where they were. Sync Lipsync 3 moves his mouth to the new words, and the dub runs through the same church, tape and TV chain.

No native speaker has checked the Creole yet.

the Haitian Creole cut, fifteen seconds.

The process film

every chapter above in ninety-five seconds, cut to its own score.

What was generated, and what was not

Generated

Otis, the church, the congregation
Midjourney V8.2 casting and sets, Seedream 5.0 Pro keyframes, a Seedance 2.5 performance
The den and the family
Seedream 5.0 Pro keyframes and Seedance 2.5
The move out of the screen
a Seedance 2.5 shot started from the comp’s own frame
Otis’s voice
designed in ElevenLabs Voice Design, spoken on Eleven v4, converted with Speech to Speech
Haitian Creole
translated line by line, then Eleven v4 and Sync Lipsync 3. Not yet checked by a native speaker
Process film score
ElevenLabs Music, cut to picture on bar lines

Built in code

Blocking
a three.js grey-box, before any video
The tape
a VHS signal model, the date stamp included
The television
a slot-mask tube model in three.js
The room in depth
rigid cards at depths measured with Depth Anything 3
The track
the tape and the tube fitted back into the Seedance screen
The sound of the rooms
church PA, camcorder track, TV speaker and den
The 35 mm finish
a film model, grain to print

I just can’t come backand tell you about it.