Add Instrumental to Music · V5
The legacy-tier backing-track node
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Give it a track with vocals, describe the style you want, and it hands back an instrumental version. This node is Suno's "Add Instrumental to Music" endpoint at the V5 tier - one of KIE's discontinued tiers, which matters less here than elsewhere because instrumental output is the part of music generation the local models already do well.
So the honest framing: if you're making a fresh backing track, ACE-Step on your own card will do it for free and won't mind you iterating. Reach for this node when the backing has to match a specific existing song's character, or when you're keeping an old V5 workflow reproducible. The mechanism is generation, not surgery - it doesn't split your file into stems, it re-performs an instrumental guided by your source audio and your tags. The arrangement will resemble the original rather than mirror it.
How it works
The pack builds its node classes at startup from KIE's official API documentation, one class per documented model version - hence no model selector, just V5 baked in. The node assembles the documented request body, submits it to KIE's task endpoint (envelope model ai-music-api/add-instrumental, inner model V5), polls KIE's record-info endpoint every few seconds with backoff until the task succeeds, then downloads the resulting mp3 and returns it as a ComfyUI AUDIO. Failures raise with the task id and the provider's message.
The inputs that matter
Four required, and the naming is its own little trap - this node wants tags, not style:
- upload_url - the source audio, as a publicly reachable URL. The docs: source audio is enough to generate once
title,negative_tagsandtagsare provided. Under 8 minutes, per the upload-family limits. - title - required; it shows in the player and the filename.
- tags - the styles or characteristics to include, e.g.
relaxing, piano, soothing. - negative_tags - what to exclude, e.g.
heavy metal, fast drums.
Optional: vocal_gender (present for schema reasons; you're asking for an instrumental, so it does nothing useful), style_weight (0–1, default 0.61), weirdness_constraint (default 0.72), audio_weight (how much the source audio counts), lyrics, variety (0–4; 0 for "strictly the same", 4 for "unreasonably varied" in the docs' own words), timeout_seconds (1200) and callback_url (leave empty).
Outputs: audio for Save Audio or any downstream audio node, url, all_urls_json, task_id, raw_json, credits_consumed and credits_left.
Getting your track in
upload_url is a string widget, not an AUDIO socket, so it can't take a file directly. Wire it: add KIE • Upload Audio from KIE Next/Utility/Media, feed it your AUDIO, then right-click the upload_url field on this node, choose Convert widget to input, and connect the URL it returns. After that the whole chain - generate, upload, re-render as instrumental - runs without you touching a browser.
Installing
ComfyUI Manager, search "KIE Nodes Next"; the README still frames registry publication as prepared rather than done, so the clone path is what works if Manager comes up empty:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart, then set your key once under Settings → KIE.ai Nodes Next → Connection. It's validated before overwriting a working key, only a masked fingerprint is displayed, and KIE_API_KEY takes precedence for headless installs. Four small dependencies and no model files - this pack costs you nothing to have installed, which is not something you can say about the local audio stacks.
Where people get burned
- Looking for a
stylefield. This endpoint calls ittags. Same job, different name from its siblings. - Expecting stem separation. It's a generation. If you need the actual original instrumental, run a separation tool; this gives you a performance in that style.
- Local paths as
upload_url. KIE has to fetch it. Use the Upload Audio node. - No key configured raises an error naming the settings path - first thing to check.
- Mixed-release installs are refused at import. If the pack says its version and generated-node build disagree, delete the folder and reinstall rather than patching files by hand.
- Discontinued tier. V5 is marked as such in KIE's docs; the V6 sibling is the current line.
One last practical note: tags does more work than style_weight here. Get the tag list right - genre, lead instrument, mood, tempo words - and leave the weight dial around its default. Cranking style_weight with vague tags just gives you a confidently wrong instrumental.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| upload_url | STRING | https://example.com/music.mp3 | URL of the uploaded audio file. Required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `tags` are provided. |
| title | STRING | Relaxing Piano | Title of the generated music. Required. Will be displayed in the player interface and file name. |
| negative_tags | STRING | heavy metal, fast drums | Music styles or characteristics to exclude from the generated audio. Required. Used to avoid specific unwanted music elements. |
| tags | STRING | relaxing, piano, soothing | Music styles or tags to include in the generated music. Required. Defines the desired music style and characteristics. |
| 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.610–1 | Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places. |
| weirdness_constraintopt | FLOAT | 0.720–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. |
| lyricsopt | STRING | [Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fall | Lyrics for the generated audio. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `tags` are provided. |
| 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 |
| 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 | — |