AceMusic Conditioning
Bundle every knob into one object — the wireable version of your song's spec
- conditioning
AceMusic Conditioning is the pack's "assemble your song spec in one place" node. Instead of scattering caption, lyrics, BPM, key, duration, and language across a generator's widgets, this node gathers them into a single ACEMUSIC_COND object that you feed to AceMusic Generator (from Conditioning). Where AceMusic Settings is the static config hub for the Text2Music path, Conditioning is the wireable one - its inputs accept force-input wires, which means you can build the song spec dynamically from other nodes' outputs.
Inputs:
- caption - required, the style description (force-input, so wire it from AceMusic Caption Input or any string source).
- lyrics - optional words, force-input.
- bpm - 0 to 300, default 0. As in Settings, 0 means auto - the node converts it to "no BPM specified" and lets the model decide.
- keyscale - optional key, default blank (auto).
- duration - 5 to 240 seconds, default 30.
- vocal_language - default
unknown, which the engine treats as "don't force a language."
One output: conditioning, an ACEMUSIC_COND object that goes into the from-conditioning generator.
How it works
Mechanically it's a packager: it takes the six values and bundles them into a dict. bpm at 0 is converted to None internally, which is the pack's way of saying "don't emit a BPM tag." The generator that consumes it then folds the rest into the text prompt exactly like the Settings path does - caption plus BPM: …, Key: …, Language: … tags. So you're not getting different behavior from the Settings flow; you're getting a different way to wire the behavior, and that difference matters when your parameters come from other nodes.
That's the real reason this node exists: it's the bridge for programmatic workflows. Feed it the outputs of AceMusic Create Sample (which produces a caption, lyrics, BPM, key, and duration from a natural-language query) and you get a fully automatic "describe a song → get a full spec" pipeline. That combo is the pack's flagship hands-off flow.
Installing it
Via ComfyUI Manager, search "ComfyUI-AceMusic", or:
cd ComfyUI/custom_nodes
git clone https://github.com/hiroki-abe-58/ComfyUI-AceMusic.git
cd ComfyUI-AceMusic
pip install -r requirements.txt
pip install git+https://github.com/ace-step/ACE-Step.git
Standard pack install; ACE-Step is the separate engine install whose pinned == requirements are the usual failure point (relax them in a clone or install deps manually).
Common issues
- Conditioning won't connect to my generator - it only plugs into AceMusic Generator (from Conditioning). The regular Text2Music generator expects a
settingsobject instead; don't mix the two types. - BPM/key set but the model ignores them - you're at 0/blank (auto). Set explicit values to force them.
- Caption disappears from the output -
captionis the required socket; if it's empty the whole spec has nothing to say. Wire it properly.
If you only ever build one workflow, you can skip this node and use Settings + the regular Generator. But the moment you want parameters computed by other nodes - and Create Sample makes that tempting - Conditioning is the adapter that makes it click.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| caption | STRING | — | |
| lyricsopt | STRING | — | |
| bpmopt | INT | 00–300 | — |
| keyscaleopt | STRING | — | |
| durationopt | FLOAT | 30.005–240 | — |
| vocal_languageopt | STRING | unknown | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | ACEMUSIC_COND | — |