Nodes/comfyui-acemusic/AceMusic Conditioning
ComfyUI Node

AceMusic Conditioning

Bundle every knob into one object — the wireable version of your song's spec

By hiroki-abe-58·Created 7 months ago·Updated 7 months ago· 42
AceMusic Conditioning
    • conditioning
    caption
    lyrics
    bpm0
    keyscale
    duration30.00
    vocal_languageunknown

    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 settings object 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 - caption is 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.

    CategoryAceMusic/Loaders

    Inputs (6)

    NameTypeDefaultDescription
    captionSTRING
    lyricsoptSTRING
    bpmoptINT00–300
    keyscaleoptSTRING
    durationoptFLOAT30.005–240
    vocal_languageoptSTRINGunknown

    Outputs (1)

    NameTypeDescription
    conditioningACEMUSIC_COND