FL Audio Shot Iterator
Pull one shot's metadata at a time from a music-video sequence
- frame_count
- start_frame
- end_frame
- start_beat
- beat_count
- start_time
- duration
- is_last_shot
- total_frames
This node pairs with FL_Audio_Music_Video_Sequencer, which builds a full shot list for a music video from beat positions - pattern-based orchestration across A/B/C/D shot patterns, per the pack's own description - packaged as one JSON blob. FL_Audio_Shot_Iterator is the "give me shot #N" lookup: pass it that sequence JSON and an index, and it hands back every field you need to render exactly that shot.
How it works
It's a pure lookup node - no analysis, no generation, just reading one entry out of a larger sequence structure by index. That keeps the concerns cleanly separated: the sequencer decides what the shots are and where they fall, once, for the whole track; this node just lets you pull one shot's worth of metadata at a time so you can drive a render loop per shot without re-deriving anything.
The inputs and outputs that matter
Required: sequence_json - from FL_Audio_Music_Video_Sequencer; shot_index (0–10000, default 0 - 0-indexed).
Outputs, all describing the same shot from different angles: frame_count, start_frame, end_frame (INT - the video-frame window); start_beat, beat_count (INT - the same window expressed in beats); start_time, duration (FLOAT - the same window in seconds); is_last_shot (BOOLEAN - true once you've reached the final shot, your signal to stop iterating); total_frames (INT - the whole sequence's total length, available regardless of which shot you're currently on).
How to install it
ComfyUI Manager: search ComfyUI_Fill-Nodes, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart. This node is a plain JSON lookup - no extra dependencies of its own.
Common issues & troubleshooting
Building the render loop. ComfyUI's base graph doesn't have a native for-loop, so the practical pattern is either driving shot_index with a loop-capable node from elsewhere in your setup, or duplicating the render chain per shot for a short edit with a small, fixed number of shots. Either way, check is_last_shot as your stopping condition rather than assuming a fixed shot count in advance - sequences generated with different pattern configs won't all have the same number of shots.
shot_index past the end of the sequence. The field accepts values up to 10000 as a hard schema ceiling, but the real limit is however many shots your specific sequence actually has. Test against is_last_shot rather than assuming any particular count.
Shot boundaries look wrong. This node only reads what FL_Audio_Music_Video_Sequencer already decided - if a shot's timing or length looks off, the fix is in the sequencer's pattern configuration upstream, not here. This node has no parameters that would change shot boundaries even if you wanted them to.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| sequence_json | STRING | — | |
| shot_index | INT | 00–10000 | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| frame_count | INT | — |
| start_frame | INT | — |
| end_frame | INT | — |
| start_beat | INT | — |
| beat_count | INT | — |
| start_time | FLOAT | — |
| duration | FLOAT | — |
| is_last_shot | BOOLEAN | — |
| total_frames | INT | — |