Audio Temporal Mask (ACE 1.0) β‘π ‘π π £π
A flat, whole-clip mask for ACE-Step generations
- audio_latents
- MASK
Where AudioRegionMask carves out one specific time window, this node does the simpler thing: it stamps a single, uniform mask value across the entire length of your ACE-Step audio latent. No start/end time, no windowing - just "the whole clip, at this value." It's the base case you reach for when you want a flat mask to feed a repaint/extend guider (or as a starting point you'll layer other masks onto), rather than targeting one section.
How it works
Set value and the node produces a mask that's that value everywhere across the audio latent's timeline. The one wrinkle is length_mismatch: because a mask has to line up exactly with the latent it's applied to, this field decides what happens if the requested mask length doesn't cleanly match the input latent's actual length. Set it to repeat and the last value pads out the difference; set it to loop and the pattern wraps around instead. It's a small but important knob - get it wrong and you can end up with a mask that's silently shorter or misaligned with your audio.
This is the ACE-Step 1.0 build. There's a matching AudioTemporalMask15 for ACE-Step 1.5 generations, since the two versions don't share a latent shape.
The inputs and outputs that matter
audio_latents(LATENT, required) - the ACE-Step 1.0 latent the mask needs to match in length.value(default 0.5, range 0β1) - the uniform mask value applied across the whole clip.length_mismatch(repeatorloop, defaultrepeat) - how to handle a length mismatch between the mask and the audio latent.
Output: a single MASK spanning the full clip.
How to install it
Via ComfyUI Manager: search "RyanOnTheInside," install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside.git
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt
then restart. No dedicated model download for this node, but the pack auto-pulls ACE-Step's silence latent from HuggingFace the first time any ACE-Step node runs in a session - expect that one-time fetch.
Common issues & troubleshooting
Running this against ACE-Step 1.5 and getting shape errors. Switch to AudioTemporalMask15 - this node is built for 1.0's latent shape specifically.
Effect strength doesn't match what you expected. Since value applies flat across the whole clip, there's no per-region variation here - if you wanted a stronger effect in one part of the song and a weaker one elsewhere, you actually want AudioRegionMask (or feature-driven modulation upstream), not this node.
Mask seems to drift or repeat oddly at the tail end. That's length_mismatch doing its job (or not doing what you expected). If your generation and mask lengths aren't perfectly aligned, try switching between repeat and loop to see which one actually produces a clean result for your specific clip length.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_latents | LATENT | β | |
| value | FLOAT | 0.500β1 | β |
| length_mismatch | COMBO | repeat | 2 options: repeat, loop |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | β |