Old Film
Aging your clean render into worn archive footage, artifact by artifact
- video
- video
Old Film is the "make it look like it survived a projector" node. It layers several classic film-damage artifacts onto a clip - random dust, vertical scratch lines, brightness flicker, uneven "development" density, and physical frame weave (the little shake of a worn transport) - and crucially, it lets you dial each artifact independently. That's the difference between this and a one-slider "vintage" preset: you can go subtle 1970s home-movie or full found-footage horror by turning up the scratches and leaving the flicker gentle.
It's a rendered stage, so it needs a ▶ Run and it uses a torch (GPU) backend. In goes COMFYTV_VIDEO, out comes COMFYTV_VIDEO.
The parameters, grouped by artifact
There are sixteen of them, which reads like a lot until you realize they're five small clusters:
- Dust:
delta(default 14) andevery(20) control how often random dust spots appear. Smallevery= dustier. - Flicker:
brightness_up(20),brightness_down(30), andbrightness_every(70) - how much the frame brightens/darkens and how often. This is the "old bulb struggling" pulse. - Development:
develop_up(60),develop_down(20), anddevelop_duration(70) simulate uneven chemical development - density shifting across the frame over time. This is what makes footage feel aged rather than just grainy. - Scratches:
lines_num(5) andline_width(2) set the vertical scratch lines;lines_darker/lines_lighter(both 40) balance the dark and light emulsion damage. - Weave:
weave_x/weave_y(0) andweave_interval(0.6s) - the physical frame jitter. Start here for that "projector gate" instability. seed(default 7) - reseed for a different random dust/scratch layout.
You're not going to memorize all of them. Practical approach: set weave_x/weave_y to ~1 for a gentle rock, leave dust and scratches at defaults, nudge develop_* for density, and only push brightness_* high when you want it visibly strobe-y. The node previews most of this live, so dial it by eye.
Where it sits
It's one of the pack's "texture & era" VideoFX stages, grouped with Regrain, Frame Blend, Posterize, and Pseudocolor. A typical chain: generated clip → Old Film → (Regrain for film grain on top) → composite. Because these stages are snapshot-based, a change upstream means re-running this node - which is fine, it's one pass, but don't expect live updates downstream of a long FX chain.
Install
Same as every ComfyTV stage:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart ComfyUI - on Desktop/macOS clone into the running instance by absolute path and verify custom_nodes/ComfyTV/__init__.py is at the top level. ComfyUI Manager finds it as "ComfyTV". No extra Python dependencies; the torch backend is ComfyUI's own.
One honest warning: "old film" looks great in moderation and instantly cheesy cranked to eleven. The artifacts this node generates are randomized per seed, so when you find a dust pattern you love, lock the seed and don't let control-after-generate randomize it away.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| delta | INT | 140–400 | — |
| every | INT | 200–100 | — |
| brightness_up | INT | 200–100 | — |
| brightness_down | INT | 300–100 | — |
| brightness_every | INT | 700–100 | — |
| develop_up | INT | 600–100 | — |
| develop_down | INT | 200–100 | — |
| develop_duration | INT | 700–10000 | — |
| lines_num | INT | 50–100 | — |
| line_width | INT | 20–100 | — |
| lines_darker | INT | 400–100 | — |
| lines_lighter | INT | 400–100 | — |
| weave_x | FLOAT | 0.00–32 | — |
| weave_y | FLOAT | 0.00–32 | — |
| weave_interval | FLOAT | 0.600.05–5 | — |
| seed | INT | 70–99999 | — |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |