Nodes/Protoface/Protoface Lyria 3 Pro · Generate Music
ComfyUI Node

Protoface Lyria 3 Pro · Generate Music

Google's music model, with an image as the brief

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Lyria 3 Pro · Generate Music
    • audio
    • files
    • run id
    ◄prompt►
    ◄image▾►
    ◄negative_prompt▾►
    ◄seed▾►
    ◄generation_id0►
    ◄request_scope►

    The quiet corner of the model catalog

    Google's image and video models get argued about daily. Its music model barely gets mentioned at all - searching the Reddit corpus for "lyria" across sixteen months turns up eleven threads, total, and most are passing references. There's no node discourse, no comparison threads, no settings folklore.

    That's not a reason to ignore it; it's a reason to expect to work it out yourself. Lyria 3 Pro is a closed Google music generator, and this node is how it reaches ComfyUI - part of Protoface, a beta pack that generates one ComfyUI node per provider model/task from public schemas. Paid per run, executes remotely.

    The interesting thing about this node isn't that it makes music - ACE-Step makes music, locally, for free. It's that it takes an image as conditioning. You hand it a still and a text prompt, and it generates a track for that image. Think mood-board-to-score, or a thumbnail-to-theme workflow running in one graph.

    How it works

    Same adapter as every node in the pack: widgets → validated request payload → upload any media → submit → poll → download → native AUDIO. The generation is metered against your Protoface account, itemised separately from Comfy credits.

    There's no generation_id-versus-seed confusion to untangle here, but there are two id-ish fields and they do different things. seed is the model's reproducibility knob and is a media-style control (Default / Set / Null), not a bare number. generation_id is the pack's paid-request identity: leave it alone to reuse or resume the job you already paid for, bump it when you actually want a new render.

    The inputs that matter

    prompt is the musical brief. With no duration or key control exposed, the prompt does all the shaping - describe genre, instrumentation, energy and where it should land. Vague prompts get generic beds.

    image is the one to experiment with. Media input: connect a native IMAGE, or switch to References mode and pass a Protoface asset ID / reused result asset. Condition on the frame you're scoring and you get something that shares its mood instead of contradicting it.

    negative_prompt is exposed as its own media-style control rather than a plain text box. If you want to exclude something - vocals, drums, a genre - that's where it goes, and "Default" means you're not sending the field at all. Blank text and omission are different things here; the pack is explicit about that.

    seed: leave it on Default for variety, Set it to lock a take you liked.

    Outputs

    audio is a native AUDIO list - Gemini-style APIs can return more than one candidate, so expect a list and connect something that handles that (Save Audio fans out over the list fine).

    files gives you the original downloads as PROTOFACE_FILE, which is where you go if you want exactly what the API served. And run id is the string to hand Protoface Resume Run if a long generation finished after your session did.

    Install

    Manager: search Protoface, install protoface-nodes, restart, reload the browser. Or by hand from inside your ComfyUI directory:

    git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git custom_nodes/protoface
    python -m pip install -r custom_nodes/protoface/requirements.txt
    

    ComfyUI 0.41.0+ and Python 3.10+; use the interpreter belonging to your ComfyUI install, not a system Python, and definitely not a system Python on Windows portable. Then click Protoface in the lower-right and paste a key from your Protoface account. Nothing here downloads weights - the "model" is a URL and your key.

    Where people get burned

    Not finding the node at all. The catalog ships inside the package and loads offline, so a missing Lyria node usually means the pack didn't import. Check the startup log, confirm custom_nodes/protoface/__init__.py exists (an extra nested folder is the classic extraction mistake), and make sure you only have one copy installed.

    Expecting duration or format control. This node doesn't expose them. If you need a specific length, that's a different music model - the pack's Eleven Music node has an explicit millisecond field, and ACE-Step gives you local control at the cost of vocal quality.

    Treating an image-conditioned run as free. Every queue is a paid request. Nudge the prompt and it's a new one; that's why generation_id exists as a separate control from the seed.

    Deleting the state directory to "clean up". PROTOFACE_STATE_DIR (default ~/.cache/protoface-comfyui) holds the job journal that makes resume and deduplication work. Wipe it and an ambiguous failure becomes a fresh paid request instead of a recovered one. Leave it alone, especially on a box that runs unattended.

    CategoryProtoface/Music/google

    Inputs (6)

    NameTypeDefaultDescription
    promptSTRINGThe positive prompt for the generation.
    imageCOMBOA public URL, a data URI, or an asset id.
    negative_promptCOMBOA description of what to exclude from the generated audio.
    seedCOMBOThe random seed to use for the generation. -1 means a random seed will be used.
    generation_idINT00–9007199254740991Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed.
    request_scopeSTRINGAutomatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret.

    Outputs (3)

    NameTypeDescription
    audioAUDIO—
    filesPROTOFACE_FILE—
    run idSTRING—