Mask to Audio Mask (ACE 1.5) β‘π ‘π π £π
The ACE-1.5 version of the spatial-to-audio mask bridge
- audio_latents
- spatial_mask
- MASK
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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_latents | LATENT | β | |
| spatial_mask | MASK | β | |
| frame_summary | COMBO | average | 4 options: average, max, min, center_pixel |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | β |