Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · ElevenLabs Music · $0.6/min
ComfyUI Node

arkennemasis fal · ElevenLabs Music · $0.6/min

Same price as v2, and one knob v2 doesn't have

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · ElevenLabs Music · $0.6/min
    • audio
    • audio_path
    • info
    ◄prompt►
    ◄composition_plan►
    ◄music_length_ms-1►
    ◄force_instrumentalfalse►
    ◄respect_sections_durationstrue►
    ◄output_formatmp3_44100_128►
    ◄max_cost_usd20.0►
    ◄reuse_identical_runtrue►
    ◄extra_json►
    ◄max_concurrent1►

    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 own duration_ms, which is what respect_sections_durations acts on.
    • respect_sections_durations - default true, which enforces every section's duration precisely. Set it false and 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, -1 for auto) and force_instrumental both 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.

    Categoryarkennemasis/fal/Audio/ElevenLabs

    Inputs (10)

    NameTypeDefaultDescription
    promptSTRINGThe text prompt describing the music to generate Empty leaves it out.
    composition_planSTRINGThe composition plan for the music JSON. Empty leaves it out.
    music_length_msINT-1-1–600000The 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_instrumentalBOOLEANfalseIf 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_durationsBOOLEANtrueControls 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_formatCOMBOmp3_44100_128Output 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_usdoptFLOAT20.00–100000Safety 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_runoptBOOLEANtrueIf 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_jsonoptSTRINGAdvanced: 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_concurrentoptINT11–32How 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)

    NameTypeDescription
    audioAUDIO—
    audio_pathSTRING—
    infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.