ComfyUI Node

Song Brief

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

By jplenio·Created about a month ago·Updated about 16 hours ago· 106
Song Brief
    • brief
    • brief_text
    • max_seconds
    • instrumental
    • song_seed
    • template
    • genre
    • mood
    • tempo
    • length
    • vocals
    • language
    • voice
    • theme
    • key
    • meter
    • arrangement
    • genre_closeness
    • lines_under_singing
    • creativity
    ◄modenew song every run►
    ◄templatenone►
    ◄description►
    ◄genre►
    ◄mood►
    ◄tempo►
    ◄lengthstandard (about 3:00)►
    ◄vocals▾►
    ◄key►
    ◄meter►
    ◄arrangementoff►
    ◄genre_closeness70►
    ◄lines_under_singingfalse►
    ◄creativity100►
    ◄lyrics_fidelitystandard►

    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 (15)

    NameTypeDefaultDescription
    modeCOMBOnew song every runnew song every run: each run writes and renders another song from this brief (the batch count next to Run makes a series). one song, stop to review: the Song Sheets stop for checking; later runs render new takes.
    templateCOMBOnoneOptional starting point. Text fields you leave empty are taken from the template.
    descriptionSTRINGHow the song should sound - its character, instruments and arrangement (the lyrics have a field of their own). 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: a song with lyrics. sparse vocals: mostly instrumental, the voice sings only a few short phrases (a hook, a call, wordless sounds like 'ooh'). instrumental: no singing; hides all vocal settings.
    keySTRINGOptional key, e.g. 'G major'. Music models that use a score take the key from the score; the DAW template's empty score is built in it.
    meterSTRINGOptional meter, e.g. '3/4' or '6/8'. Music models that use a score take the meter from the score; the DAW template's empty score is built in it.
    arrangementoptCOMBOoffoff (default): the music model plans the music by itself. A creative mode (experimental) lets the writer plan chords, lines and energy per section; the line under the brief says what the chosen mode does.
    genre_closenessoptINT700–100Creative modes only (experimental): how close the song stays to its genre - 100 strictly typical, 70 typical with personal touches, 40 free within the genre, 0 any style.
    lines_under_singingoptBOOLEANfalseCreative modes only (experimental): off - the instrument line plays where the voice rests, as in YuE2's own scores; on - it also sounds under the singing, calm and below the voice.
    creativityoptINT1000–2000 steady ... 50 the reference (as before the slider) ... 100 experimental (the default) ... 200 adventurous: how much the writer and YuE2 dare. More surprises also means more misses - try a few seeds.
    lyrics_fidelityoptCOMBOstandardstandard: one take. high: a second take when the first sang under 96 % of the words as written; the better is kept. highest: a third when neither reached 96 %. Takes longer (up to 2x or 3x).

    Outputs (20)

    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.
    song_seedINTAdded to the draft and plan seeds: every song of a series gets its own (kept while it waits for review); 0 for one song.
    templateSTRINGThe brief template ('' for none).
    genreSTRINGThe genre (the template's when the field is empty).
    moodSTRINGThe mood.
    tempoSTRINGThe tempo as written.
    lengthSTRINGThe target length, e.g. 'standard (about 3:00)'.
    vocalsSTRINGsung, sparse vocals or instrumental.
    languageSTRINGThe language of the lyrics ('' for an instrumental).
    voiceSTRINGThe vocal character.
    themeSTRINGWhat the lyrics are about.
    keySTRINGThe key as written.
    meterSTRINGThe meter as written.
    arrangementSTRINGThe creative mode.
    genre_closenessINTThe genre closeness (0-100).
    lines_under_singingBOOLEANWhether instrument lines also sound under the singing.
    creativityINTThe creativity (0-200, 100 the default): for the YuE2 blocks' sampling.