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

arkennemasis fal · ElevenLabs Music v2.5 · $0.6/min

Identical knobs, different model — so A/B it

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

    Here's the honest review up front: v2.5 is a drop-in replacement for the Music v2 node. Same six widgets, same defaults, same price, same output. Nothing in the node tells you what changed because nothing in the node did change - the difference lives in the model behind fal's endpoint, and the only way to know which one you prefer is to run both on the same prompt and listen.

    That sounds like a cop-out and it isn't. v2 and v2.5 are separate fal endpoints with separate pricing rules and separate output folders, which makes comparing them genuinely cheap to do inside one canvas, and this is one of the few places in ComfyUI where a version bump is a listening test rather than a changelog.

    How it works

    Behind the node, nothing exotic: FAL_KEY is read from the install's .env, the inputs are validated, the cost is estimated against max_cost_usd, one request goes to fal, the node polls while showing elapsed time and estimate, and the audio lands in output/fal/elevenlabs_music_v2.5/ with the request logged in output/fal/_requests.jsonl.

    The inputs

    The same six as v2, and the same rules apply:

    • prompt for the song in words, composition_plan for a JSON chunk plan when you want structure the prompt can't express.
    • music_length_ms pairs with prompt only - 3,000 to 600,000 ms, or -1 to let the model decide.
    • seed pairs with composition_plan only, and the tooltip is candid that it's best-effort rather than reproducible.
    • force_instrumental guarantees no vocals, usable only with a prompt.
    • output_format defaults to mp3_48000_192; the list runs from 32 kbps MP3 up to 320 kbps, plus PCM, Opus and µ-law variants for edge cases you don't have. Some higher-quality options are gated by your ElevenLabs tier - a format error is usually that, not the node.

    Outputs are audio, audio_path and info. Wire audio into whatever assembles your video; audio_path is handy for the pack's captioning and narration-fitting nodes that want a file on disk.

    How to actually compare the two

    Put both nodes on one canvas, wire the same STRING into both prompts, set both lengths, and run with max_concurrent raised so they don't queue behind each other - the fal nodes default to one paid call at a time across the whole run, so at the default you're paying in wall-clock time as well as money. Two 30-second instrumentals cost $1.20 apiece (rounded up to the minute), so a fair comparison is under three dollars. Cheaper than arguing about it.

    Install

    Manager → search comfyui-arkennemasis, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Hishamahmer/comfyui-arkennemasis
    

    Restart, then FAL_KEY=your-key in the .env beside run_nvidia_gpu.bat. There's no key field on the node, on purpose: a key typed into a widget gets stored in every workflow file you save.

    Common issues & troubleshooting

    You ran v2.5 expecting a difference in the panel. There isn't one. If you queued the wrong node you'll only notice from the folder the audio landed in, or from info.

    Length or seed silently ignored. music_length_ms needs prompt; seed needs composition_plan. They don't cross over.

    Same audio, no charge on a re-run. reuse_identical_run defaults to true. Turn it off when you're auditioning takes - which, with a music model, is most of the time.

    Both nodes ran but only one produced audio. Your max_concurrent is 1, so they ran one after the other; check the node status line before assuming something failed. If one errored, the other still waiting never starts - and is never billed.

    A 20-second clip billed as a full minute. Expected. $0.60/min, rounded up to the nearest minute. Write the length you want; don't generate a stub and stretch it.

    Categoryarkennemasis/fal/Audio/ElevenLabs

    Inputs (10)

    NameTypeDefaultDescription
    promptSTRINGThe text prompt describing the music to generate Empty leaves it out.
    composition_planSTRINGThe chunk-based 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.
    seedINT-1-1–2147483647Random 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_formatCOMBOmp3_48000_192Output 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_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.