Create safety blackout chain
create_safety_blackout_chainBuild a deterministic safety blackout chain for live shows: configurable fade-to-black with optional emergency snap, hotkey or watchdog trigger, and symmetric fade-in recovery. No Python at cook time.
Instructions
Build a live-show safety primitive at the very end of the master output chain: deterministic fade-to-black over a configurable time, optional emergency single-frame hard-cut, optional hotkey + external watchdog trigger, and symmetric fade-in recovery. All reactivity is parameter-driven (Speed + Lookup CHOP + Math/Logic CHOPs) — no Python runs at cook time, so the chain is ALLOW_EXEC=0-safe. Complements create_panic (per-source kill+freeze) by being the master-output dimmer with grace, recovery, and a watchdog hook. Returns the container, source, dim, emergency-gate, composite, and output node paths plus the trigger merge/target/speed/lookup nodes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| input_path | No | Absolute path of the master TOP to protect. Pulled in via a Select TOP (TD wires can't cross COMPs). If omitted, a Ramp TOP test source is used so the chain still builds + previews. | |
| parent_path | No | Parent COMP the safety chain is built inside (default '/project1'). | /project1 |
| fade_seconds | No | Time the soft fade-to-black (and symmetric fade-in) takes. 0 = instant. | |
| fade_curve | No | Interpolation shape for the fade ramp, applied via a Lookup CHOP curve so the ramp is deterministic and Python-free at cook time. | ease_in_out |
| initial_state | No | Boot state. 'live' = pass-through, 'black' = Blackout toggle on at load, 'held' = Hold toggle on (good for show open before first cue). | live |
| arm_emergency_snap | No | Expose an Emergency momentary pulse that bypasses the fade and hard-cuts to black. | |
| hotkey | No | Keyboard In CHOP key spec that toggles Blackout (e.g. 'ctrl.b'). null/empty disables — hotkey is opt-in safe, requires a modifier. | ctrl.b |
| watchdog_channel | No | Optional absolute CHOP path + channel ('node:channel') — when non-zero, forces Blackout on. Lets external monitors trigger blackout deterministically without Python. | |
| recovery_mode | No | When the watchdog returns to 0: 'manual' keeps it black until the artist clears it; 'auto_on_clear' fades back in. | manual |
| show_safe_label | No | Optional caption baked into the black frame (Text TOP composited over the dimmed output). Empty/null = no caption. | SHOW SAFE |
| expose_controls | No | Build the control panel with Blackout / Emergency / Fade Seconds / State LED. |