Nodes/VRGameDevGirl Video Enhancement Nodes/VRGDG_LoadAudioSplitUpload
ComfyUI Node

VRGDG_LoadAudioSplitUpload

Slice an Audio Track Into Scene-Sized Chunks, Right in the Graph

By vrgamegirl19·Created about a year ago·Updated a day ago· 742
VRGDG_LoadAudioSplitUpload
  • 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
◄offset_seconds0.00►
◄scene_count1►
◄using_infinite_talkfalse►
◄duration_13.88►
◄duration_23.88►
◄duration_33.88►
◄duration_43.88►
◄duration_53.88►
◄duration_63.88►
◄duration_73.88►
◄duration_83.88►
◄duration_93.88►
◄duration_103.88►
◄duration_113.88►
◄duration_123.88►
◄duration_133.88►
◄duration_143.88►
◄duration_153.88►
◄duration_163.88►
◄duration_173.88►
◄duration_183.88►
◄duration_193.88►
◄duration_203.88►
◄duration_213.88►
◄duration_223.88►
◄duration_233.88►
◄duration_243.88►
◄duration_253.88►
◄duration_263.88►
◄duration_273.88►
◄duration_283.88►
◄duration_293.88►
◄duration_303.88►
◄duration_313.88►
◄duration_323.88►
◄duration_333.88►
◄duration_343.88►
◄duration_353.88►
◄duration_363.88►
◄duration_373.88►
◄duration_383.88►
◄duration_393.88►
◄duration_403.88►
◄duration_413.88►
◄duration_423.88►
◄duration_433.88►
◄duration_443.88►
◄duration_453.88►
◄duration_463.88►
◄duration_473.88►
◄duration_483.88►
◄duration_493.88►
◄duration_503.88►

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_N to match the lyric timing.
  • audio_N outputs don't match scene_count: remember the outputs are dynamic - they adapt to scene_count on the node, but some graphs don't re-render the node's ports until you reconnect them. If you change scene_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.

CategoryVRGDG

Inputs (54)

NameTypeDefaultDescription
audioAUDIO—
offset_secondsFLOAT0.00—
scene_countINT11–50—
using_infinite_talkCOMBOfalse2 options: false, true
duration_1optFLOAT3.88—
duration_2optFLOAT3.88—
duration_3optFLOAT3.88—
duration_4optFLOAT3.88—
duration_5optFLOAT3.88—
duration_6optFLOAT3.88—
duration_7optFLOAT3.88—
duration_8optFLOAT3.88—
duration_9optFLOAT3.88—
duration_10optFLOAT3.88—
duration_11optFLOAT3.88—
duration_12optFLOAT3.88—
duration_13optFLOAT3.88—
duration_14optFLOAT3.88—
duration_15optFLOAT3.88—
duration_16optFLOAT3.88—
duration_17optFLOAT3.88—
duration_18optFLOAT3.88—
duration_19optFLOAT3.88—
duration_20optFLOAT3.88—
duration_21optFLOAT3.88—
duration_22optFLOAT3.88—
duration_23optFLOAT3.88—
duration_24optFLOAT3.88—
duration_25optFLOAT3.88—
duration_26optFLOAT3.88—
duration_27optFLOAT3.88—
duration_28optFLOAT3.88—
duration_29optFLOAT3.88—
duration_30optFLOAT3.88—
duration_31optFLOAT3.88—
duration_32optFLOAT3.88—
duration_33optFLOAT3.88—
duration_34optFLOAT3.88—
duration_35optFLOAT3.88—
duration_36optFLOAT3.88—
duration_37optFLOAT3.88—
duration_38optFLOAT3.88—
duration_39optFLOAT3.88—
duration_40optFLOAT3.88—
duration_41optFLOAT3.88—
duration_42optFLOAT3.88—
duration_43optFLOAT3.88—
duration_44optFLOAT3.88—
duration_45optFLOAT3.88—
duration_46optFLOAT3.88—
duration_47optFLOAT3.88—
duration_48optFLOAT3.88—
duration_49optFLOAT3.88—
duration_50optFLOAT3.88—

Outputs (52)

NameTypeDescription
metaDICT—
total_durationFLOAT—
audio_1AUDIO—
audio_2AUDIO—
audio_3AUDIO—
audio_4AUDIO—
audio_5AUDIO—
audio_6AUDIO—
audio_7AUDIO—
audio_8AUDIO—
audio_9AUDIO—
audio_10AUDIO—
audio_11AUDIO—
audio_12AUDIO—
audio_13AUDIO—
audio_14AUDIO—
audio_15AUDIO—
audio_16AUDIO—
audio_17AUDIO—
audio_18AUDIO—
audio_19AUDIO—
audio_20AUDIO—
audio_21AUDIO—
audio_22AUDIO—
audio_23AUDIO—
audio_24AUDIO—
audio_25AUDIO—
audio_26AUDIO—
audio_27AUDIO—
audio_28AUDIO—
audio_29AUDIO—
audio_30AUDIO—
audio_31AUDIO—
audio_32AUDIO—
audio_33AUDIO—
audio_34AUDIO—
audio_35AUDIO—
audio_36AUDIO—
audio_37AUDIO—
audio_38AUDIO—
audio_39AUDIO—
audio_40AUDIO—
audio_41AUDIO—
audio_42AUDIO—
audio_43AUDIO—
audio_44AUDIO—
audio_45AUDIO—
audio_46AUDIO—
audio_47AUDIO—
audio_48AUDIO—
audio_49AUDIO—
audio_50AUDIO—