NS Music
Add a Music Bed to Your Video Without Leaving the Graph
- video
- video
- audio
You finish a video in ComfyUI and it's missing exactly one thing: a music bed. You could drop the clip into a video editor, hunt for a royalty-free track, fade it, and figure out ducking. Or you wire in NS Music, tell it the vibe in one sentence, and let it do all of that. It's the kind of node that quietly replaces an hour of busywork.
NS Music is a cloud node in the Symbiotica pack: it calls ElevenLabs' music API, gets a track back, and mixes it under your video's existing audio using FFmpeg. No local music model, no GPU - just a key and a network call. Same pattern as every API-wrapper node in this space: it looks like a generator on the canvas, but underneath it's an HTTP client with your key baked in.
How it works
The node asks ElevenLabs for a track (/v1/music), telling it the prompt, whether it should be instrumental, and - the clever part - the exact length of your video. It reads the video's duration with ffprobe, so the track arrives already sized to the clip. If you haven't wired a video in, it falls back to the duration_sec field instead (clamped to 3–600 seconds).
Then it mixes. With duck on (the default), it runs the music through FFmpeg's sidechain compressor keyed on your speech track, so the music automatically pulls down while someone talks and comes back up in the gaps - that's the duck_ratio knob, default 4. The volume control sets the music level under the mix, and it defaults to a sensible 0.3.
The inputs that matter
- music_prompt - the whole game. "Uplifting lo-fi beats" beats a novel. This is what ElevenLabs turns into audio, so describe genre and mood.
- api_key - leave empty to use Settings → Symbiotica → ElevenLabs API key. Here's the trap: the tooltip says a key typed into this field is saved into the workflow file. That means a shared workflow carries your key. Use Settings, not the widget.
- duration_sec - only used when no
videois connected. - video (optional) - wire your clip in and its duration, plus its existing audio, drive everything.
- seed - reproducible track if you want to iterate.
- force_instrumental - on by default; vocals in a music bed fight a voiceover.
Outputs are video (the mixed result) and audio (the track itself). With no video wired, the node returns leveled music as audio only - by design, not a bug.
Install and setup
This ships in the Symbiotica pack (symbiotica-ai/comfyui-nodes). Install via ComfyUI Manager by searching "Symbiotica", or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Restart ComfyUI. Then you need an ElevenLabs key (Settings → Symbiotica → API keys, or the ELEVENLABS_API_KEY env var). One more system requirement: the mixing shells out to ffmpeg/ffprobe, so those need to be on PATH (or in /opt/homebrew/bin, /usr/local/bin, /usr/bin - the pack checks those).
Troubleshooting
- Only
audiocomes out - you didn't wire avideoin. That's the audio-only path, and it's fine if that's what you wanted. - "ffmpeg not found" style errors - install FFmpeg (Homebrew
brew install ffmpegon a Mac) and restart ComfyUI. - The mix has no ducking - check
duckis on and your video actually has an audio stream; a silent source video has nothing to key the compressor against. - Music takes a while - ElevenLabs generates the whole track before mixing; a long video means a long wait and a per-generation bill. Keep your prompt tight so you're not paying for do-overs.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| music_prompt | STRING | — | |
| api_key | STRING | Leave empty to use Settings → Symbiotica → ElevenLabs API key. A key typed here is saved into the workflow file. | |
| duration_sec | FLOAT | 303–600 | — |
| videoopt | VIDEO | — | |
| volumeopt | FLOAT | 0.300–1 | — |
| force_instrumentalopt | BOOLEAN | true | — |
| duckopt | BOOLEAN | true | — |
| duck_ratioopt | FLOAT | 4.01–20 | — |
| seedopt | INT | 00–4294967295 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| audio | AUDIO | — |