Delivery & Exchange / X4 · ALE Columns

Where Each ALE Column Comes From

SlateX writes an ALE as tab-delimited text: a file-level header, one column-name line, one line per clip. These columns do not share one kind of provenance — some values were transcribed on set, some were already stored in the record, some are assembled by the software, and one family holds text that exists but cannot ship. A missing value here has a single appearance: empty. When a file arrives, ask where each cell came from before deciding what checking work it can carry.

Hand-written values, software-assembled identifiers and empty cells coexist in the same row; the grid does not tell them apart for you.

Read the header as file-level claims, not per-row facts

The header states the delimiter, picture format, audio format, a global tape name and a frame rate. VIDEO_FORMAT lands on a raster tier only when a camera's resolution was recorded. The AUDIO_FORMAT line is written but left empty, because the record holds no audio sample-rate reading — filling it with a software constant would declare a sound specification for media we never measured. The global FPS takes the most-declared rate among rows that declared one, and stays empty if no camera declared. The global TAPE is written only when the whole batch maps to one real card; with several cards it is left to the per-row cells, and with none transcribed it is omitted.

These are file-level single values, not per-row truth. Each row carries its own FPS, and the two can disagree.

Identity columns: one source, four shapes

Name is the clip name, held to 31 characters and to ASCII. With no shot name recorded it falls back to a deterministic string built from what the row does have — scene, shot, take — the same string on every export, never colliding with another take. It is a marker, not a file key.

The cells used to recognise source media all follow the card number you typed, each in a different shape. Tape needs the whole card name to be ASCII letters and digits before it upper-cases and cuts at 31; a non-Latin character, a space or a hyphen empties the cell, and we will not pick characters out to build a number you never wrote. Camroll carries that same card and needs it pure ASCII, so a card name with non-Latin characters leaves that cell empty. Reel # is contracted as numeric, so a card name containing any letter empties it — we do not strip a prefix to manufacture a number. Soundroll carries the roll number from the sound ledger behind the same gate. When a card name holds non-Latin text, those three cells go blank together: one source lost, three cells, not three unrelated events. Four cells, one origin: they are not four independent identity signals.

The display number the software counts — a camera letter plus a three-digit increment — never enters this road. It corresponds to no physical card and lives only in the human-readable columns of CSV and PDF. Camera is the camera label, limited to those 26 letters.

Time columns: both readings are typed by hand, and the span comes from them

Start takes the timecode the row holds: the in-point if recorded, otherwise the take's own. A string failing a shape or range check ships empty. You will not see 00:00:00:00 in this file: that string's fault was looking legal, leaving receivers unable to tell a genuine on-set zero from a padded one.

End takes the out-point stored on the record, and the record has two ways to get it: the recording chain captures the reading on the screen at the moment of stop, while the new-take and edit-take pages each hold an out-point box the supervisor can copy off the camera. Neither happened, nothing ships: we do not advance an in-point by a duration to fill it, which would pass off a calculated number as the reading on the camera. An empty cell surfaces on the reconcile sheet as TC_OUT_MISSING, judged as: in-point present, Scene duration present, out-point absent.

This cell recognises a reading taken on set. No reading, no cell — rather than a calculated stand-in.

Duration is no longer the stopwatch figure. The column is the frame-accurate span between the two on-screen readings, head and tail included, which is why it stays consistent with End − Start; miss either reading and the cell ships empty — the span is a derived value and must be reviewed as one. That same span is the read-only TC duration on the take's screen; the Scene duration the supervisor types travels in its own appended column, SlateX Set Time, side by side with Duration: preroll, the slate and a director who rolls early all sit inside the stopwatch, so the two numbers differing is a set norm rather than somebody's mistake, and the reconcile sheet flags that case as DURATION_MISMATCH without changing any value. FPS has a value only when that row declared a rate; the fallback used inside arithmetic is not a number this camera reported, so it stays out of the column. TC Mode can hold one token only, DF; blank means no drop-frame declaration, which is not non-drop-frame. Only rows declaring DF write Start, End and Duration with semicolons, and the header states verbatim that this is our display convention. Sound TC goes over as written: shape judged, frame positions never trimmed.

Text columns: flattened first, then gated

Description joins whatever the scene summary, shot description and shot notes already hold, with a fixed separator. Comments comes from take notes, Camera Notes from the camera record, and Director from the shooting day the take belongs to. All four travel one road: line breaks and tabs are flattened to spaces, then an ASCII gate applies — a value carrying non-Latin characters ships as an empty cell, verbatim in the CSV and the PDF.

So a blank here can mean two different things: never recorded, or recorded in text this file cannot carry. The reconcile sheet will not resolve the second case — it judges whether the record holds a value — so those columns get checked against what you actually typed.

State and the rest: the mark is in the file, the track token is not a channel map

Rating carries the on-set mark as text — Circle, Keep, Hold, N/G, always English and never following the interface language — and is empty when no mark was left. Circled take carries TRUE or FALSE; that is a second question, so it gets a second column. Tracks is a three-state token: V for MOS, A1A2 for a wild track, VA1A2 for sync sound; a row with no sound fact stays empty rather than defaulting to sync. It is a track marker, not a channel map, and it carries no sample rate. VFX_Type assembles that camera's four flags; VFX_Count exists as a column with no entry path today, so it ships empty. Shoot Day is written in the Day 7 form and left empty when the take belongs to no shooting day; the date has its own Shoot date column (yyyy-MM-dd), and the unit sits in Unit.

What this ALE carries, and what it plainly does not

It carries: source file name and path, card and sound roll, sound timecode, the mark and the circled flag, scene and take numbers, unit and date, the out-point read on set — captured at stop or copied off the camera — and Scene duration in its own column. It does not carry: the media itself, lens parameters beyond timecode (focal length, ISO, aperture, shutter and resolution exist in the app but have no column here), a channel map, or the two ASC columns. It also carries no relationship between a shot and a file — which take belongs to which clip stays a job recorded on set.

The columns at the end of the line-up are our own names. They are not in the specification, so no receiver should be assumed to read them as semantic fields. Check column names against the strings actually present in the file: a near-synonym in your template is not guaranteed to map onto the same field.

FAQ

Do Reel # and Tape verify each other?

No. Both derive from the single card number you transcribed, each behind its own gate (all-digits, all-ASCII-alphanumeric). Agreement between them says one source was written twice.

Is End recorded on set?

Only if somebody read it down. Two paths put a value there: the recording chain captures the screen reading at stop, and the supervisor can copy it off the camera into the out-point box on the take's pages. Read it, the cell ships; missed it, the cell stays empty and TC_OUT_MISSING names it. We infer nothing from in-point plus duration. Even when it has a value it is a reading to verify against media: no editing system has run an import acceptance against our files.

Is Tracks in the ALE a channel map?

No. It is a three-state track marker derived from how the take was recorded. It says nothing about which sound source sits on each channel, sample rate, or routing in the edit.

Why still check column by column?

Because one file holds values transcribed by hand, identifiers assembled by software, and cells that go empty because the text would not fit. Each column has its own rule. A file that opens proves the text is readable, not that every field's source was verified.


Axiom One LLC — SlateX. Figures current as of 24 September 2026.