H3 Audio Join Smooth (internal)
Kill the click at the Extend seam — the tiny node that makes continuations sound right
- audio
- source_frames
- continuation_frames
- audio
When you Extend an H3 clip, you get a video that's supposed to be one continuous shot - but the audio is built as [source audio] glued to [generated audio], and the generated half has been through a lossy VAE round trip. The two sides rarely meet sample-for-sample, so a hard concat produces an audible click or pop right at the join. H3 Audio Join Smooth (internal) exists to make that seam inaudible.
The mechanism is a careful linear crossfade. It uses the frame counts of the source clip (source_frames at source_fps) and the continuation (continuation_frames at fps) to compute exactly where the join lands and how long the full clip should be. Then it overlaps the source tail and the generated head by a short crossfade, and re-pads to the frame-derived duration so audio stays in sync with video down to the sample.
Two design decisions are worth understanding, because they're what make it work:
- It's a linear crossfade, not equal-power. An equal-power blend would boost the middle of the seam - and since both sides are the same audio continuing, that sounds like a volume bump. Linear keeps the level steady.
- The default
fade_secondsis deliberately short (0.25s). Speech and music keep their rhythm; a long fade over a sentence would smear the words.
Inputs: audio (AUDIO), source_frames (IMAGE), source_fps (FLOAT, default 24), continuation_frames (IMAGE), fps (FLOAT, default 24), and fade_seconds (FLOAT, default 0.25, range 0–1). Output: the smoothed audio. If the input isn't a valid AUDIO dict, or the math can't line up, it passes through untouched rather than corrupting your clip - fail-safe by design.
Like the rest of the "(internal)" nodes here, this one is generated inside the Extend workflow by the pack's frontend; you won't wire it by hand, and it needs no extra models or packs beyond what Extend mode already pulls in (the H3 Motion Context MultiRef pack, per the README's requirements). The one knob worth knowing is fade_seconds: leave it at 0.25 unless you're actually hearing a click, and if you are hearing a click on a particular clip, nudging it to 0.4–0.5 usually buries it. It's a small node doing one job, but it's the difference between a continuation that sounds like one take and one that sounds like two files taped together.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| source_frames | IMAGE | — | |
| source_fps | FLOAT | 24.0001–240 | — |
| continuation_frames | IMAGE | — | |
| fps | FLOAT | 24.0001–240 | — |
| fade_seconds | FLOAT | 0.250–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |