Song Brief
Nine Fields Between 'Indie Pop' and a Song You'll Actually Keep
- 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
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 revealslanguage,voiceandtheme; instrumental hides all of that and revealsmelody(an instrument plays the lead, or accompaniment only) and an optionallead_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.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | new song every run | new 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. |
| template | COMBO | none | Optional starting point. Text fields you leave empty are taken from the template. |
| description | STRING | How the song should sound - its character, instruments and arrangement (the lyrics have a field of their own). Sent to the writing model. | |
| genre | STRING | Genre and sub-genre, e.g. 'indie pop'. | |
| mood | STRING | Mood words, e.g. 'warm, hopeful'. | |
| tempo | STRING | Tempo, e.g. '88 BPM' or 'midtempo'. | |
| length | COMBO | standard (about 3:00) | Target length. Guides the writing and, without a score, the render ceiling. |
| vocals | COMBO | sung: 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. | |
| key | STRING | Optional 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. | |
| meter | STRING | Optional 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. | |
| arrangementopt | COMBO | off | off (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_closenessopt | INT | 700–100 | Creative 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_singingopt | BOOLEAN | false | Creative 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. |
| creativityopt | INT | 1000–200 | 0 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_fidelityopt | COMBO | standard | standard: 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)
| Name | Type | Description |
|---|---|---|
| brief | PLENIO_BRIEF | The brief for Write Song, Score Tools and the Song Sheet. |
| brief_text | STRING | The brief as readable text. |
| max_seconds | FLOAT | Render headroom for the target length. |
| instrumental | BOOLEAN | True for instrumental songs. |
| song_seed | INT | Added to the draft and plan seeds: every song of a series gets its own (kept while it waits for review); 0 for one song. |
| template | STRING | The brief template ('' for none). |
| genre | STRING | The genre (the template's when the field is empty). |
| mood | STRING | The mood. |
| tempo | STRING | The tempo as written. |
| length | STRING | The target length, e.g. 'standard (about 3:00)'. |
| vocals | STRING | sung, sparse vocals or instrumental. |
| language | STRING | The language of the lyrics ('' for an instrumental). |
| voice | STRING | The vocal character. |
| theme | STRING | What the lyrics are about. |
| key | STRING | The key as written. |
| meter | STRING | The meter as written. |
| arrangement | STRING | The creative mode. |
| genre_closeness | INT | The genre closeness (0-100). |
| lines_under_singing | BOOLEAN | Whether instrument lines also sound under the singing. |
| creativity | INT | The creativity (0-200, 100 the default): for the YuE2 blocks' sampling. |