Pipeline nodes
DCC bridges, metadata, audio, project handoff, and studio integration.
7 nodes. All sections
Audio Cut
RadianceAudioCut

Detect beat, onset, or transient events in audio for video cut points.
Inputs
| Input | Type | Default | Range or choices | What it does |
|---|---|---|---|---|
audio_filepath |
string | /path/to/audio.wav |
Absolute path to audio file (WAV, MP3, FLAC, AAC, etc.) | |
fps |
float | 24 | 1 to 240, step 0.001 | Frame rate of the target video sequence |
method |
choice | beats |
beats, onsets, transients |
Honoured by the librosa backend. scipy always finds energy onsets and ffmpeg always finds silence ends; the report says so. |
sensitivity |
float | 0.5 | 0 to 1, step 0.01 | 0 = only strong peaks, 1 = detect all micro-variations |
min_interval_frames |
int | 12 | Minimum frames between consecutive cut points | |
backend |
choice | Auto |
Auto, librosa, scipy, ffmpeg |
Auto: librosa if installed, else scipy, else ffmpeg. scipy finds energy onsets; ffmpeg finds silence ends, its threshold running from -30 dB (sensitivity 1) to -10 dB (sensitivity 0). |
frame_offset (optional) |
int | 0 | Add this value to every returned frame index (useful when audio starts mid-sequence) | |
max_cuts (optional) |
int | 0 | If > 0, keep N cut points evenly spaced through the detected list (the backends do not return per-cut strength). |
Outputs
| Output | Type |
|---|---|
cut_frames_json |
STRING |
cut_times_json |
STRING |
cut_count |
INT |
analysis_report |
STRING |
Audio Transcribe
RadianceAudioTranscribe

Transcribe speech from an audio or video file using Whisper.
Inputs
| Input | Type | Default | Range or choices | What it does |
|---|---|---|---|---|
audio_filepath |
string | /path/to/audio.wav |
Absolute path to audio/video file | |
backend |
choice | Auto |
Auto, local_whisper, openai_api, whisper_cli |
Auto: local openai-whisper if installed, else the OpenAI API if a key resolves, else the whisper CLI on PATH. Failures are written to transcribe_report, not raised. |
model_size |
choice | base |
tiny, base, small, medium, large, large-v2, large-v3 |
Whisper model for local_whisper and whisper_cli (larger is slower and more accurate). openai_api always uses whisper-1. |
language |
choice | auto |
auto, en, ar, zh, fr, de, es, ja, ko, pt, and 6 more |
Spoken language code passed to Whisper. auto lets Whisper detect it. |
openai_api_key_env (optional) |
string | OPENAI_API_KEY |
Environment variable name containing the OpenAI API key. | |
openai_api_key (optional) |
string | Legacy fallback only. Prefer openai_api_key_env so workflows do not store secrets. | ||
include_timings (optional) |
boolean | on | Include per-segment timestamps in segments_json | |
max_segment_chars (optional) |
int | 0 | If > 0, split long segments at this character count |
Outputs
| Output | Type |
|---|---|
transcript |
STRING |
segments_json |
STRING |
segment_count |
INT |
transcribe_report |
STRING |
DCC Bridge
RadianceMCP

DCC Bridge — Export frames as EXR/video for DCC consumption, or start a TCP bridge server for command/control between ComfyUI and DCC apps.
Inputs
| Input | Type | Default | Range or choices | What it does |
|---|---|---|---|---|
mode |
choice | Export Frames |
Export Frames, Bridge Server |
Export Frames = save EXR/video for DCC. Bridge Server = start TCP control server. |
source |
choice | Auto |
Auto, Images, Video, Sequence |
Auto = try Images, then Video, then Sequence. Select explicitly to avoid ambiguity. |
target |
choice | Nuke |
Nuke, Resolve, Fusion |
Target DCC application (metadata hint). |
output_path |
string | Output directory for EXR frames (Export mode) or bridge log (Bridge mode). | ||
format |
choice | EXR (16-bit half) |
EXR (16-bit half), EXR (32-bit float), EXR + H.264 MP4, EXR + ProRes MOV |
EXR bit depth. +H.264 or +ProRes also generates a video file. |
images (optional) |
IMAGE | Batch of frames to export (used when source is Images or Auto). | ||
video_path (optional) |
string | Path to a video file (.mp4, .mov, etc.) to decode and export (source=Video or Auto). | ||
sequence_path (optional) |
string | Path/pattern to an image sequence e.g. /frames/frame.%04d.exr (source=Sequence or Auto). | ||
fps (optional) |
float | 24 | 1 to 240, step 0.001 | Frame rate for video export. |
frame_start (optional) |
int | 1001 | 0 to 999999 | Starting frame number for EXR sequence export. |
frame_end (optional) |
int | 0 | 0 to 999999 | Last frame index (0 = read all found frames, for sequences only). |
filename_prefix (optional) |
string | frame |
Prefix for EXR filenames (e.g. frame_1001.exr). | |
bridge_port (optional) |
int | 1987 | 1024 to 65535 | TCP port for Bridge Server (default 1987). |
bridge_host (optional) |
string | 127.0.0.1 |
Bind address (127.0.0.1 = loopback only; 0.0.0.0 = all interfaces). |
Outputs
| Output | Type |
|---|---|
status |
STRING |
render_path |
STRING |
Export to Nuke
RadianceNukeSend

Export image as EXR and write a .nk Read-node snippet for direct Nuke import. Optionally load it into a running Nuke through the Radiance listener.
Inputs
| Input | Type | Default | Range or choices | What it does |
|---|---|---|---|---|
image |
IMAGE | Frame to export. A batch is written as a numbered EXR sequence. | ||
nuke_folder |
string | Output folder for image + .nk file. Created if missing. | ||
filename |
string | radiance_out |
Base name for the EXR file(s). The Read node gets the same name with anything Nuke does not allow in a node name replaced by _. | |
frame_start (optional) |
int | 1001 | 0 to 999999 | Starting frame number for the EXR sequence. |
push_to_nuke (optional) |
boolean | off | Also create or update the Read node in a running Nuke. Needs the Radiance listener running there (scripts/start_nuke_server.py). Both sides share a token from ~/.radiance/dcc_token, created automatically, or from RADIANCE_DCC_AUTH_TOKEN; for Nuke on another machine copy that file or set the variable there. | |
nuke_host (optional) |
string | 127.0.0.1 |
Nuke listener host (used only when push_to_nuke is on). RADIANCE_NUKE_HOST replaces the default. | |
nuke_port (optional) |
int | 1986 | 1024 to 65535 | Nuke listener port (used only when push_to_nuke is on). RADIANCE_NUKE_PORT replaces the default. |
half_float (optional) |
boolean | on | Write 16-bit half EXR (True) or 32-bit float EXR (False). | |
input_space (optional) |
choice | As is (no conversion) |
As is (no conversion), Scene-linear, sRGB display |
What the image holds. EXR is written scene-linear: sRGB display input is linearised first. As is: written unchanged, as before. |
Outputs
| Output | Type |
|---|---|
status |
STRING |
render_path |
STRING |
Export to Resolve
RadianceDaVinciSend

Export the current image to a DaVinci Resolve media folder as 16-bit TIFF, 8-bit PNG or EXR, and optionally import it into the open project's Media Pool.
Inputs
| Input | Type | Default | Range or choices | What it does |
|---|---|---|---|---|
image |
IMAGE | Frame to export. Batches write numbered files. | ||
resolve_folder |
string | DaVinci Resolve shared media folder. Created if missing. | ||
filename |
string | radiance_out |
Base filename (no extension). | |
bit_depth |
choice | 16bit |
16bit, 8bit, EXR |
16bit: 16-bit TIFF. 8bit: PNG. EXR: 16-bit half-float EXR. |
frame_start (optional) |
int | 1001 | 0 to 999999 | Starting frame number for numbered sequences. |
input_space (optional) |
choice | As is (no conversion) |
As is (no conversion), Scene-linear, sRGB display |
What the image holds. TIFF and PNG are written as sRGB display images (scene-linear input is encoded with the sRGB curve, clipped at 1.0); EXR is written scene-linear (sRGB input is linearised). As is: unchanged, as before. |
import_to_media_pool (optional) |
boolean | off | Also import the files into the open project's Media Pool, through Resolve's scripting API. Needs Resolve running on this machine with Preferences > System > General > External scripting using: Local (Resolve Studio). Each run imports again. |
Outputs
| Output | Type |
|---|---|
status |
STRING |
render_path |
STRING |
Linear Check
RadianceLinearCheck

Check that the shot metadata tags the image as scene-linear (Linear or ACEScg) before linear-only nodes. It reads the metadata tag only, not the pixel values.
Inputs
| Input | Type | Default | Range or choices | What it does |
|---|---|---|---|---|
image |
IMAGE | Image passed through unchanged. Its pixels are not inspected; only the shot metadata's colorspace tag is checked. | ||
shot_metadata |
RADIANCE_SHOT | Shot metadata whose 'colorspace' tag is tested. Tags containing 'Linear', or exactly 'ACEScg', pass; anything else (or a missing tag, read as 'Unknown') fails. | ||
action |
choice | Log Warning |
Log Warning, Strict Error, Ignore |
What to do when the tag is not linear: Log Warning writes to the console and continues, Strict Error stops the graph, Ignore does nothing. |
Outputs
| Output | Type |
|---|---|
image |
IMAGE |
shot_metadata |
RADIANCE_SHOT |
NDI Sender
RadianceNDISender

Stream frames in real time over the NDI network video protocol.
Inputs
| Input | Type | Default | Range or choices | What it does |
|---|---|---|---|---|
image |
IMAGE | Frames to stream, every frame of the batch in order. Sent as 8-bit BGRA, so with encoding None the values must already be display-ready 0-1. | ||
stream_name |
string | Radiance ComfyUI |
NDI source name shown to receivers. Changing it recreates the sender. | |
encoding |
choice | None (SDR) |
None (SDR), S-Log3 (HDR), LogC4 (HDR) |
Curve applied before 8-bit quantisation. None sends values as-is (clipped to 0-1). S-Log3 and LogC4 expect scene-linear input and apply only the log curve (no gamut change), so the receiver must decode with the same curve. |
enable_streaming |
boolean | on | Enable real-time NDI streaming during generation. Requires NDI SDK installed. | |
frame_rate |
float | 24 | 1 to 120, step 1 | Frame rate written into NDI video frame metadata. |
Outputs
| Output | Type | What it is |
|---|---|---|
image |
IMAGE | Pass-through image (unchanged). |
connected |
BOOLEAN | True if NDI frame was sent successfully this call. |