H3 Studio Join
Crossfade the Continuations, Leave the Cuts as Cuts
- videos
- music
- video
H3 Studio Join exists because concatenating rendered scenes looks worse than it should. A scene that continues the previous one regenerated the previous scene's last frames as its own opening. If you butt-join the clips, you get a visible stumble where those regenerated frames begin - the model's re-draw doesn't match the original pixel for pixel, and it shows.
This node dissolves that seam. Author's words: "in place of Concatenate Video."
What it does
Where a scene continues the one before, the end of that one crossfades into the head the continuation regenerated over it - picture and sound together. Where there's a real cut, nothing happens: cuts stay cuts. And the film keeps its length, because the fades replace the regenerated heads rather than appending to them.
crossfade is the frames each continuation fades in over, 0–39, default 8. At 0 it butt-joins, exactly like core's Concatenate Video - which makes it a genuinely useful A/B switch for seeing how much the fade is buying you.
There's a case worth calling out: a cut whose sound carries on fades only its sound. Picture stays hard. That's the right call for a scene change with a continuous music bed or ambience, and it's the kind of detail that separates a node built by someone who has shipped an edit from one built to a spec.
Inputs and outputs
videos - the scenes' clips, marked as an input list: End Loop's output with accumulate on. This is the wire that matters.
Then crossfade, an optional music AUDIO input for a score across the whole film, music_volume (default 0.8, "the score's level under the film's own sound") and music_fade (0–10 seconds, default 2, the score's fade-out at the end of the film).
One output: video. Into Save Video, or on into more graph.
The music advice
Leave the studio's own music field empty if you're scoring here. Otherwise H3 writes music into every scene - because it generates audio natively and will happily do so - and you end up blending a real score over the top of one the model invented. Pick one place to do music and stick to it.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzH3
Restart, ComfyUI 0.30.0+. Nothing extra for this node; it's pure assembly.
Gotchas
Everything is hard cuts. Either crossfade is 0, or none of your scenes are actually set to Continue - cuts stay cuts by design, and a Cut in the studio means there's nothing to dissolve. For most workflows this is a H3 Studio Film question anyway: that node joins the current takes with the same logic and no loop.
Nothing comes out. videos is an input list expecting the accumulated output of a loop. If End Loop's accumulate is off, you're handing it one clip.
The fade is too short or non-existent. The fade can only run as long as the frames the continuation actually carries. There's a ceiling of 39 frames, and a scene continuing with fewer head frames has less to work with.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| videos | VIDEO | The scenes' clips: End Loop's output, accumulate on. | |
| crossfade | INT | 80–39 | Frames each continuation fades in over (at most the frames it carries). 0 butt-joins, like Concatenate Video. A cut whose sound carries on fades only its sound. |
| music_volume | FLOAT | 0.800–2 | The score's level under the film's own sound. |
| music_fade | FLOAT | 2.000–10 | Seconds the score fades out over at the end of the film. |
| musicopt | AUDIO | A score to play under the whole film, one piece across every cut. Leave the studio's music empty so H3 doesn't write its own into each scene. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |