VRGDG_LoadAudioSplitUpload
Slice an Audio Track Into Scene-Sized Chunks, Right in the Graph
- audio
- meta
- total_duration
- audio_1
- audio_2
- audio_3
- audio_4
- audio_5
- audio_6
- audio_7
- audio_8
- audio_9
- audio_10
- audio_11
- audio_12
- audio_13
- audio_14
- audio_15
- audio_16
- audio_17
- audio_18
- audio_19
- audio_20
- audio_21
- audio_22
- audio_23
- audio_24
- audio_25
- audio_26
- audio_27
- audio_28
- audio_29
- audio_30
- audio_31
- audio_32
- audio_33
- audio_34
- audio_35
- audio_36
- audio_37
- audio_38
- audio_39
- audio_40
- audio_41
- audio_42
- audio_43
- audio_44
- audio_45
- audio_46
- audio_47
- audio_48
- audio_49
- audio_50
The music-video pattern is scene-by-scene: you slice a song into chunks, generate a video per chunk, then stitch. VRGDG_LoadAudioSplitUpload is the slicing node - it takes an AUDIO tensor, splits it into up to 50 chunks, and hands you each chunk plus a meta dict describing the split. If you've used the pack's older splitter, this is the upload-friendly version: the audio comes in through the audio input rather than from a file path on disk, which means it plays nice with any audio source in your graph.
The mechanism is simple and honest: you tell it how many scenes (scene_count) and how long each chunk is (duration_1 through duration_N), and it cuts the waveform at those boundaries. It also has an infinite-talk mode (via using_infinite_talk) that pads chunks to a fixed internal length - useful for the pack's talking-head workflows where every scene must be exactly the same duration. The meta output and total_duration let downstream nodes (like VRGDG_CombinevideosV3) know how long each scene is, which is how the final stitch stays in sync with the music.
The inputs that matter
- audio - your AUDIO tensor.
- scene_count - how many chunks (1 to 50). This also drives the node's dynamic outputs: it shows exactly
audio_1..audio_N. - offset_seconds - skip this many seconds into the audio before the first cut (0 default).
- duration_1..duration_N - per-scene durations, default 3.88 seconds each. You set as many as you have scenes; each unused one just stays at default. For a fixed-timing talking-head pipeline, leave them equal. For music, set them to match the actual scene lengths (which you can get from your transcription/lyrics timestamps).
- using_infinite_talk -
"false"or"true". True pads chunks so every scene is the same length.
Outputs: meta (DICT with the durations), total_duration (FLOAT), and audio_1..audio_N (AUDIO) - one per scene, ready to feed per-scene video generation.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
Or search vrgamedev in ComfyUI Manager. No extra dependencies beyond torch/librosa, which the pack requirements cover.
Common issues
- Chunks cut in the middle of words: the split is duration-based, not silence-based. If you need clean phrase boundaries, transcribe first and set each
duration_Nto match the lyric timing. audio_Noutputs don't matchscene_count: remember the outputs are dynamic - they adapt toscene_counton the node, but some graphs don't re-render the node's ports until you reconnect them. If you changescene_count, drag a new connection.- Everything is 3.88 seconds even though your song isn't: that's the default. You have to set per-scene durations - the node can't guess your song's timing.
Honest take: it's a utility, not a marvel - you're still doing the timing work yourself. But it's the correct building block for the scene-by-scene music-video pattern, and the meta output is what makes the downstream combine node able to keep everything in sync. In the pack's ecosystem, it's the start of every music-video graph.
Inputs (54)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| offset_seconds | FLOAT | 0.00 | — |
| scene_count | INT | 11–50 | — |
| using_infinite_talk | COMBO | false | 2 options: false, true |
| duration_1opt | FLOAT | 3.88 | — |
| duration_2opt | FLOAT | 3.88 | — |
| duration_3opt | FLOAT | 3.88 | — |
| duration_4opt | FLOAT | 3.88 | — |
| duration_5opt | FLOAT | 3.88 | — |
| duration_6opt | FLOAT | 3.88 | — |
| duration_7opt | FLOAT | 3.88 | — |
| duration_8opt | FLOAT | 3.88 | — |
| duration_9opt | FLOAT | 3.88 | — |
| duration_10opt | FLOAT | 3.88 | — |
| duration_11opt | FLOAT | 3.88 | — |
| duration_12opt | FLOAT | 3.88 | — |
| duration_13opt | FLOAT | 3.88 | — |
| duration_14opt | FLOAT | 3.88 | — |
| duration_15opt | FLOAT | 3.88 | — |
| duration_16opt | FLOAT | 3.88 | — |
| duration_17opt | FLOAT | 3.88 | — |
| duration_18opt | FLOAT | 3.88 | — |
| duration_19opt | FLOAT | 3.88 | — |
| duration_20opt | FLOAT | 3.88 | — |
| duration_21opt | FLOAT | 3.88 | — |
| duration_22opt | FLOAT | 3.88 | — |
| duration_23opt | FLOAT | 3.88 | — |
| duration_24opt | FLOAT | 3.88 | — |
| duration_25opt | FLOAT | 3.88 | — |
| duration_26opt | FLOAT | 3.88 | — |
| duration_27opt | FLOAT | 3.88 | — |
| duration_28opt | FLOAT | 3.88 | — |
| duration_29opt | FLOAT | 3.88 | — |
| duration_30opt | FLOAT | 3.88 | — |
| duration_31opt | FLOAT | 3.88 | — |
| duration_32opt | FLOAT | 3.88 | — |
| duration_33opt | FLOAT | 3.88 | — |
| duration_34opt | FLOAT | 3.88 | — |
| duration_35opt | FLOAT | 3.88 | — |
| duration_36opt | FLOAT | 3.88 | — |
| duration_37opt | FLOAT | 3.88 | — |
| duration_38opt | FLOAT | 3.88 | — |
| duration_39opt | FLOAT | 3.88 | — |
| duration_40opt | FLOAT | 3.88 | — |
| duration_41opt | FLOAT | 3.88 | — |
| duration_42opt | FLOAT | 3.88 | — |
| duration_43opt | FLOAT | 3.88 | — |
| duration_44opt | FLOAT | 3.88 | — |
| duration_45opt | FLOAT | 3.88 | — |
| duration_46opt | FLOAT | 3.88 | — |
| duration_47opt | FLOAT | 3.88 | — |
| duration_48opt | FLOAT | 3.88 | — |
| duration_49opt | FLOAT | 3.88 | — |
| duration_50opt | FLOAT | 3.88 | — |
Outputs (52)
| Name | Type | Description |
|---|---|---|
| meta | DICT | — |
| total_duration | FLOAT | — |
| audio_1 | AUDIO | — |
| audio_2 | AUDIO | — |
| audio_3 | AUDIO | — |
| audio_4 | AUDIO | — |
| audio_5 | AUDIO | — |
| audio_6 | AUDIO | — |
| audio_7 | AUDIO | — |
| audio_8 | AUDIO | — |
| audio_9 | AUDIO | — |
| audio_10 | AUDIO | — |
| audio_11 | AUDIO | — |
| audio_12 | AUDIO | — |
| audio_13 | AUDIO | — |
| audio_14 | AUDIO | — |
| audio_15 | AUDIO | — |
| audio_16 | AUDIO | — |
| audio_17 | AUDIO | — |
| audio_18 | AUDIO | — |
| audio_19 | AUDIO | — |
| audio_20 | AUDIO | — |
| audio_21 | AUDIO | — |
| audio_22 | AUDIO | — |
| audio_23 | AUDIO | — |
| audio_24 | AUDIO | — |
| audio_25 | AUDIO | — |
| audio_26 | AUDIO | — |
| audio_27 | AUDIO | — |
| audio_28 | AUDIO | — |
| audio_29 | AUDIO | — |
| audio_30 | AUDIO | — |
| audio_31 | AUDIO | — |
| audio_32 | AUDIO | — |
| audio_33 | AUDIO | — |
| audio_34 | AUDIO | — |
| audio_35 | AUDIO | — |
| audio_36 | AUDIO | — |
| audio_37 | AUDIO | — |
| audio_38 | AUDIO | — |
| audio_39 | AUDIO | — |
| audio_40 | AUDIO | — |
| audio_41 | AUDIO | — |
| audio_42 | AUDIO | — |
| audio_43 | AUDIO | — |
| audio_44 | AUDIO | — |
| audio_45 | AUDIO | — |
| audio_46 | AUDIO | — |
| audio_47 | AUDIO | — |
| audio_48 | AUDIO | — |
| audio_49 | AUDIO | — |
| audio_50 | AUDIO | — |