ComfyUI Node

Song Brief

Nine Fields Between 'Indie Pop' and a Song You'll Actually Keep

By jplenio·Created a day ago·Updated about 13 hours ago· 2
Song Brief
    • brief
    • brief_text
    • max_seconds
    • instrumental
    ◄templatenone►
    ◄description►
    ◄genre►
    ◄mood►
    ◄tempo►
    ◄lengthstandard (about 3:00)►
    ◄vocals▾►
    ◄key►
    ◄meter►

    What it is

    Song Brief is where a new song starts: what it's about, what genre, what mood, how long, and whether anybody sings. Nothing here makes sound. It's the intent document the rest of the graph reads, and in Plenio's design it's also the only place that decides two things - sung versus instrumental, and the target length. Everything downstream takes those as given, which is why you can't accidentally end up with an instrumental brief and vocal lyrics.

    If you've used a text-to-music service, this is the form you filled in there. The difference is that here it's a node, so the fields are inspectable, reusable, and one wire away from a dozen downstream decisions.

    How it works

    The template combo is the fast path: around 240 genre templates (pop, jazz, hip hop, cinematic, seasonal, regional - the pack's own library, carried over from the author's earlier Music Production Toolkit and re-checked). A template only fills the text fields you leave empty. Type your own description and the template's description gets out of the way; leave genre blank and you inherit the template's. That precedence is the whole trick - you can start from "indie pop" and override exactly the one field you care about.

    The fields that actually shape output:

    • description - multiline, and the one that goes to the writing model verbatim. Write what the song is about, not a keyword salad.
    • length - ten options from very short (about 1:00) to very long (about 6:00), defaulting to standard (about 3:00). It does two jobs: it steers the writer's section plan and line count, and it sets render headroom. MiniMax Music 3 tops out at 6:00; YuE2's context budget is checked at the sheet.
    • vocals - a two-branch picker. Sung reveals language, voice and theme; instrumental hides all of that and reveals melody (an instrument plays the lead, or accompaniment only) and an optional lead_instrument.

    genre, mood and tempo are plain strings and free-form on purpose - "88 BPM" and "midtempo" both work. key and meter sit in the advanced drawer because score-driven models take the key from the score, not from here.

    Outputs: brief (the structured object Song Brief feeds to Compose Writing Prompt, Score Tools and the Song Sheet), brief_text (a readable dump - good for a note node when you're debugging a series that all sounds the same), max_seconds (render headroom for the chosen length) and instrumental (a boolean you can branch on).

    Install

    # ComfyUI Manager → Custom Nodes Manager → search "Plenio Music Production System"
    # or by hand:
    cd ComfyUI/custom_nodes
    git clone https://github.com/jplenio/Plenio-Music-Production-System
    

    Restart, then open 1 · YuE2 · Song or 3 · MiniMax · Song from the template browser and let ComfyUI's missing-model dialog fetch what you don't have. Requires ComfyUI 0.37.0+. No Python packages are installed by the pack; the music models themselves are the heavy part, and the YuE2 and SheetSage2 weights are CC BY-NC 4.0 - non-commercial.

    Common issues

    • A length value from somewhere else. Reusing an old job's parameters (App mode does this) can push in something like 2-3 minutes. The node rounds it to the nearest option and tells you; pick a length again to clear the note.
    • Your instrumental grew a vocal. Instrumental conditioning is guaranteed - silent score voice, no voice words in the style, the right lyrics tag. Instrumental audio is not: YuE2 can hum. That's what Check Vocals is for in the song templates.
    • Every song in a batch sounds the same. One brief, one genre. The variation changes title, story and hook, not the style. Different genre, different brief.
    • Long songs that stop early. Hitting the length ceiling isn't the same as finishing. Render another take; the packing's own docs are blunt that YuE2 sometimes stops mid-phrase.
    CategoryPlenio/Song

    Inputs (9)

    NameTypeDefaultDescription
    templateCOMBOnoneOptional starting point. Text fields you leave empty are taken from the template.
    descriptionSTRINGWhat the song is about and how it should sound. Sent to the writing model.
    genreSTRINGGenre and sub-genre, e.g. 'indie pop'.
    moodSTRINGMood words, e.g. 'warm, hopeful'.
    tempoSTRINGTempo, e.g. '88 BPM' or 'midtempo'.
    lengthCOMBOstandard (about 3:00)Target length. Guides the writing and, without a score, the render ceiling.
    vocalsCOMBOSung song or instrumental. Instrumental hides all vocal settings.
    keySTRINGOptional key, e.g. 'G major'. Music models that use a score take the key from the score.
    meterSTRINGOptional meter, e.g. '3/4'.

    Outputs (4)

    NameTypeDescription
    briefPLENIO_BRIEFThe brief for Write Song, Score Tools and the Song Sheet.
    brief_textSTRINGThe brief as readable text.
    max_secondsFLOATRender headroom for the target length.
    instrumentalBOOLEANTrue for instrumental songs.