Replace Music Section · V4.5PLUS
Three weight dials, one at a time
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Three sliders on this node do roughly the same job from different angles - style_weight, weirdness_constraint and audio_weight, each 0–1, each defaulting to 0.65. Move all three at once and you'll never know which one fixed the bridge. There's also a ten-second minimum on the replacement window, and that one isn't a preference.
What it is
KIE_Next_V4_5PLUS_a1f85c48 regenerates a slice of a Suno track through KIE.ai, pinned to the V4.5PLUS provider version. The KIE Next pack generates a ComfyUI node per KIE Market operation and provider version - nine of them for section replacement alone - so the version is baked into the class, not exposed as a dropdown.
KIE's note for V4_5PLUS is that it "offers richer timbres, new creative methods, and supports durations of up to 8 minutes". It's also listed as deprecated, along with the rest of the V4 family, in favour of V6 / V6_MINI / V6_WILD. So this is the node for revisiting an older project, or for a specific timbre you already know you liked.
How it works
Infill on the provider's side: you identify the source track, give a time window, describe what the section should become, and hand over the complete lyric sheet as it should read afterwards. The model re-renders that stretch in context and returns a full track.
Locally it's the pack's standard path - assemble the documented request, submit, poll until timeout_seconds (1200 default), download the first result URL into a ComfyUI AUDIO, and print the credit receipt on the node. Suno has no open weights, so there's no story here about running it yourself; that's the deal with the whole audio branch of ComfyUI right now.
The inputs that matter
The source: task_id for the parent generation and audio_id for the specific track inside it. KIE's tooltips describe exactly those two roles. Both are optional fields in the schema and both are de facto required - the clean wiring is your music-generation node's task_id socket here, with the audio ID copied from that task's raw_json.
The window: infill_start_s and infill_end_s, seconds to two decimals, start < end, and at least ten seconds between them. A chorus fits; a word doesn't.
The words: full_lyrics is the whole song after replacement (required), lyrics is only the new segment (optional). Required prompt, tags, title are a short description, style tags, and a name. negative_tags defaults to Rock and is a real exclusion, not decoration.
The dials: variety 0–4 sets how far the new section may wander - 0 is strictly the same style, 4 is "unreasonably varied" in the tooltip's phrasing. Then style_weight (adherence to your tags), weirdness_constraint (experimental deviation) and audio_weight (relative weight of the audio elements). Change one, render, listen, change another. vocal_gender (m/f) only shifts the odds. persona_id/persona_model are inert on a V4-era pin.
Outputs
audio is the finished track; Save Audio, or KIE • Assemble Video + Music if you're scoring a clip with it. task_id is a fresh task ID, which is how you chain a second window. url and all_urls_json are the provider links, raw_json the raw response, credits_consumed/credits_left the spend. The node is not an output node, so if nothing downstream consumes the audio, nothing runs.
Installing it
ComfyUI Manager → search "KIE.ai Nodes Next", or:
comfy node install kie-ai-nodes-next
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart ComfyUI, then Settings → KIE.ai Nodes Next → Connection and paste your KIE.ai API key. The pack validates the key against KIE before overwriting a saved one, then shows only a masked fingerprint - the full key stays out of your workflow JSON. Environment-variable keys aren't supported.
Dependencies: requests, Pillow, numpy, PyYAML. No model downloads, no VRAM requirement, because the rendering happens on Suno's machines.
Where people get burned
Tuning three dials blind. Each run costs money, so a one-variable-at-a-time habit isn't just good method, it's cheaper.
A window under ten seconds. The pack's local preflight rejects it before upload - free - which is the good failure. Right-click → KIE Next · Check inputs & model controls to see the cached documented limits without submitting.
A full_lyrics field holding only the replacement. You'll get a track that believes the whole song is that one section.
Expecting this to be the current model. It isn't; it's a legacy pin. If what you actually want is "the best Suno section replacement available today", start at the V6 node and only come back here for reproduction.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A calm and relaxing piano track. | The lyrics after replacement. Required. |
| tags | STRING | Jazz | Style tags for the music, such as jazz or electronic. Required. |
| title | STRING | Relaxing Piano | The title of the music. Required. |
| infill_start_s | FLOAT | 10.500–10000 | The point in time, in seconds, at which replacement starts, rounded to 2 decimal places. Required. Must be less than infill_end_s, and the difference between infill_end_s and infill_start_s must be at least 10 seconds. |
| infill_end_s | FLOAT | 20.750–10000 | The point in time, in seconds, at which replacement ends, rounded to 2 decimal places. Required. Must be greater than infill_start_s, and the difference between infill_end_s and infill_start_s must be at least 10 seconds. |
| full_lyrics | STRING | [Verse 1]\nOriginal lyrics content\n[Chorus]\nModified lyrics for this section\n[Verse 2]\nMore original lyrics | The complete modified lyrics, combining the modified and unmodified lyrics. Required. This parameter contains the complete lyrics text that will be used for the entire song after section replacement. |
| task_idopt | STRING | 2fac****9f72 | The original task ID (parent task), used to identify the source music for section replacement. |
| audio_idopt | STRING | e231****-****-****-****-****8cadc7dc | The unique identifier of the audio track to be replaced. This ID is returned in the callback data after music generation is completed. |
| negative_tagsopt | STRING | Rock | Music styles to exclude, used to prevent specific stylistic elements from appearing in the replacement section. |
| lyricsopt | STRING | [Chorus]\nModified lyrics for this section | Lyrics for the replaced segment. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. |
| varietyopt | INT | 10–4 | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, 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 |
| vocal_genderopt | COMBO | m | Vocal gender preference. Optional. 'm' for male, 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. |
| style_weightopt | FLOAT | 0.650–1 | Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places. |
| weirdness_constraintopt | FLOAT | 0.650–1 | Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places. |
| audio_weightopt | FLOAT | 0.650–1 | Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places. |
| persona_idopt | STRING | persona_123 | Persona 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_modelopt | COMBO | style_persona | Persona model. Optional. Use `style_persona` for Generate Persona IDs, or `voice_persona` for Suno Voice IDs. Default: `style_persona`. Available for V5 (Discontinued), V5_5 (Discontinued), V6, V6_MINI, and V6_WILD. |
| upload_urlopt | STRING | https://example.com/audio.mp3 | The URL of the custom audio uploaded by the user. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |