Nodes/RyanOnTheInside/ACE-Step 1.5 Task Text Encode βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

ACE-Step 1.5 Task Text Encode βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

The one node that sets prompt, lyrics, BPM, and generation task at once

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
ACE-Step 1.5 Task Text Encode βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • clip
  • conditioning
β—„textA melodic electronic track with soft synthsβ–Ί
β—„task_typeβ–Ύβ–Ί
β—„track_nameNoneβ–Ί
β—„lyricsβ–Ί
β—„bpm120β–Ί
β—„duration60.0β–Ί
β—„keyscaleC majorβ–Ί
β—„timesignature4β–Ί
β—„languageenβ–Ί
β—„seed0β–Ί
β—„cfg_scale2.0β–Ί
β—„temperature0.85β–Ί
β—„top_p0.90β–Ί
β—„top_k0β–Ί
β—„min_p0.000β–Ί

If you've done text-to-image, this is your CLIPTextEncode for music - except it also has to tell ACE-Step 1.5 what kind of job it's doing, because "generate a song from scratch," "repaint eight bars," and "make a cover of this track" all need genuinely different information. That's the whole reason this node exists as one big encoder instead of a plain text box: task_type changes what the rest of the fields even mean.

ACE-Step is RyanOnTheInside's own project - he's the one building native ComfyUI support for it, posting his own progress updates and workflows on Reddit rather than this being a random third-party wrapper, and the ACE-Step-1.5 feature set (LoRA blending, temporal latent masking, reference-latent timbre control) has been landing fast through 2026. This node is the entry point to essentially all of it.

How it works

You write a prompt (and optionally lyrics), pick a task_type, and the node either runs the language-model-side audio code generation (for fresh generation) or skips straight to using semantic hints pulled from a source track (for cover/extract/lego-style tasks). The tooltip on task_type says it outright: "text2music/repaint use LM audio code generation (cfg_scale, temperature, top_p, top_k apply). cover/extract/lego use precomputed semantic hints from source audio instead." That single sentence explains why half this node's optional fields do nothing on certain tasks - they're LM sampling controls that only matter when the LM is actually generating new audio codes.

The inputs and outputs that matter

  • clip (CLIP, required) and text (STRING, required, multiline) - your prompt. The default placeholder, "A melodic electronic track with soft synths," gives you a sense of the style ACE-Step expects: descriptive, genre/instrumentation-forward text rather than image-style tag soup.
  • task_type (required) - text2music, repaint, cover, extract, or lego. This is the field that matters most; get it wrong and the rest of your settings are being ignored.
  • lyrics (optional, multiline) - for anything with vocals.
  • bpm (default 120), duration (default 60s, up to 2000), keyscale (default "C major"), timesignature, language - the composition-level controls.
  • track_name (optional, defaults to "None") - a stem target: vocals, drums, bass, guitar, keyboard, strings, percussion, synth, fx, brass, woodwinds, and a couple more. Useful when you want the model focused on one instrumental layer.
  • seed, cfg_scale (default 2), temperature (default 0.85), top_p (0.9), top_k (0), min_p (0) - the LM sampling knobs. Per the tooltips, every one of these explicitly has "no effect" on cover/extract/lego tasks. cfg_scale is prompt adherence, temperature/top_p/top_k/min_p are the usual sampling-diversity trade-offs.
  • Output - a single conditioning, which feeds into whichever ACE-Step guider matches your task_type.

How to install it

Via ComfyUI Manager, search "RyanOnTheInside" and install. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside.git
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

Restart ComfyUI. First run of any ACE-Step node in this pack pulls "silence latents" from HuggingFace automatically - that's a real network dependency on your first generation, not a bug if it takes a moment.

Common issues & troubleshooting

Changing cfg_scale or temperature does nothing. Check your task_type. Those fields are explicitly no-ops on cover, extract, and lego - the model is using semantic hints extracted from your source audio instead of generating fresh audio codes, so LM sampling parameters have nothing to act on.

Output ignores your BPM or key. These are strong hints, not hard constraints - ACE-Step, like most audio generation models, treats musical parameters as conditioning rather than a forced structure. Push cfg_scale up a bit if adherence feels loose, keeping in mind that only applies on text2music/repaint.

Lyrics come out garbled or the wrong language. Set language to match your lyrics rather than leaving it on the default - a mismatch between the lyric text and the declared language is a common source of pronunciation artifacts in multilingual audio-LM setups generally.

Categoryconditioning

Inputs (16)

NameTypeDefaultDescription
clipCLIPβ€”
textSTRINGA melodic electronic track with soft synthsβ€”
task_typeCOMBOtext2music/repaint use LM audio code generation (cfg_scale, temperature, top_p, top_k apply). cover/extract/lego use precomputed semantic hints from source audio instead.
track_nameoptCOMBONone13 options: None, vocals, drums, bass, guitar, keyboard, +7
lyricsoptSTRINGβ€”
bpmoptINT12010–300β€”
durationoptFLOAT60.01–2000β€”
keyscaleoptCOMBOC major42 options: A major, A minor, A# major, A# minor, Ab major, Ab minor, +36
timesignatureoptCOMBO44 options: 2, 3, 4, 6
languageoptCOMBOen51 options: en, zh, ja, ko, es, fr, +45
seedoptINT00–4294967295β€”
cfg_scaleoptFLOAT2.00–100Controls how closely the generated audio follows your text prompt. Higher values produce output that matches your description more literally, lower values allow more freedom. No effect on cover/extract/lego tasks, which use semantic hints from source audio instead of generating new audio codes.
temperatureoptFLOAT0.850–2Controls randomness and creativity in the generated audio. Lower values (0.7-0.85) produce more consistent, predictable results. Higher values (0.9-1.1) produce more varied, surprising output. No effect on cover/extract/lego tasks, which use semantic hints from source audio instead of generating new audio codes.
top_poptFLOAT0.900–1Limits how many possible audio choices are considered at each step. Lower values (e.g. 0.8) produce safer, more predictable output. Higher values allow more diversity. 1.0 disables this filter. No effect on cover/extract/lego tasks, which use semantic hints from source audio instead of generating new audio codes.
top_koptINT00–100Restricts each generation step to only the top K most likely choices. 0 disables this filter. Lower values (e.g. 40) reduce unlikely outputs while keeping variety. No effect on cover/extract/lego tasks, which use semantic hints from source audio instead of generating new audio codes.
min_poptFLOAT0.0000–1Minimum probability threshold for token sampling. Filters out tokens with probability below min_p Γ— max_probability. 0.0 disables this filter. No effect on cover/extract/lego tasks.

Outputs (1)

NameTypeDescription
conditioningCONDITIONINGβ€”