ACE-Step v1.5 Base
Write a whole song from a prompt — ACE-Step makes lyrics, key, and BPM first-class inputs
- audioSettings
- audio
ACE-Step is a music generation model, and this node is the rare case where the ComfyUI wrapper is arguably the best interface for the thing. You get full-song parameters as widgets - lyrics, BPM, musical key, time signature, vocal language - instead of fighting a text box. Type a prompt, paste lyrics, pick a key, and out comes an audio file. There aren't many music models in this pack, which makes the Audio category feel like a hidden wing; this is the headliner.
The model comes from the ACE-Step project (the same family as the ACE-Step-v1 3.5B checkpoint that made the rounds in May 2025, praised as ~15x faster than LLM-based music generators). v1.5 is the API version, so there are no weights to find - you're renting the inference.
What you set
positivePrompt is required - describe the song ("upbeat synth-pop with a driving bassline"). The inputs that actually shape the music:
settings.lyrics- paste full lyrics, formatted like a lyrics site. The model works dramatically better with real lyrics than with "make up some words."settings.keyScale- musical key in{Note} {Mode}form, e.g.C major,F# minor.settings.bpm/settings.timeSignature- tempo and beats-per-measure; leave unset and the model decides.settings.vocalLanguage- ISO 639-1 code (en,es, ...) orunknownfor instrumental.settings.guidanceType-apg(default) orcfg. ACE-Step's default is adaptive guidance; only switch tocfgif you're chasing stronger prompt adherence and willing to trade quality.steps(default 100) andCFGScale(default 10) - the diffusion knobs. 100 steps at 60s of audio is already slow-ish; don't max it out.
There's also an editing path: audio accepts a URL/UUID of an existing track, and repaintingStart/repaintingEnd (gated toggles) define a region to regenerate - negative start values prepend audio, values past the end append new audio. strength controls how much of the input carries through.
duration runs 30–300 seconds. Output is audio as an AUDIO dict (waveform + sample rate) - wire it to a Save Audio / preview audio node. outputFormat gives you MP3/WAV/FLAC/OGG.
Installing
Part of the Runware/ComfyUI-Runware pack.
ComfyUI Manager: search Runware, install, restart.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
The deps are light (runware-sdk, pillow, soundfile) and there are no model downloads. You need a Runware API key from runware.ai/api-keys (Settings panel or RUNWARE_API_KEY).
Where people get burned
Music models are allergic to vague lyrics - give the model something with structure (verses, chorus) or you get mush. And watch the clock: 60+ seconds of audio at 100 steps is a genuinely long cloud job, and you're paying for compute the whole time. Start with duration short (30s), nail the style, then extend. Also note settings.lyrics is a plain string here, not a socket - you can't wire it from a text node, only type it in or templated into the widget.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| audioSettingsopt | RUNWARE_AUDIOSETTINGS | — | |
| audioopt | STRING | Audio input (UUID or URL). | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| seedopt | INT | 00–2147483647 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| stepsopt | INT | 1001–300 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| CFGScaleopt | FLOAT | 10.001–30 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| strengthopt | BOOLEAN | false | Enable to set strength. This setting has usage rules in this model, so it is off unless you enable it. |
| strength_valueopt | FLOAT | 0.500–1 | Fraction of steps using the input source instead of generated output. |
| durationopt | FLOAT | 60.030–300 | Length of the generated audio track in seconds. |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| settings.bpmopt | BOOLEAN | false | Enable to set settings.bpm. Off uses the model's default. |
| settings.bpm_valueopt | INT | 3030–300 | Beats per minute. If not set, the model decides automatically. |
| settings.guidanceTypeopt | COMBO | apg | Controls how guidance is applied during generation. |
| settings.keyScaleopt | STRING | Musical key and scale in '{Note}{Accidental} {Mode}' format (e.g. 'C major', 'F# minor', 'Bb major'). | |
| settings.lyricsopt | STRING | Song lyrics, typically formatted like a lyrics website. | |
| settings.repaintingStartopt | BOOLEAN | false | Enable to set settings.repaintingStart. Off uses the model's default. |
| settings.repaintingStart_valueopt | FLOAT | -300.00-300–300 | Start time in seconds for repaint region. Requires input audio. Negative values prepend audio before the start. |
| settings.repaintingEndopt | BOOLEAN | false | Enable to set settings.repaintingEnd. Off uses the model's default. |
| settings.repaintingEnd_valueopt | FLOAT | 0.000–300 | End time in seconds for repaint region. Requires input audio. Values beyond audio duration append new audio. |
| settings.timeSignatureopt | COMBO | (default) | Beats per measure. If not set, the model decides automatically. |
| settings.vocalLanguageopt | COMBO | en | ISO 639-1 language code for vocals. `unknown` for instrumental or auto detection. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP3 | File format for the generated audio. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |