ACE-Step 1.5 Latent Channel EQ (Experimental) β‘π ‘π π £π
Post-processing EQ for a music model's latent space
- model
- temporal_mask
- keystone_config
- MODEL
This is the calmer sibling of this pack's Generation Steering node, and its own tooltip draws the line clearly: "this is post-processing EQ; for creative steering of generation, use the Generation Steering node instead." Where Generation Steering runs the model twice per step to actually change what gets generated, Latent Channel EQ just scales the model's existing output at a chosen point in the pipeline - closer to a real EQ in spirit, applied to latent channels instead of audible frequency bands.
How it works
ACE-Step 1.5's latent space groups into the same six named bands this pack's whole ACE-Step steering family uses, each with a gain slider defaulting to neutral (1.0): g0g4_gain (channels 0-7 + 32-39, sensitivity 0.9), g1_gain (channels 8-15, inverted, sensitivity -0.5, the strongest spectral centroid shift of any group), g5g6_gain (channels 40-55, sensitivity 1.0), g2_gain (channels 16-23, sensitivity 0.5, the largest perceptual distance), g3_gain (channels 24-31, sensitivity 1.0, the strongest overall group - boosting past 1.5 is documented as risking pitch shifting), and g7_gain (channels 56-63, inverted, sensitivity -1.0).
hook_mode is the setting unique to this node, and it decides where in the pipeline the scaling actually happens: post_cfg (the default, and the most common choice) scales the final denoised output; pre_cfg_cond_only scales just the conditional prediction before CFG is applied; pre_cfg_both scales both the conditional and unconditional predictions; and model_wrapper scales the output of every individual forward pass, which is the most invasive option and the one most likely to compound across steps. If you're not sure which to pick, post_cfg is the reasonable default to start from - it's the option this node ships with.
effect_start_pct/effect_end_pct window the EQ to only apply during part of the denoising trajectory, and an optional temporal_mask blends the gains back to neutral wherever the mask is 0 for time-localized control. The optional keystone_config - from this pack's Keystone Config node - layers six individually-tuned channels on top of the broader band gains for finer adjustment.
Inputs and outputs
model(required,MODEL) - the ACE-Step 1.5 model this node patches.hook_mode- where in the pipeline the scaling applies; this changes the character of the effect more than any single gain slider does.- The six
*_gainsliders - the actual EQ controls, 0 to 2, neutral at 1.0. - Output - a single
MODEL, wired onward exactly like the unpatched model would be.
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. As with the rest of this ACE-Step family, this needs an ACE-Step 1.5 checkpoint already available - it's a patch, not a full pipeline.
Common issues
If a gain adjustment does more (or less) than expected, hook_mode is the first thing to check before assuming the slider values are wrong - model_wrapper scaling every forward pass will compound its effect across denoising steps in a way post_cfg's single final scale won't, so the same gain value can read very differently depending on which mode you're in.
The same inverted-band caveat applies here as on this pack's other ACE-Step nodes: g1_gain and g7_gain move opposite to intuition when pushed above 1.0. And unlike Generation Steering, this node doesn't run an extra forward pass - it's a cheaper, lighter-weight operation, which is exactly why the author frames it as the node to reach for when you want tonal adjustment without paying the performance cost of true generation steering.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| hook_mode | COMBO | post_cfg | Pipeline point to apply multiplicative scaling. |
| 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 | β |