Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 roomOur chunk
The reel of negative — frames held to the lightED.9 video filmstrip
Edit by decision list, never cut the negativeED.1 EditProject
The decision list filed in the can (EDL)ED.23 .screenproj
The trim bin — nothing is ever lostED.2 undo / redo
The Moviola / Steenbeck flatbed — scrub both waysED.3 random-access decode
SMPTE timecode — every frame has an addressED.4 frame-indexed clock
The jog/shuttle wheel, J-K-LED.7 transport
The footage counter on the benchED.8 timeline ruler
The mag track running beside the pictureED.10 audio waveform
The razor + tape spliceED.11 split / ripple / undo
The exposure sheet — moves planned per frameED.12 zoom lane
The dope sheet — keyframed timing + easeED.13 dopesheet
Step- / skip-printing — slow & fast motionED.14 per-segment speed
The hard matte + pan-and-scanED.15 crop + aspect
The rostrum camera's slow push-inED.16 zoom engine
The assistant editor's continuity logED.17 auto-zoom from clicks
The presentation mount — mat, float, backdropED.18 style / background
Grooming the lone performerED.19 cursor styling
The optical printer baking it to a printED.20 frame generator · ED.21 export

Why frame it this way

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."

Why this shape

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