Nodes/KIE.ai Nodes Next/Generate Music · V4.5ALL
ComfyUI Node

Generate Music · V4.5ALL

Songs, plus a reference track to aim at

By felipederosilva·Created about a month ago·Updated a day ago· 3
Generate Music · V4.5ALL
  • image_urls
  • audio_1
  • audio_2
  • audio_3
  • video_1
  • video_2
  • video_3
  • audio
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄promptA calm and relaxing piano track with soft melodies►
◄custom_modetrue►
◄instrumentaltrue►
◄styleClassical►
◄titlePeaceful Piano Meditation►
◄negative_tagsHeavy Metal, Upbeat Drums►
◄vocal_genderm►
◄style_weight0.65►
◄weirdness_constraint0.65►
◄audio_weight0.65►
◄persona_idpersona_123►
◄persona_modelstyle_persona►
◄duration20.00►
◄variety1.00►
◄lyrics►
◄timeout_seconds1200►
◄callback_url►

This is the V4.5ALL cut of the pack's Suno generation node. Same job as its V4.5 and V4.5PLUS siblings - text in, song out, nothing running on your GPU - but the practical reason you'd pick this version is the reference inputs: an IMAGE, up to three AUDIO sockets and up to three VIDEO sockets that Suno uses as inspiration for the track.

That matters if you're building a music video. The pipeline people actually run is song first, then video: generate or pick the track, then feed it into your image-to-video stack, with the audio as the spine. In that world the reference sockets are how you tell the music to match the mood of the still you already like.

What's happening between the clicks

Nothing local. The node composes a request, posts it to KIE.ai, and waits - polling the task until it completes or timeout_seconds (default 1200, twenty minutes) runs out. KIE's transport model is ai-music-api/generate, and V4_5ALL travels as the version in the input payload. The result comes home as a decoded ComfyUI AUDIO object with a sample_rate, decodable by ComfyUI's own torchaudio/PyAV install.

The controls that actually change the output

Three booleans and a text box decide most of it.

custom_mode (default true) is the big one: in custom mode your prompt is treated as exact lyrics, not a description. Flip it off and the same text becomes a brief, with Suno writing its own words. Non-custom mode is also the only mode where the reference sockets (image_urls, audio_1–audio_3, video_1–video_3) are effective - the docs say so explicitly.

instrumental (default true) turns the vocal off. In custom mode with it on, all you need is style and title; flip it off and your prompt/lyrics get sung. If you're wondering why your beautifully written lyrics came back as an instrumental, that's the switch.

style and title are the two fields you should not leave at their defaults. "Classical" and "Peaceful Piano Meditation" are placeholders, and they'll be honoured literally.

Everything else is trim: negative_tags to exclude ("heavy metal, live drums"), vocal_gender which the docs admit only shifts the odds, and the style_weight / weirdness_constraint / audio_weight / variety dials, all 0–1-ish nudges. duration and persona_model are scoped to the V5.5/V6 family and do nothing here.

Outputs

