ACE-Step 1.5 Denoising Trajectory EQ (Experimental) β‘π ‘π π £π
Steer what a song generates, not just how it sounds
- model
- temporal_mask
- keystone_config
- MODEL
Its own display name says "(Experimental)" and that's the honest framing to keep - this node isn't a mixing-desk EQ that reshapes a finished track's tone. Its own tooltip is explicit: it "changes what the model generates, not just how it sounds." It runs the ACE-Step 1.5 model twice per diffusion step and steers the generation along the difference between those two runs, nudging the trajectory of what gets generated in the first place. That's a meaningfully different, more experimental thing than post-processing EQ, and it costs an extra forward pass per step to do it.
How it works
ACE-Step's latent space groups into named channel bands, and this node exposes gain sliders for six of them - the pack author's own empirical mapping, documented right in the tooltips rather than left as a guess: g0g4_gain (channels 0-7 + 32-39, sensitivity 0.9, near-linear response), g1_gain (channels 8-15, inverted - sensitivity -0.5, but noted as producing the strongest spectral centroid shift of any group), g2_gain (channels 16-23, sensitivity 0.5, conservative but the largest perceptual distance of any group), g3_gain (channels 24-31, sensitivity 1.0, the strongest overall group by average effect - and explicitly flagged that boosting past 1.5 can cause pitch shifting), g5g6_gain (channels 40-55, sensitivity 1.0, direct response), and g7_gain (channels 56-63, inverted, sensitivity -1.0). All six default to 1.0, which is neutral - nothing changes until you move a slider off that.
The "inverted" groups are worth internalizing before you touch them: for g1_gain and g7_gain, pushing the slider up from 1.0 steers the effect in the opposite direction you'd intuitively expect from the other four bands. guidance_scale is the master strength control - 0 turns steering off entirely, positive values steer toward whatever emphasis the band gains encode, negative values steer away from it, and it accepts a list of floats if you want the strength itself to change over the course of generation. effect_start_pct/effect_end_pct window where in the denoising trajectory (0 to 1, start to end) the steering is active at all, and an optional temporal_mask blends the gains back toward neutral (1.0) wherever the mask is 0, giving you time-localized control without touching the sliders themselves. If you need finer control than six broad bands, the optional keystone_config input - built with this pack's Keystone Config node - multiplies six individual high-impact channels on top of the band gains.
Inputs and outputs
model(required,MODEL) - your ACE-Step 1.5 model; this node patches it rather than replacing it.guidance_scale- overall steering strength, including direction (negative steers away).- The six
*_gainsliders - the actual steering controls, 0 to 2, neutral at 1.0. keystone_config(optional,KEYSTONE_CONFIG) - for surgical control on top of the band-level gains.- Output - a single
MODEL, wired onward into your sampler/guider setup in place of the unpatched model.
Installing it
Install through ComfyUI Manager (search RyanOnTheInside) or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
Then pip install -r requirements.txt and restart ComfyUI. You need an ACE-Step 1.5 checkpoint already set up separately - this node has nothing to steer without one, and it's specifically the 1.5 generation of the model, not earlier ACE-Step releases.
Common issues
The extra forward pass per denoising step is a real cost, not a rounding error - expect generation to take noticeably longer with this node active than with a plain guider, since every step now runs the model twice. If a generation comes out slower than expected and you didn't account for that, this is why.
Given the "Experimental" label and the author's own note that perceptual effects are content-dependent, don't expect the same slider value to produce the same result across different prompts or genres - treat the documented sensitivities as a starting map, not a guarantee, and start with small moves (the pack's own safe-zone guidance elsewhere in this family is roughly 0.75-1.25) before pushing toward the extremes where g3_gain in particular risks pitch shifting.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| guidance_scale | FLOAT | 1.0-5β5 | Guidance strength. 0=off, positive=steer toward emphasis, negative=steer away. Accepts a list of floats for temporal scheduling. |
| g0g4_gain | FLOAT | 1.000β2 | Channels 0-7 + 32-39. Sensitivity: 0.9 (near-linear). |
| g1_gain | FLOAT | 1.000β2 | Channels 8-15. INVERTED (sensitivity: -0.5). Strongest spectral centroid shift of any group. |
| g5g6_gain | FLOAT | 1.000β2 | Channels 40-55. Sensitivity: 1.0 (direct). |
| g2_gain | FLOAT | 1.000β2 | Channels 16-23. Sensitivity: 0.5 (conservative). Largest perceptual distance of any group. |
| g3_gain | FLOAT | 1.000β2 | Channels 24-31. Sensitivity: 1.0. Strongest overall group by avg effect. Boost >1.5 reported to cause pitch shifting. |
| g7_gain | FLOAT | 1.000β2 | Channels 56-63. INVERTED (sensitivity: -1.0). |
| effect_start_pct | FLOAT | 0.000β1 | Denoising progress to start applying effect (0=from start) |
| effect_end_pct | FLOAT | 1.000β1 | Denoising progress to stop applying effect (1=until end) |
| temporal_maskopt | MASK | Blends gains toward neutral (1.0) where mask is 0. | |
| keystone_configopt | KEYSTONE_CONFIG | Optional keystone channel config. Multiplies on top of band gains. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | β |