H3 Stage Noise · External FreeNoise / Legacy Plan (T8 EXP)
Noise as an explicit, inspectable node
- noise
- model
- noise
- report_json
FreeNoise is the long-video trick where instead of drawing independent noise for every frame of a clip, you draw noise for a shorter window and then permute and blend it across the whole timeline. The point is temporal consistency: neighbouring frames start from correlated noise, so the model's job is closer to "continue this motion" than "invent 124 unrelated frames". It's usually hidden inside a sampler or a model patch, which means when it goes wrong you have no idea why your clip came out looped or frozen.
MiniMaxH3StageNoiseEXPT8 puts it on the canvas as a node. Wrap your NOISE provider with it, get a NOISE back, and the pack's own FreeNoise implementation does its work at generate time. It runs no diffusion at all.
Inputs
noise(required) - a Core-compatible noise provider (aRandomNoise, an empty-noise node, the pack's Modality-Stable AV Noise node - anything withgenerate_noiseand aseed).mode-disabled(default),paper_permutation,variance_preserving_blend, orfrom_model_plan. The first is an exact provider bypass. The middle two are the FreeNoise variants: the paper's straight permutation, or the blend that keeps the noise variance intact across window boundaries.base_seed(default 123456789) - the seed used for the rescheduled noise, separate from whatever seed your provider carries.reuse_ratio(default 0.65, 0–1) - how much of the window gets reused.segment_index(default 0) - which segment of the timeline this noise is for. The docs' note here is practically the node's whole user manual: the samesegment_indexused for both passes reproduces the old loops. That's your compatibility switch with legacy workflows.model(optional) - only read infrom_model_planmode, where it pulls the old FreeNoise configuration off a MODEL that already carries one. With no model plan and no mode, you get an exact bypass, and the config report explicitly is not execution.
Outputs: noise, and report_json.
Why you'd wire it instead of letting the sampler do it
Two reasons, both about knowing what happened. First, on a long-video graph the seed behaviour is the difference between a coherent pan and a loop, and being able to point at a node and say "this is where the temporal correlation comes from" is worth a lot when debugging. Second, this node preserves the source provider's seed and batch_index, and leaves the audio noise exactly as it was - video-only rescheduling. On a joint AV model, silently permuting the audio stream would be a disaster, so the pack's implementation deliberately doesn't.
If you're on the SPEED split route or a chunked long-video route, this is also how you feed a per-segment noise into a per-stage sampler while keeping the old loop semantics available.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Full restart of ComfyUI, then refresh the browser. Manager search: MiniMax H3 Audio T8. There's no dependency install - the pack ships an empty requirements.txt on purpose so a node install can't replace ComfyUI's Torch/CUDA stack - but you need recent ComfyUI core, since these nodes ride on native H3 support and the newer node API.
Gotchas
from_model_plan without a MODEL that actually carries a plan raises rather than guessing, which is the behaviour you want. If your clip looks like it's repeating motion, the usual suspects in order are: mode left at disabled (you get plain independent noise - and then it's not the node's fault), a segment_index reuse between passes, and a reuse_ratio high enough that the model has too little to work with.
Two expectations to drop. This node doesn't make generation faster - rescheduling noise is cheap, the diffusion is the expensive part. And report_json here reports the configuration, not proof that the sampling stage consumed it; the evidence path for that is the stage result and its audit.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| noise | NOISE | — | |
| mode | COMBO | disabled | 4 options: disabled, paper_permutation, variance_preserving_blend, from_model_plan |
| base_seed | INT | 1234567890–18446744073709550000 | — |
| reuse_ratio | FLOAT | 0.650–1 | — |
| segment_index | INT | 00–2147483647 | — |
| modelopt | MODEL | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| noise | NOISE | — |
| report_json | STRING | — |