audio is your song - Straight into SaveAudio, or into video nodes for a lyric video. all_urls_json is the complete set of URLs the response returned; Suno generally hands back a couple of takes, and audio is only the first one. url is the primary URL, task_id is the KIE job ID, raw_json is the provider payload (and the place to find each take's id if you want to extend one later). credits_consumed and credits_left tell you what it cost, and both appear on the node after each run - a small touch that makes credit burn visible instead of mysterious.

Install, in short

Manager → search ComfyUI-KIE-Nodes-Next. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next

Restart, then Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's validated before saving, stored outside workflow JSON, shown masked. Environment variable KIE_API_KEY takes priority for headless servers. Dependencies are four ordinary Python packages - the pack ships no models.

Where people get burned

Connect an image and your style widgets get stripped. The pack force-switches custom_mode to false when image_urls is fed, and drops the custom-only fields (style, title, duration, style_weight, persona_id, vocal_gender, variety) before submitting, printing a note to the console. It's a deliberate guard against a provider-side rejection - but it means the reference-image path and the style path are mutually exclusive in practice.

This version is legacy. KIE's docs mark V4.5ALL (Discontinued) alongside V4, V4.5, V4.5PLUS, V5 and V5.5, with V6/V6_MINI/V6_WILD current. New work probably belongs on the V6 node in the same folder.

persona_id defaults to persona_123, a literal placeholder. Clear it, or point it at an actual persona from the pack's Generate Persona node.

CategoryKIE Next/Audio/Suno/Music Generation

Inputs (24)

NameTypeDefaultDescription
promptSTRINGA calm and relaxing piano track with soft melodiesA description of the desired audio content. Optional. - Custom mode (`custom_mode=true`): When provided, the prompt is used strictly as lyrics and sung in the generated track. Character limits by model: - V4: Maximum 3000 characters - V4_5, V4_5PLUS, V4_5ALL, V5_5, V5: Maximum 5000 characters - Non-custom mode (`custom_mode=false`): When provided, the prompt serves as the core idea. Lyrics are generated automatically based on it and do not strictly match the input. Maximum 3000 characters. `prompt` is not required. In non-custom mode, provide at least one of `image_urls`, `video_urls`, `audio_urls`, `style`, or `lyrics`. In custom mode, provide at least one of `style`, `lyrics`, or `negative_tags`. Generation is rejected if all related inputs are empty.
custom_modeBOOLEANtrueDetermines whether advanced parameter customization is enabled. - If `true`: Allows detailed control - If `false`: Simplified mode
instrumentalBOOLEANtrueDetermines whether the audio should be instrumental (no lyrics). - In Custom Mode (`custom_mode: true`): - If `true`: Only `style` and `title` are required. - If `false`: `style`, `title`, and `prompt` are required (`prompt` is used as the exact lyrics). - In Non-custom Mode (`custom_mode: false`): - If `true`: Only `style` and `prompt` are required. - If `false`: `style`, `prompt`, and `lyrics` are required (`lyrics` is used as a lyrics attachment and can be used together with the audio description in `prompt`).
styleoptSTRINGClassicalMusic style specification for the generated audio. - Character limits by model: - **V4** (Discontinued): Maximum 200 characters - **V4_5 and V4_5PLUS** (Discontinued): Maximum 1000 characters - **V4_5ALL** (Discontinued): Maximum 1000 characters - **V5_5 and V5** (Discontinued): Maximum 1000 characters - **V6, V6_MINI, and V6_WILD**: Maximum 1000 characters - Common examples: Jazz, Classical, Electronic, Pop, Rock, Hip-hop, etc.
titleoptSTRINGPeaceful Piano MeditationTitle for the generated music track. - Required in Custom Mode (`custom_mode: true`). - Max length: 80 characters. - Will be displayed in player interfaces and filenames.
negative_tagsoptSTRINGHeavy Metal, Upbeat DrumsMusic styles or traits to exclude from the generated audio. Optional. Use to avoid specific styles.
vocal_genderoptCOMBOmVocal gender preference. Optional. Use `m` for male and `f` for female. This parameter is only effective when `custom_mode` is true. In practice, it only increases probability and cannot guarantee male/female voice instructions are followed.
style_weightoptFLOAT0.650–1Only available when Custom Mode (`custom_mode: true`) is enabled. Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
weirdness_constraintoptFLOAT0.650–1Only available when Custom Mode (`custom_mode: true`) is enabled. Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
audio_weightoptFLOAT0.650–1Only available when Custom Mode (`custom_mode: true`) is enabled. Relative weight of audio features. Optional. Range 0–1, up to 2 decimal places. - `audio_weight` is not supported when there are no vocals
persona_idoptSTRINGpersona_123Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona](https://docs.kie.ai/suno-api/generate-persona) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice](https://docs.kie.ai/suno-api/suno-voice-generate) endpoint.
persona_modeloptCOMBOstyle_personaPersona model. Only available for V5 (Discontinued), V5.5 (Discontinued), V6, V6_MINI, and V6_WILD.
durationoptFLOAT20.0010–360Audio duration. Optional; only valid when `custom_mode` is true and the model is V5_5 (Discontinued), V6, V6_MINI, or V6_WILD.
image_urlsoptIMAGE—
varietyoptFLOAT1.000–4Only available when Custom Mode (`custom_mode: true`) is enabled. Controls the diversity and stylistic variation of generated results. Optional. Range 0–4, integer, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly
lyricsoptSTRINGLyrics for the generated audio. Optional. - V6: Maximum 5000 characters. - When `custom_mode=true`, `lyrics` is used as lyrics first; if `lyrics` is not provided, `prompt` is used as lyrics. - When `custom_mode=false`, `lyrics` is used as a lyrics attachment and can be used together with the audio description in `prompt`.
audio_1optAUDIO—
audio_2optAUDIO—
audio_3optAUDIO—
video_1optVIDEO—
video_2optVIDEO—
video_3optVIDEO—
timeout_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
audioAUDIO—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—