Empty Ace Step 1.5 Audio Passthrough
The starting canvas for an ACE-Step track
- latent
- seconds
Every ACE-Step generation needs somewhere to start, the same way image workflows start from an Empty Latent Image. This is that node for audio: it builds an empty latent audio tensor of a given length, ready to be denoised by Sage_KSamplerAudioDecoder into an actual track.
The one design touch worth noting: this node passes its own seconds value back out as an output, not just as a widget you set once and forget. That's deliberate - the whole ACE-Step chain in this pack needs the length to agree at multiple points (the empty latent's duration and Sage_Ace15AudioEncode's duration field both need to match), and wiring the actual output value into the encode node instead of retyping the same number twice removes an easy way for them to drift out of sync.
Inputs and outputs
seconds- default 120, range 1–1000. The target length of your generated track. This is the number to change per song; everything else about the node is fixed.batch_size- default 1. How many independent audio examples to generate in the same queue - bump it up if you want several variations of the same prompt in one run, same idea as batch size on an image latent.
Two outputs: latent - the empty audio tensor itself, feeds into latent_audio on Sage_KSamplerAudioDecoder - and seconds, echoing the duration you set, meant to be wired into Sage_Ace15AudioEncode's duration input so the two nodes can't disagree about how long the track should be.
Installing it
ComfyUI Manager: search Sage Utils, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/arcum42/ComfyUI_SageUtils
cd ComfyUI_SageUtils
pip install -r requirements.txt
Restart ComfyUI afterward. This node itself needs no model downloads - it's just building an empty tensor of the right shape, the actual generation happens downstream with your ACE-Step checkpoint.
Common issues
The most common way to get an odd result here is typing the same duration into two places instead of wiring this node's seconds output into the encode node's duration field - it works either way in principle, but manually keeping two numbers in sync is exactly the kind of thing that quietly drifts after a few edits. Use the wire, not the retype.
Longer durations mean a proportionally larger latent to sample and decode, so if you're pushing toward the upper end of the range (close to 1000 seconds) on limited VRAM, expect it to behave the same way a very large image resolution does - slower, and more likely to hit memory limits during the decode step in Sage_KSamplerAudioDecoder. There's no tiled-decode equivalent for audio in this pack the way there is for images, so if you do run into memory trouble at long durations, shortening the track is currently the practical fix.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| seconds | FLOAT | 120.001–1000 | Length of the empty audio tensor in seconds. |
| batch_size | INT | 1 | Number of audio examples in the batch. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | The empty latent audio tensor for Ace Step 1.5. |
| seconds | FLOAT | The duration of the generated audio in seconds. |