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

Generate Mashup Music · V4.5ALL

Two tracks in, one hybrid out

By felipederosilva·Created about a month ago·Updated a day ago· 3
Generate Mashup Music · V4.5ALL
    • audio
    • url
    • all_urls_json
    • task_id
    • raw_json
    • credits_consumed
    • credits_left
    ◄upload_url_list[ "https://example.com/audio1.mp3", "https://example.com/audio2.mp3" ]►
    ◄promptA calm and relaxing piano track with soft melodies►
    ◄styleJazz►
    ◄titleRelaxing Piano►
    ◄vocal_genderm►
    ◄style_weight0.61►
    ◄weirdness_constraint0.72►
    ◄audio_weight0.65►
    ◄lyrics[Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fall►
    ◄variety1►
    ◄persona_idpersona_123►
    ◄persona_modelstyle_persona►
    ◄duration20►
    ◄timeout_seconds1200►
    ◄callback_url►

    Mashup is the Suno endpoint nobody talks about and everybody eventually wants: hand it two songs, get one that sounds like both. This node is the V4.5ALL version of it, and it's a genuinely fun thing to have on a canvas next to your image and video work - it's how you get a soundtrack that matches the mood of a render instead of a stock loop.

    What it actually does

    Nothing local happens. The node builds the request, ships it to KIE.ai, and then blocks the queue polling the task until it's done or timeout_seconds (default 1200) runs out. The KIE transport model for the call is ai-music-api/mashup; the version V4_5ALL rides inside the input payload. Result comes back as a real ComfyUI AUDIO object.

    The part that surprises people: the two source tracks are URLs, not audio sockets. upload_url_list is a JSON array widget - literally this, pasted in:

    [
      "https://example.com/track-a.mp3",
      "https://example.com/track-b.mp3"
    ]
    

    Each URL has to be publicly reachable by KIE's servers. Upstream uses only the first two entries, so adding a third is wasted effort. That's the whole reason this node is fussier than the generation nodes, which upload media for you.

    Inputs worth your time

    upload_url_list is required, as above. style and title are both required here - the mashup endpoint won't infer them - and prompt is required as a widget even though the endpoint treats it as optional narrative colour. It only becomes lyrics when lyrics is empty, and lyrics overrides it.

    Then the dials: variety (integer 0–4) is the one actually worth understanding. 0 locks the output to one style, 1 is balanced, 2 gives you clearly different takes, 3 "bold exploration", and 4 is, in the author's own words, "unreasonably varied". Leave it at 1 unless you're deliberately hunting. style_weight, weirdness_constraint and audio_weight are the usual 0–1 nudges; vocal_gender is documented as a probability tweak, not a guarantee.

    duration and persona_model are in the widget list but the docs scope them to the V5.5/V6 family, so on V4.5ALL they do nothing. Ignore them.

    Outputs

    audio is the decoded mashup - wire it to SaveAudio or into a video pipeline. all_urls_json keeps every URL the response returned (Suno usually returns more than one take, and audio is just the first), url is the primary one, task_id is the KIE job ID. raw_json is the full provider payload, which is the honest way to debug a weird result. credits_consumed and credits_left come back as floats and are also printed on the node after each run.

    Install

    ComfyUI Manager, search the pack title ComfyUI-KIE-Nodes-Next, or:

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

    Restart afterwards. The pack's only dependencies are requests, Pillow, numpy and PyYAML - no checkpoints to download, nothing to put in models/. Then set the API key once: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's validated against KIE before saving, lives in Comfy's user config rather than your workflow, and displays as a masked fingerprint. KIE_API_KEY in the environment overrides it for headless boxes.

    Where it bites

    Dead URLs are the number one failure. A local file path, a localhost link, or a Google Drive preview page will not work - KIE has to fetch the audio itself. If you generated tracks in this same graph, push them somewhere public first (the pack ships upload utility nodes under KIE Next / Utility for exactly this).

    Version drift. KIE's docs list V4.5ALL as (Discontinued) alongside V4/V4.5/V4.5PLUS/V5/V5.5, with V6/V6_MINI/V6_WILD as the live family. This node exists because the page still documents it; a flat rejection usually means the version retired and it's time to switch to the V6 mashup node.

    It's metered. Every run costs credits whether or not you like the output, and a mashup gives you a handful of takes and no refund. Cheap enough for a few experiments, not a fidget toy.

    Not local, by design. Your source URLs and prompt go to a third-party service. That's inherent to every closed-model node - fine for a personal render, worth a second thought for a client's unreleased track.

    CategoryKIE Next/Audio/Suno/Music Generation

    Inputs (15)

    NameTypeDefaultDescription
    upload_url_listSTRING[ "https://example.com/audio1.mp3", "https://example.com/audio2.mp3" ]Array of audio file URLs to mashup. Provide 2 audio URLs. Upstream uses only the first 2. Each URL must be publicly accessible.
    promptSTRINGA calm and relaxing piano track with soft melodiesA description of the desired audio content. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters.
    styleSTRINGJazzMusic style specification for the generated audio. Required. - Character limits by model: - **V4** (Discontinued): Maximum 200 characters - **V4_5 & V4_5PLUS** (Discontinued): Maximum 1000 characters - **V4_5ALL** (Discontinued): Maximum 1000 characters - **V5 & V5_5** (Discontinued): Maximum 1000 characters - **V6, V6_MINI & V6_WILD**: Maximum 1000 characters - Common examples: Jazz, Classical, Electronic, Pop, Rock, Hip-hop, etc.
    titleSTRINGRelaxing PianoTitle for the generated music track. Required. - Character limits by model: - **V4** (Discontinued): Maximum 80 characters - **V4_5 & V4_5PLUS** (Discontinued): Maximum 100 characters - **V4_5ALL** (Discontinued): Maximum 80 characters - **V5 & V5_5** (Discontinued): Maximum 100 characters - **V6, V6_MINI & V6_WILD**: Maximum 100 characters - Will be displayed in player interfaces and filenames.
    vocal_genderoptCOMBOmVocal gender preference for the singing voice. Optional. Use 'm' for male and 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions.
    style_weightoptFLOAT0.610–1Strength of adherence to the specified style. Optional. Range 0–1, up to 2 decimal places.
    weirdness_constraintoptFLOAT0.720–1Controls experimental/creative deviation. Optional. Range 0–1, up to 2 decimal places.
    audio_weightoptFLOAT0.650–1Balance weight for audio features vs. other factors. Optional. Range 0–1, up to 2 decimal places.
    lyricsoptSTRING[Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fallLyrics for the mashup. Optional. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - 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
    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.
    durationoptINT2010–360Audio duration in seconds. Optional. Range 10–360, default 20. Valid when `model` is ~~V5_5~~ (Discontinued), V6, V6_MINI, or V6_WILD.
    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—