Nodes/Symbiotica/NS Music
ComfyUI Node

NS Music

Add a Music Bed to Your Video Without Leaving the Graph

By symbiotica-ai·Created 6 months ago·Updated about 12 hours ago· 2
NS Music
  • video
  • video
  • audio
music_prompt
api_key
duration_sec30
volume0.30
force_instrumentaltrue
ducktrue
duck_ratio4.0
seed0

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 video is 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 audio comes out - you didn't wire a video in. 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 ffmpeg on a Mac) and restart ComfyUI.
  • The mix has no ducking - check duck is 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.
Categoryneuralsins/Video

Inputs (9)

NameTypeDefaultDescription
music_promptSTRING
api_keySTRINGLeave empty to use Settings → Symbiotica → ElevenLabs API key. A key typed here is saved into the workflow file.
duration_secFLOAT303–600
videooptVIDEO
volumeoptFLOAT0.300–1
force_instrumentaloptBOOLEANtrue
duckoptBOOLEANtrue
duck_ratiooptFLOAT4.01–20
seedoptINT00–4294967295

Outputs (2)

NameTypeDescription
videoVIDEO
audioAUDIO