arkennemasis fal · ElevenLabs Music v2 · $0.6/min
A real score for your clip, billed by the rounded-up minute
- audio
- audio_path
- info
The moment your rendered clip needs a soundtrack, the local question gets awkward. ACE-Step is the open answer and it's genuinely good at instrumental beds - the community rates it as quality approaching Suno for music without vocals, and weak exactly where vocals matter. If you need a theme with a chorus, or something that sounds like a real library track, this node is the shortcut. One prompt in, an actual song out, wired straight into the rest of your graph.
ElevenLabs Music v2 is the same company that every open TTS model gets measured against, and the pack gives it its own node so it sits in the graph next to the video it's scoring.
How it works
Same shape as every other node in the arkennemasis fal shelf: read FAL_KEY from the install's .env, validate, estimate, submit one billed call to fal, poll with status on the node, download to output/fal/elevenlabs_music_v2/, and hand you audio plus audio_path and an info JSON. Nothing runs locally - the model is closed and hosted, which is also why it sounds the way it does.
The inputs that matter
Two of them decide the output, and you use one or the other:
prompt- plain-language description of the music. Genre, mood, instrumentation, tempo. Keep it musical rather than narrative.composition_plan- a JSON, chunk-based plan for the song, for when a prompt isn't enough structure. Empty leaves it out.
They're not interchangeable, and the schema is honest about the seams: music_length_ms only applies with prompt, and seed - which is there for consistent results across regenerations - only applies with composition_plan. The tooltip also warns that the same seed won't reproduce exactly, so treat it as "closer", not "identical". Length is 3,000–600,000 ms, with -1 meaning "let the model choose". force_instrumental guarantees no vocals, and only works alongside a prompt.
output_format defaults to mp3_48000_192 and includes everything down to 32 kbps and up to 320 kbps, plus PCM, µ-law and Opus variants - the µ-law ones being for telephony weirdness you almost certainly don't need. Note that some of the high-bitrate and PCM options are tier-gated on ElevenLabs' side; if a format errors, try a lower one before filing a bug.
Outputs: audio (wire into a video-assembly or save-audio node; the pack's Video Assemble takes a music bed), audio_path, and info with the request id, estimate and fal's answer.
Money
$0.60 per output minute, and it rounds up to the nearest minute. Thirty seconds costs a full dollar-sixty, so there's no point generating a 20-second sting for a 25-second shot - write the length you actually want, up to ten minutes. Your max_cost_usd cap defaults to $20, which is about 33 minutes of music; it'll never be the thing that saves you here, but the estimate is checked before anything is submitted.
Install
Manager → search comfyui-arkennemasis, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, then add FAL_KEY=your-key to the .env next to run_nvidia_gpu.bat. No model downloads and no extra Python packages for the fal nodes - the provider uses the standard library, and httpx in the requirements is for the pack's Codex/ChatGPT-login nodes only.
Common issues & troubleshooting
Your length setting did nothing. You filled in composition_plan instead of prompt - music_length_ms only pairs with the prompt path. Same rule for seed in the opposite direction, and force_instrumental only means anything with a prompt.
The result came back identical and free. reuse_identical_run is on by default, and identical settings with the files still sitting in output/fal come back from disk. Turn it off for a fresh take, which matters constantly with music.
Vocals when you wanted a bed. force_instrumental is off, and the model read your prompt as a song. Turn it on - it's a guarantee, not a hint.
Unwanted vocal chops over a dialogue scene. Nothing to do with the node; you want the bed quieter than the speech. The pack's Video Assemble node ducks a music bed under the narration, which is a better place to fix it than your prompt.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt describing the music to generate Empty leaves it out. | |
| composition_plan | STRING | The chunk-based composition plan for the music JSON. Empty leaves it out. | |
| music_length_ms | INT | -1-1–600000 | The length of the song to generate in milliseconds. Used only in conjunction with prompt. Must be between 3000ms and 600000ms. Optional - if not provided, the model will choose a length based on the prompt. -1 leaves it to the model. |
| force_instrumental | BOOLEAN | false | If true, guarantees that the generated song will be instrumental. If false, the song may or may not be instrumental depending on the prompt. Can only be used with prompt. |
| seed | INT | -1-1–2147483647 | Random seed to initialize the music generation process. Can only be used with composition_plan. The same seed with the same parameters gives more consistent results, but exact reproducibility is not guaranteed. -1 leaves it to the model. |
| output_format | COMBO | mp3_48000_192 | Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_path | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |