arkennemasis fal · ElevenLabs Music · $0.6/min
Same price as v2, and one knob v2 doesn't have
- audio
- audio_path
- info
There are three ElevenLabs music nodes in this pack and they cost exactly the same $0.60 per (rounded-up) minute, which raises the obvious question: why keep the oldest one? One reason. respect_sections_durations exists here and nowhere else, and it's the knob that decides whether a detailed composition plan is a specification or a suggestion.
If you're generating four bars of generic background music from a sentence, use Music v2 and move on. If you're scoring a cut to a structure - eight bars of setup, sixteen of build, a four-second sting on the reveal - this node lets you pin the section timings, and that's the difference between a plan you wrote and a plan the model agreed to.
How it works
The pack builds one node per fal endpoint from that endpoint's schema, so this node reflects the older fal-ai/elevenlabs/music endpoint rather than a newer model generation. On Run: key from .env, input checks, cost estimate against max_cost_usd, one billed submission, polling with live status, results downloaded into output/fal/fal-ai_elevenlabs_music/, request appended to the ledger.
The inputs that matter
composition_plan- the JSON plan. Each section carries its ownduration_ms, which is whatrespect_sections_durationsacts on.respect_sections_durations- defaulttrue, which enforces every section's duration precisely. Set itfalseand the model may shuffle individual section lengths to land on the same total; the tooltip's own words are that this "generally lead[s] to better generation quality and improved latency". Translation: strict timing versus a better-sounding track. Pick your poison deliberately.prompt- the plain-language route.music_length_ms(3,000–600,000,-1for auto) andforce_instrumentalboth only apply on this path.
output_format defaults to mp3_44100_128 here - note that's lower than the v2 nodes' mp3_48000_192 default - and its option list is missing the 24 kHz and 48 kHz MP3 tiers that v2 offers. Worth knowing if you're matching a format your downstream tool expects. There's no seed widget on this node at all.
Outputs: audio, audio_path, info.
Money
$0.60 per output minute, rounded up. A useful consequence: a 4-second sting costs the same as a 59-second one, so batch your short cues into one generation if you can, or accept that a five-cue scene is $3.00 no matter how short the cues are.
Install
Manager → search comfyui-arkennemasis, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI and put FAL_KEY=your-key-from-fal.ai/dashboard/keys in the .env in the folder holding run_nvidia_gpu.bat (the node checks there and the ComfyUI folder, nowhere else). The fal nodes need no extra Python packages.
Common issues & troubleshooting
Your section timings came out wrong. Two candidates: respect_sections_durations set to false, or a plan whose duration_ms values don't add up to what you asked for in music_length_ms. Strict mode enforces what you wrote, so write it correctly.
"Composition plan" errors. It's parsed as JSON. A trailing comma or a smart quote pasted from a document will fail the input check before anything is sent - the good news is failures at that stage are free.
The output file sounds thin. You're probably on the default mp3_44100_128. Bump output_format; it's the same price.
Instant identical result. reuse_identical_run returned a previous paid run from output/fal. Flip it off for a fresh take.
Local alternative worth knowing. ACE-Step is the open model this community uses for music, good at instrumental beds, rougher on vocals, and free after electricity. If what you need is a bed, run it locally. Come here when you need the vocals to hold up.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt describing the music to generate Empty leaves it out. | |
| composition_plan | STRING | The 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. |
| respect_sections_durations | BOOLEAN | true | Controls how strictly section durations in the composition_plan are enforced. It will only have an effect if it is used with composition_plan. When set to true, the model will precisely respect each section's duration_ms from the plan. When set to false, the model may adjust individual section durations which will generally lead to better generation quality and improved latency, while always preserving the total song |
| output_format | COMBO | mp3_44100_128 | 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. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for |
| 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. |