Nodes/RyanOnTheInside/Mask to Audio Mask (ACE 1.5) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Mask to Audio Mask (ACE 1.5) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

The ACE-1.5 version of the spatial-to-audio mask bridge

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Mask to Audio Mask (ACE 1.5) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • audio_latents
  • spatial_mask
  • MASK
β—„frame_summaryaverageβ–Ί

Same job as the pack's MaskToAudioMask node, built for a newer version of the model it targets. It takes an image-space mask and a set of audio_latents from ACE-Step and collapses the spatial mask down into a mask shaped to the audio's own timeline - one value per frame of audio rather than per pixel of image - so a spatial mask can steer where in time an audio-generation step focuses.

The number in the name is the whole story: this is the version built for ACE 1.5's latent format specifically, as distinct from the pack's other node built for ACE 1.0. They share an identical schema - same inputs, same options - but aren't interchangeable, because the underlying latent shape ACE 1.5 produces differs from 1.0's. Match the node to whichever ACE checkpoint you're actually running; picking the wrong one won't silently misbehave, it'll error on the shape mismatch.

How it works

frame_summary controls how each frame's 2D mask collapses down to the single number that frame needs on the audio timeline: average takes the mean across the mask, max/min take the extremes, and center_pixel reads just the value at the mask's center. Pick based on what your mask represents - a loose region you want represented by its overall coverage calls for average; a specific point of interest with the rest as context calls for center_pixel.

The inputs and output

  • audio_latents (required, LATENT) - the ACE 1.5 audio latent whose timeline this mask gets shaped against.
  • spatial_mask (required, MASK) - the per-frame image-space mask being collapsed.
  • frame_summary (required, enum: average/max/min/center_pixel) - the reduction method per frame.

Output is a single MASK, shaped to the audio latent's timeline rather than image pixel dimensions - it's an audio-conditioning mask, not something to composite back over the source image.

How to install it

The pack's README came back empty for install specifics, so the standard path applies:

ComfyUI Manager: search "RyanOnTheInside", install, restart.

Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside

Restart ComfyUI afterward. Like its 1.0 sibling, this node assumes you've already got an ACE-Step audio latent pipeline built elsewhere in your graph - it reshapes a mask to fit that pipeline, it doesn't produce audio latents on its own.

Troubleshooting

If this node throws a shape-related error, double-check you're actually running an ACE 1.5 pipeline and not accidentally mixing it with 1.0-era latents - the two aren't drop-in compatible, that's the whole reason two separate nodes exist. If you're not sure which ACE version your setup is on, check whatever node loads your ACE checkpoint; matching the mask-bridge node's version to the checkpoint's version is the fix, not tweaking frame_summary. On the reduction choice itself: average is the safer default for a loosely-drawn region, but if a small masked area is getting washed out in the result, switch to max so any masked pixel in the frame registers rather than being diluted by everything around it.

Categoryconditioning/audio

Inputs (3)

NameTypeDefaultDescription
audio_latentsLATENTβ€”
spatial_maskMASKβ€”
frame_summaryCOMBOaverage4 options: average, max, min, center_pixel

Outputs (1)

NameTypeDescription
MASKMASKβ€”