DA Input
Every knob of your workflow on one front panel
- prompt
- seed
- aspect_ratio
- resolution
- duration
- first_frame
- last_frame
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
- audio_1
- audio_2
- audio_3
- audio_4
- audio_5
- video_1
- video_2
- video_3
- video_4
- video_5
- video_audio_1
- video_audio_2
- video_audio_3
- video_audio_4
- video_audio_5
If your workflow is a mess of prompt boxes buried next to samplers and seeds typed into six different widgets, DA Input drags all the knobs onto one panel at the top. It's the entry-point node of DA_Nodes, a small and very new pack from dauncle2026 - one commit at the time of writing, plus an LTX-2 attention-guidance node and reference-latent helpers. Its whole job: hold your prompt, seed, aspect ratio, target resolution, duration, and optional image/audio/video filenames in one place, and hand each value out on its own typed wire. Fill the panel once, and you stop editing half a dozen scattered widgets per run.
The pattern this leans on is the same one behind ComfyUI's primitive/value nodes and Efficiency-style loaders: a value that lives in exactly one place can't silently drift out of sync in the other four. DA Input is the "one authoritative source" idea applied to a whole run's settings. One honest caveat before you expect magic: it is not a context bus. It doesn't fuse everything into one pipe object - prompt comes out as STRING, seed as INT, and so on, and you still drag each wire to where it belongs. What it saves you is the editing surface, not the wire count. For a one-screen workflow that's fine and actually easier to debug; if your real problem is forty noodles, you want a context pack instead.
The inputs that matter
The five scalar fields are the ones you'll touch every run:
- prompt - plain multiline text; the tooltip says it plainly, wire it to a CLIP Text Encode.
- seed - an INT with the
control_after_generatedropdown built in, so it can randomize or lock after each run. Wire it to your KSampler. - aspect_ratio - a combo, default
1:1 (Square), and it's literally ComfyUI core'sAspectRatioenum under the hood. - resolution - a target in megapixels, not pixels:
1.0 ≈ 1024x1024for square. That's the modern convention where models are specced by a megapixel band rather than fixed ratios - worth internalizing before you start typing 768s and 512s. - duration - seconds, default 5, clearly aimed at video runs.
The pair that trips people up: aspect_ratio and resolution are meant to be wired together into a Resolution Selector node, which converts ratio + megapixel budget into concrete width/height for your latent. Send one without the other and you're missing half the picture.
The file slots are optional loaders in disguise
Below the scalars is a grid of filename fields: first_frame, last_frame, image_1–image_10, audio_1–audio_5, and video_1–video_5. Each takes a filename that must exist in your ComfyUI input folder (subfolders like input/clips/thing.mp4 work). Empty means "skip" - the node outputs nothing on that slot and downstream just doesn't get fed.
Under the hood it's not doing anything exotic: each name is handed to ComfyUI's own LoadImage, LoadAudio, or LoadVideo. The neat bit is video: a single video_1 field produces two outputs - video_1 (the frames, as IMAGE) and video_audio_1 (the decoded soundtrack, as AUDIO) - so one reference clip becomes both visual conditioning and audio in a single field. That plus first_frame/last_frame/duration makes this clearly shaped for image-to-video and audio-synced video workflows.
Installing it
No README in the repo yet and no requirements.txt or model downloads - it only imports core ComfyUI modules, so install is the boring standard:
cd ComfyUI/custom_nodes
git clone https://github.com/dauncle2026/DA_Nodes
Then restart ComfyUI. Manager users can search "DA_Nodes"; it declares registry metadata in pyproject.toml, but with a same-day first commit it may not be listed yet - the git-clone route above always works.
One real prerequisite: this is written against ComfyUI's newer backend authoring API (io.ComfyNode / io.Schema, no NODE_CLASS_MAPPINGS). On a current ComfyUI that's just "how nodes are written now." On an install you haven't updated in a while, the node may fail to appear - update ComfyUI core first and check again.
Gotchas
- "Invalid file: xxx" on run means the filename isn't in your input folder. It's a validation check, not a mystery - check the path, including the subfolder spelling.
- The seed trap is alive here: because the seed widget has
control_after_generate, the number in the box after a run is the next seed, not the one that just rendered. Flip it tofixed, or set widget control mode to "Before" once in settings, or you'll keep chasing ghosts. - It's day one. One commit, zero community reports, nothing on the usual forums as of this writing. The code is a thin, readable wrapper over core loaders so the risk is low - but treat it as fresh territory: keep an eye on the repo, and don't be shocked if slots shift in the next commit.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt. Connect to CLIP Text Encode. | |
| seed | INT | 00–18446744073709550000 | Random seed. Connect to KSampler. |
| aspect_ratio | COMBO | 1:1 (Square) | Connect to Resolution Selector. |
| resolution | FLOAT | 1.00.1–16 | Target megapixels. Connect to Resolution Selector. 1.0 ≈ 1024x1024 for square. |
| duration | FLOAT | 5.00 | Duration in seconds. |
| first_frameopt | STRING | Filename in the input folder. Leave empty to skip. | |
| last_frameopt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_1opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_2opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_3opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_4opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_5opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_6opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_7opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_8opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_9opt | STRING | Filename in the input folder. Leave empty to skip. | |
| image_10opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_1opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_2opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_3opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_4opt | STRING | Filename in the input folder. Leave empty to skip. | |
| audio_5opt | STRING | Filename in the input folder. Leave empty to skip. | |
| video_1opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_2opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_3opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_4opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. | |
| video_5opt | STRING | Filename in the input folder. Decoded to frames and soundtrack. Leave empty to skip. |
Outputs (32)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| seed | INT | — |
| aspect_ratio | COMBO | — |
| resolution | FLOAT | — |
| duration | FLOAT | — |
| first_frame | IMAGE | — |
| last_frame | IMAGE | — |
| image_1 | IMAGE | — |
| image_2 | IMAGE | — |
| image_3 | IMAGE | — |
| image_4 | IMAGE | — |
| image_5 | IMAGE | — |
| image_6 | IMAGE | — |
| image_7 | IMAGE | — |
| image_8 | IMAGE | — |
| image_9 | IMAGE | — |
| image_10 | IMAGE | — |
| audio_1 | AUDIO | — |
| audio_2 | AUDIO | — |
| audio_3 | AUDIO | — |
| audio_4 | AUDIO | — |
| audio_5 | AUDIO | — |
| video_1 | IMAGE | Video frames |
| video_2 | IMAGE | Video frames |
| video_3 | IMAGE | Video frames |
| video_4 | IMAGE | Video frames |
| video_5 | IMAGE | Video frames |
| video_audio_1 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_2 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_3 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_4 | AUDIO | Soundtrack of the same-numbered video |
| video_audio_5 | AUDIO | Soundtrack of the same-numbered video |