Nodes/KIE.ai Nodes Next/Generate Mashup Music · V6_MINI
ComfyUI Node

Generate Mashup Music · V6_MINI

Generate Mashup Music · V6_MINI

By felipederosilva·Created about a month ago·Updated a day ago· 3
Generate Mashup Music · V6_MINI
    • 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►

    The speed tier of the same idea

    Mashing two tracks together into a third one is the kind of thing you want to audition a lot before committing. That's what this node is for. KIE_Next_V6_MINI_456f3d2f calls KIE.ai's Suno mashup endpoint with the V6_MINI model - KIE describes that version as "lightweight and fast, balancing quality and speed for effortless creation." Translation: it's the one to hammer while you're figuring out whether the pairing works.

    The pack generated a node for every model version KIE documents, so Generate Mashup Music · V6 and · V6_WILD are its siblings. Same fields, different musical temperament. If you're iterating on which two songs belong together, stay here and burn credits cheaply; once a pairing clicks, re-run it on the bigger version.

    How it works, briefly

    You're not running anything locally. The node assembles the mashup request, posts it to KIE's task queue, and polls for the result with a 2.5-to-15-second backoff until the job lands or timeout_seconds runs out. The V6_MINI identifier travels inside the payload; the outer job envelope uses KIE's market name for the mashup API. The returned track is downloaded and converted into ComfyUI's AUDIO type, all inside the same execute() call - which means you get a normal node that blocks, not a fire-and-forget submitter.

    Worth knowing because it's on the louder edge of what this pack does: the audio in the API-wrapper category leaves your machine by design. Prompts and source URLs go to KIE's servers, and KIE's URL fetcher has to be able to reach them.

    Inputs worth thinking about

    • upload_url_list - a JSON array in a text box, not a socket. Two public URLs, e.g. ["https://cdn.example.com/a.mp3", "https://cdn.example.com/b.mp3"]. The author's own note says upstream reads only the first two entries, so don't paste five and hope. To use a local file, upload it with KIE • Upload Audio first and paste the returned URL.
    • style - required, and this is the actual creative control. "Jazz" fuses differently than "Jazz, 90s boom bap, female vocal" - the latter is where the interesting results come from.
    • title - required, cosmetic. It ends up in the filename and the player.
    • prompt - a description of what you want. Careful: it's treated as lyrics when you leave lyrics blank.
    • duration - 10 to 360 seconds, default 20. Twenty seconds is a draft, not a track.
    • style_weight, weirdness_constraint, audio_weight - the three floats that decide whether you get a recognisable hybrid or something unrecognisable. If MINI's output feels like it ignored your sources, push audio_weight up before blaming the model.
    • variety - 0 to 4. At 0 you get the same style twice; at 4 you get two very different tracks, per the tooltip's "unreasonably varied."

    Outputs

    audio is your mashup - the native ComfyUI audio object, ready for Save Audio or a video mux. url is the first result URL, all_urls_json holds every result URL, task_id identifies the job, raw_json is the whole provider response, and credits_consumed / credits_left report the spend, which the pack also paints onto the node body after each successful run.

    One trap: Suno returns two tracks per request, and audio only carries the first. If take two is the one you want, open all_urls_json and pull the second URL out of it.

    Install and key setup

    cd ComfyUI/custom_nodes
    git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
    cd ComfyUI-KIE-Nodes-Next && pip install -r requirements.txt
    

    Restart ComfyUI. Dependencies are just requests, Pillow, numpy and PyYAML - no checkpoints, no model files, nothing to download. There's also a Windows one-click installer in the repo's dist/ directory if you'd rather not touch a terminal.

    Then set the key once: Settings → KIE.ai Nodes Next → Connection, paste your KIE.ai API key. It's validated against KIE before it replaces a working key, you'll see a masked fingerprint rather than the key itself, and the status flips to a plain "connected" line when it takes. Servers and headless installs can use the KIE_API_KEY environment variable instead, which takes priority.

    Things that go wrong

    A malformed upload_url_list fails fast with a JSON parse error - that's a good failure, not a mystery. A URL KIE can't fetch is a bad one: an expensive failed job instead of an error message you can act on.

    If the node times out, don't immediately re-run. The task is probably still alive; check task_id with KIE • Task Status or park KIE • Wait for Task on it. Re-submitting is the one mistake here that costs money twice.

    And if you're on a pre-0.4.10 build and see model-related rejections, update and restart - that release fixed Suno nodes sending the version string where KIE wanted the market model name.

    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—