The editor — Record → Edit → Export (M-EDIT)
If the recorder is the theatre, the editor is the cutting room — and a cutting room has a hundred-year history worth borrowing. In 1924 Iwan Serrurier built the Moviola so an editor could run film backward and forward and stop on a frame; the Steenbeck flatbed made that scrubbing fluid; cuts were a razor blade and a strip of tape; nothing was thrown away — outtakes hung in the trim bin; SMPTE timecode (1967) gave every frame an address; and in 1971 the CMX 600 dragged the whole craft from cutting the negative to non-linear editing — edit by decision list, never touch the source.
That arc is the design. This editor is the cutting room in software: a non-destructive edit decision list, a scrubbable flatbed over a forward-only decoder, frame-addressed by a single clock, re-rendered at export. Each chunk retraces one step:
| Cutting room | Our chunk |
|---|---|
| The reel of negative — frames held to the light | ED.9 video filmstrip |
| Edit by decision list, never cut the negative | ED.1 EditProject |
| The decision list filed in the can (EDL) | ED.23 .screenproj |
| The trim bin — nothing is ever lost | ED.2 undo / redo |
| The Moviola / Steenbeck flatbed — scrub both ways | ED.3 random-access decode |
| SMPTE timecode — every frame has an address | ED.4 frame-indexed clock |
| The jog/shuttle wheel, J-K-L | ED.7 transport |
| The footage counter on the bench | ED.8 timeline ruler |
| The mag track running beside the picture | ED.10 audio waveform |
| The razor + tape splice | ED.11 split / ripple / undo |
| The exposure sheet — moves planned per frame | ED.12 zoom lane |
| The dope sheet — keyframed timing + ease | ED.13 dopesheet |
| Step- / skip-printing — slow & fast motion | ED.14 per-segment speed |
| The hard matte + pan-and-scan | ED.15 crop + aspect |
| The rostrum camera's slow push-in | ED.16 zoom engine |
| The assistant editor's continuity log | ED.17 auto-zoom from clicks |
| The presentation mount — mat, float, backdrop | ED.18 style / background |
| Grooming the lone performer | ED.19 cursor styling |
| The optical printer baking it to a print | ED.20 frame generator · ED.21 export |
The same reason the theatre metaphor earns its keep: when a feature maps cleanly onto a cutting-room tool, its shape is half-decided already. A "clip" is a strip of negative; a "cut" is a splice; "undo" is the trim bin. The history isn't decoration — it's a design oracle.
The flow
flowchart LR REC[Record\nsource .mp4 + audio + click log] --> PROJ[EditProject\nthe decision list] PROJ --> EDIT[Edit\nsplice · speed · crop · zoom\non a timeline + dopesheet] EDIT --> PROJ PROJ --> PREVIEW[Preview\nwisp composes each frame\nat the playhead] PROJ --> EXPORT[Export\nre-render the timeline → .mp4]
The one idea: an edit is a decision list, not a re-cut negative
The editor never rewrites the recording. Every edit is a small,
serializable value stored in an EditProject:
- an ordered list of timeline segments — slices of the source clip.
Trimming moves a slice's edges; splitting replaces one slice with two;
changing speed sets a slice's
timescale. - a list of zoom regions — cinematic punch-ins, each compiled to a keyframed transform at render time.
- one background / cursor / crop / aspect config — the produced "framing" look.
The renderer (wisp) and encoder (media) re-derive every frame from that
model at preview and export time. Editing stays non-destructive, preview
and export share one code path (so they match), and the whole edit model is
exhaustively unit-testable without a GPU — the modern descendant of "never
cut the negative."
The data model proven by Cap's open-source editor and implied by Screen Studio's zoom/background pipeline: encode the edit as lists of value types — not a mutated media buffer — and trim, split, speed, undo/redo, and deterministic re-export all fall out as simple operations on a list. It is the edit decision list, sixty years on.
Chapters
- The edit model — ED.1
- Edit operations + undo/redo — ED.2
- Random-access decode — ED.3
- Playback clock — ED.4
- Editor surface + handoff — ED.5
- Editor preview canvas — ED.6
- Playback transport — ED.7
- Timeline ruler + coordinate system — ED.8
- Video track + clip selection — ED.9
- Audio waveform lane — ED.10
- Splitting, ripple-delete + undo/redo — ED.11
- The zoom lane — ED.12
- Dopesheet keyframes + Easy Ease — ED.13
- Per-segment speed — ED.14
- Crop + aspect reframe — ED.15
- The zoom engine — ED.16
- Auto-zoom from click telemetry — ED.17
- Inspector Style tab — ED.18
- Inspector Cursor tab — ED.19
- Deferred export frame generator — ED.20
- End-to-end edited export — ED.21
- Export progress + cancel — ED.22
- Project persistence —
.screenproj— ED.23 - Recordings library + open-in-editor — ED.24