Latent Frequency Merge
Put the detail back, but louder (or quieter)
- low_pass
- high_pass
- mask
- LATENT
Latent Frequency Merge is the second half of the pack's frequency-split workflow: it takes a low_pass band and a high_pass band and stitches them back into one latent. Alone it's a boring adder. With its two gain dials, it's the sharpening/softening tool you always wanted - because the merge is where you decide how much detail you actually want back.
Think of it as the EQ mixer for your latent. low_gain controls the broad shapes and lighting; high_gain controls the texture and edges. Turn high_gain above 1 and you've done latent-space unsharp masking - edges snap, texture pops. Drop it toward 0 and the image goes soft and dreamy, the frequency-domain version of LatentGaussianBlur. Negative gains are allowed too, and they're how you do band-flipped weirdness: invert the high band and merge it, and the detail comes back as a negative-embossed shadow of itself.
How it works
The math is exactly as simple as it looks:
merged = low_pass * low_gain + high_pass * high_gain
Both gains default to 1.0, so a straight split→merge round trip reconstructs the original latent. The node validates that the two bands are the same shape (they will be, if they came from the same LatentFrequencySplit) and casts dtypes to match. The optional mask blends the adjusted result against the untouched low + high inside masked regions, so you can sharpen only a face or only a subject's clothing while the background stays as-is.
Three inputs, one output:
- low_pass / high_pass - from the split node.
- low_gain / high_gain - your EQ. This is the whole point.
- latent (
LATENT) - the recombined result, ready for a sampler or the VAE.
Installing it
It's part of the Skoogeer-Noise pack. ComfyUI Manager: search "Skoogeer-Noise", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/Skoogeer-Noise
# restart ComfyUI
Standard dependencies only - no model downloads.
Gotchas
- A clean round trip is the ground truth. Split, merge, compare. If the output doesn't match the input at gains 1.0/1.0, something upstream is wrong (wrong band, edited in between) - debug there before touching the gains.
- High gains are addictive and wrong.
high_gainof 2+ sharpens, but it also amplifies whatever the decoder can't handle - expect halos and crunchy edges. The pack's ownLatentChannelStatsPreviewis a good sanity check that channels haven't gone wild. - Negative gain flips, it doesn't remove. If you wanted to remove the high band cleanly, that's
high_gain = 0, not a negative - negatives invert polarity and produce emboss/edge-artifacts. - Flux.2 patchified latents: split and merge were both designed around unpatchified spatial ops, so wrap in
Unpatchify Flux.2 Latent→ split/merge →Patchify Flux.2 Latentper the pack README.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| low_pass | LATENT | Low-frequency latent band produced by Latent Frequency Split. | |
| high_pass | LATENT | High-frequency latent band to merge back in. | |
| low_gain | FLOAT | 1.00-5–5 | Multiplier for the low-pass band before merging. |
| high_gain | FLOAT | 1.00-5–5 | Multiplier for the high-pass band before merging. |
| maskopt | MASK | Optional mask (often image-sized) to limit the merge adjustments to masked areas. The mask is resized to latent resolution (bicubic when downscaling). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |