Nodes/ACE-Step-ComfyUI/ACE-Step Text2music Gen Params
ComfyUI Node

ACE-Step Text2music Gen Params

The node that turns a sentence into a song — or a cover, or a remix

By ace-step·Created 7 months ago·Updated 6 months ago· 78
ACE-Step Text2music Gen Params
  • refer_audio
  • src_audio
  • gen_params
sample_modefalse
vocal_languageen
sample_querya funk rock song with groovy bass and punchy drums
is_instrumentalfalse
captiontight and groovy disco-funk track driven by a hyper-articulate slap bassline weaving syncopated sixteenth-note grooves with percussive thumb pops and ghost-note textures, locked into a crisp four-on-the-floor drum machine beat. Clean, funky guitar provides sparse chord stabs to leave sonic space for the bass, while filtered synth pads swell subtly in the background. The smooth male lead vocal glides over the infectious groove. The arrangement builds through verses and catchy choruses, then strips down to drums and bass for an extended, harmonically adventurous solo section: the bassist unleashes a technically explosive showcase—rapid double-thumb slaps morph into tapped harmonics, chromatic walking lines resolve into chordal double-stops, and envelope-filter sweeps cascade into distorted octave leaps. After the solo’s climax, wah-drenched funk guitar re-enters for a call-and-response exchange with the bass before the full band drops into a final chorus and a gradual fade out, with the bassline’s final harmonic ringing into silence.
lyrics[Intro] [Heavy guitar riff and drums] [Vocal scream] Yeah! [Guitar Solo] [Verse 1] [Pre-Chorus] [Chorus] [Verse 2] [Pre-Chorus] [Chorus] [Bridge] [Guitar Solo] [Chorus] [Outro] [Song ends abruptly]
autotrue
cover_strength0.00
remix_strength1.00
is_repaintfalse
bpm120
key
duration30
time_signature4
repaint_start0.0
repaint_end0.0
audio_codes

This is the creative heart of the ACE-Step pack. ACE-Step Text2music Gen Params is where you describe the music, write the lyrics, and decide whether you're making a track from scratch, covering an existing song, or regenerating a slice of one. Everything you configure here gets packed into a gen_params bundle that feeds the Text2music Server node - this node builds the instructions, the Server node executes them.

The one decision that shapes everything else is sample_mode. OFF (the default) means you're in manual mode: you write the caption (style description) and lyrics yourself. ON means you type a single sentence into sample_query - "a funk rock song with groovy bass and punchy drums" is the default - and an LLM writes the caption, lyrics, bpm, key, duration, and time signature for you, then hands the whole package to the generator. If you want a quick sketch and don't care about the details, sample mode gets you there in one prompt.

The fields that matter

  • vocal_language - 51 options, default en. Set the singing language; unknown is there if you want to let the model guess.
  • caption - the style/genre description. The default is a hilariously detailed disco-funk spec; you'll replace it, but it's a good example of how much texture ACE-Step responds to.
  • lyrics - with [verse], [chorus] section tags. Leave it empty for an instrumental. In manual mode the pack treats empty lyrics as instrumental automatically.
  • auto - ON (default) lets the language model decide bpm, key, duration, and time signature. OFF reveals bpm, key (e.g. C major), duration (seconds, -1 = model decides), and time_signature so you can pin them down.

The other controls only do anything when you feed it audio, which is what makes this node more than a text-to-music form:

  • src_audio (AUDIO) - connect a source song and the task auto-switches to cover. Tune remix_strength (1.0 = preserve the original) and cover_strength (noise injection, 0 = clean cover). Heads up from the community: ACE-Step deliberately doesn't preserve the original melody on covers - a choice to dodge copyright trouble with commercial songs, not a bug.
  • is_repaint - with a source connected, this flips to repaint mode: set repaint_start / repaint_end in seconds to regenerate just that time range while keeping the rest of the track.
  • refer_audio (AUDIO) - reference audio that guides style and timbre, usable in any mode. It's guidance, not a source.
  • audio_codes - paste tokens from an Audio Codes node to use a previous generation's internal representation as the source instead of raw audio.

How it actually works

Under the hood the node classifies the task before bundling: repaint if is_repaint is on with a source, cover if any source or codes are present, otherwise plain text2music. When auto is on it zeroes out the manual bpm/key/duration so the server's LLM fills them in. The audio inputs get encoded to WAV and embedded in the request as multimodal content - the cloud API, and your local ACE-Step server, accept audio directly in the prompt.

Install

Ships in the ACE-Step-ComfyUI pack: ComfyUI Manager → search ACE-Step-ComfyUI, or

cd ComfyUI/custom_nodes
git clone https://github.com/ace-step/ACE-Step-ComfyUI.git
cd ACE-Step-ComfyUI
pip install -r requirements.txt

then restart ComfyUI. Dependencies are just torch, numpy, and requests - all the real compute happens server-side.

Common issues

The classic beginner trap: you toggle sample_mode ON, then try to edit caption/lyrics and wonder why nothing changes. In sample mode only sample_query, vocal_language, and is_instrumental are honored - everything else is LLM-decided. And if you're in manual mode expecting a song but get an instrumental, you probably left lyrics empty, which the pack reads as "no vocals." One more: remember the gen_params output has to reach the Server node's gen_params input - this node does nothing visible until that wire is connected and you hit Queue.

Categoryapi node/audio/ACE-Step

Inputs (19)

NameTypeDefaultDescription
sample_modeBOOLEANfalseON: use sample_query to let LLM generate caption/lyrics/metadata. OFF: use manual caption and lyrics below.
vocal_languageCOMBOen51 options: en, zh, ja, ko, es, fr, +45
sample_queryoptSTRINGa funk rock song with groovy bass and punchy drumsNatural language description for LLM to generate caption/lyrics/metadata
is_instrumentaloptBOOLEANfalseGenerate instrumental only (no vocals).
captionoptSTRINGtight and groovy disco-funk track driven by a hyper-articulate slap bassline weaving syncopated sixteenth-note grooves with percussive thumb pops and ghost-note textures, locked into a crisp four-on-the-floor drum machine beat. Clean, funky guitar provides sparse chord stabs to leave sonic space for the bass, while filtered synth pads swell subtly in the background. The smooth male lead vocal glides over the infectious groove. The arrangement builds through verses and catchy choruses, then strips down to drums and bass for an extended, harmonically adventurous solo section: the bassist unleashes a technically explosive showcase—rapid double-thumb slaps morph into tapped harmonics, chromatic walking lines resolve into chordal double-stops, and envelope-filter sweeps cascade into distorted octave leaps. After the solo’s climax, wah-drenched funk guitar re-enters for a call-and-response exchange with the bass before the full band drops into a final chorus and a gradual fade out, with the bassline’s final harmonic ringing into silence.Music style description / caption
lyricsoptSTRING[Intro] [Heavy guitar riff and drums] [Vocal scream] Yeah! [Guitar Solo] [Verse 1] [Pre-Chorus] [Chorus] [Verse 2] [Pre-Chorus] [Chorus] [Bridge] [Guitar Solo] [Chorus] [Outro] [Song ends abruptly]Song lyrics (leave empty for instrumental)
autooptBOOLEANtrueON: bpm/key left for LM to decide. OFF: use manual values.
cover_strengthoptFLOAT0.000–1Cover strength (only used when src_audio is connected)
remix_strengthoptFLOAT1.000–1Remix noise strength (only used when src_audio is connected)
is_repaintoptBOOLEANfalseEnable repaint mode (requires src_audio). Regenerates a time range within the source audio.
bpmoptINT1200–300Beats per minute (0 = auto)
keyoptSTRINGe.g. 'C major', 'D minor'
durationoptFLOAT30-1–600Duration in seconds (-1 = model decides)
time_signatureoptSTRING4Time signature (e.g. 2, 3, 4, 6). Empty = auto.
repaint_startoptFLOAT0.00–600Repaint region start time in seconds
repaint_endoptFLOAT0.00–600Repaint region end time in seconds (0 = full length)
refer_audiooptAUDIOReference audio for style/timbre guidance
src_audiooptAUDIOSource audio for cover/remix/repaint
audio_codesoptSTRINGAudio codes from Audio Codes node

Outputs (1)

NameTypeDescription
gen_paramsACESTEP_GEN_PARAMS