Nodes/RyanOnTheInside/ACE-Step 1.5 Latent Channel EQ (Experimental) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

ACE-Step 1.5 Latent Channel EQ (Experimental) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Post-processing EQ for a music model's latent space

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
ACE-Step 1.5 Latent Channel EQ (Experimental) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • model
  • temporal_mask
  • keystone_config
  • MODEL
β—„hook_modepost_cfgβ–Ί
β—„g0g4_gain1.00β–Ί
β—„g1_gain1.00β–Ί
β—„g5g6_gain1.00β–Ί
β—„g2_gain1.00β–Ί
β—„g3_gain1.00β–Ί
β—„g7_gain1.00β–Ί
β—„effect_start_pct0.00β–Ί
β—„effect_end_pct1.00β–Ί

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 *_gain sliders - 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.

Categoryaudio/acestep

Inputs (12)

NameTypeDefaultDescription
modelMODELβ€”
hook_modeCOMBOpost_cfgPipeline point to apply multiplicative scaling.
g0g4_gainFLOAT1.000–2Channels 0-7 + 32-39. Sensitivity: 0.9 (near-linear).
g1_gainFLOAT1.000–2Channels 8-15. INVERTED (sensitivity: -0.5). Strongest spectral centroid shift of any group.
g5g6_gainFLOAT1.000–2Channels 40-55. Sensitivity: 1.0 (direct).
g2_gainFLOAT1.000–2Channels 16-23. Sensitivity: 0.5 (conservative). Largest perceptual distance of any group.
g3_gainFLOAT1.000–2Channels 24-31. Sensitivity: 1.0. Strongest overall group by avg effect. Boost >1.5 reported to cause pitch shifting.
g7_gainFLOAT1.000–2Channels 56-63. INVERTED (sensitivity: -1.0).
effect_start_pctFLOAT0.000–1Denoising progress to start applying effect (0=from start)
effect_end_pctFLOAT1.000–1Denoising progress to stop applying effect (1=until end)
temporal_maskoptMASKBlends gains toward neutral (1.0) where mask is 0.
keystone_configoptKEYSTONE_CONFIGOptional keystone channel config. Multiplies on top of band gains.

Outputs (1)

NameTypeDescription
MODELMODELβ€”