-
Notifications
You must be signed in to change notification settings - Fork 0
Node Reference
This wiki page hosts the node reference. The complete interactive version is served from the repository at docs/NODES.html.
- Interactive Node Reference — Full schema with search and anchor links
- Execution order — Five-node pipeline
- Categories — Voice, reel pipeline, sound, effects, page
The reel pipeline runs in this sequence:
Set Narration → PROJECT → Align → ALIGNMENT → Shot Table → SHOTS → Subtitles → SUBS → Render Reel
Five nodes carry a reel from a project folder to an MP4. Sockets are typed, so the order is enforced by the graph rather than by convention.
Cost profile:
- Align (~90 s) — the only slow step; Whisper-based forced alignment
- Project, Shot Table, Subtitles — disk reads, <1 s each
- Render Reel (~61 ms/frame at 1080×1920) — CPU-bound; a 142-second reel took 301 s including alignment
Seven nodes, each takes AUDIO → AUDIO. Chain them, cut anywhere, bypass any.
- Pitch / Time — Independent tempo and pitch via Rubber Band; only node that changes length
- Speech Denoise — Steady hiss/hum via spectral gating or noise gate
- De-esser — Sibilance compression
- Vocal Compressor — JUCE compressor with makeup gain
- Auto-Tune — Pitch correction to a scale; formants preserved
- Normalize — Scale to a peak level
- Loudness Meter — ITU-R BS.1770 integrated loudness (LUFS)
Nine nodes: Set Narration, Project, Align, Shot Table, Subtitles, Render Reel, Preview Shot, Set Motion, Set Image.
Key constraints:
-
Align does not transcribe; it computes word timings against the known script via
stable-ts -
Shot Table combines timings with decisions from
shots.csvand writesgenerated/shots.json - Render Reel streams crops from PIL per-frame and burns subtitles via libass; memory is constant in reel length
Four nodes around sfx.csv:
-
Sound Design — Reads/writes
sfx.csv; resolves rows against the shot table - SFX Prompt — Sends one row to a text-to-audio model
-
Save SFX — Writes generated audio to
sources/sfx/and records the seed - SFX Bed — Mixes every cue into one track the length of the reel
Eight nodes, each takes optional EFFECTS → EFFECTS. Chain to stack.
- Effect Preset — Named combination of six families
-
Grade — Colour grade via parametric controls or
.cubeLUT - Grain — Film grain
- Texture — Blends a looping overlay
- Frame Overlay — Composites an alpha PNG
- Shake — Camera shake applied to the crop window
- Sharpen — Unsharp mask; runs last to avoid amplifying grain
- Apply Effects — Attach a stack to one scene or all of them
Seven nodes producing a typed document plate. Typesetting is deterministic; the model is used only for paper and pencil hand.
- Paper Mask — Separates paper from ink/pencil/stamps
- Pencil Crop — Crops the corner where the pencilled number goes
- Pencil Prompt — Builds the prompt for the number
- Pencil Lift — Subtracts before-image from after to recover only the pigment
- Pencil Graft — Re-tones and adjusts stroke thickness
- Page File — Reads/writes the page's markdown source
- Type Page — Sets verbatim text at the size and pitch directives specify
One row per scene; every column but shot is optional.
| Column | Decides |
|---|---|
shot |
Scene number (1-based), S01, or cue timecode from script |
media |
Bare filename, resolved across images · composites · maps · videos
|
in |
In-point for footage (2:14 or seconds) |
motion |
One of nine presets; blank cycles a default by scene number |
rate |
Zoom fraction; ignored if focus or path is set |
anchor |
center or top
|
speed |
Footage playback rate; 0.4 = slow motion |
focus |
cx cy w in source fractions — one destination window |
path |
Several stops: t:cx,cy[,w] space-separated |
label |
Corner tag, held label_hold seconds from scene start |
credit |
Source line, held for whole scene |
effects |
Preset name for this scene alone |
notes |
Not read by the pack |
| Socket | Payload |
|---|---|
MEMOACTS_PROJECT |
{project_dir} — only the path travels; every step re-reads the folder |
MEMOACTS_ALIGNMENT |
{alignment, project_dir} — the expensive result on its own socket |
MEMOACTS_SHOTS |
{doc, project_dir, effects} — doc is the shot table, effects keyed by scene id |
MEMOACTS_SUBS |
Caption fields of RenderOptions; settings only, never files |
MEMOACTS_EFFECTS |
An effects.EffectStack
|
MEMOACTS_SFX |
{project_dir, doc, csv, cues, placed} |
MEMOACTS_SFX_CUE |
MEMOACTS_SFX plus {cue, seed, seconds}
|
A crop cannot leave its source. The window is a rectangle inside the picture, so a point closer to an edge than half the window cannot be centred — it is approached instead.
The widest window is the base 9:16 rectangle. Past it there is no more picture. This ceiling is arithmetic and is enforced.
Enlargement is allowed and never silent. A window narrower than the 1080 px output stretches the source. The panel prints the factor while the rectangle is drawn, the report names it per scene, and on_upscale decides whether the render warns, refuses or stays quiet.
For the full schema with all parameters, ranges, and notes: see the interactive reference at docs/NODES.html.
