Nodes/KIE.ai Nodes Next/Replace Music Section · V4.5PLUS
ComfyUI Node

Replace Music Section · V4.5PLUS

Three weight dials, one at a time

By felipederosilva·Created 2 months ago·Updated 3 days ago· 3
Replace Music Section · V4.5PLUS
    • audio
    • url
    • all_urls_json
    • task_id
    • raw_json
    • credits_consumed
    • credits_left
    ◄promptA calm and relaxing piano track.►
    ◄tagsJazz►
    ◄titleRelaxing Piano►
    ◄infill_start_s10.50►
    ◄infill_end_s20.75►
    ◄full_lyrics[Verse 1]\nOriginal lyrics content\n[Chorus]\nModified lyrics for this section\n[Verse 2]\nMore original lyrics►
    ◄task_id2fac****9f72►
    ◄audio_ide231****-****-****-****-****8cadc7dc►
    ◄negative_tagsRock►
    ◄lyrics[Chorus]\nModified lyrics for this section►
    ◄variety1►
    ◄vocal_genderm►
    ◄style_weight0.65►
    ◄weirdness_constraint0.65►
    ◄audio_weight0.65►
    ◄persona_idpersona_123►
    ◄persona_modelstyle_persona►
    ◄upload_urlhttps://example.com/audio.mp3►
    ◄timeout_seconds1200►
    ◄callback_url►

    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.

    CategoryKIE Next/Audio/Suno/Music Generation

    Inputs (20)

    NameTypeDefaultDescription
    promptSTRINGA calm and relaxing piano track.The lyrics after replacement. Required.
    tagsSTRINGJazzStyle tags for the music, such as jazz or electronic. Required.
    titleSTRINGRelaxing PianoThe title of the music. Required.
    infill_start_sFLOAT10.500–10000The 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_sFLOAT20.750–10000The 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_lyricsSTRING[Verse 1]\nOriginal lyrics content\n[Chorus]\nModified lyrics for this section\n[Verse 2]\nMore original lyricsThe 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_idoptSTRING2fac****9f72The original task ID (parent task), used to identify the source music for section replacement.
    audio_idoptSTRINGe231****-****-****-****-****8cadc7dcThe unique identifier of the audio track to be replaced. This ID is returned in the callback data after music generation is completed.
    negative_tagsoptSTRINGRockMusic styles to exclude, used to prevent specific stylistic elements from appearing in the replacement section.
    lyricsoptSTRING[Chorus]\nModified lyrics for this sectionLyrics for the replaced segment. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters.
    varietyoptINT10–4Controls 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_genderoptCOMBOmVocal 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_weightoptFLOAT0.650–1Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places.
    weirdness_constraintoptFLOAT0.650–1Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places.
    audio_weightoptFLOAT0.650–1Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places.
    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. 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_urloptSTRINGhttps://example.com/audio.mp3The URL of the custom audio uploaded by the user.
    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—