Cover Brief
Pick the New Style, Keep the Melody, and Actually Decide What Happens to the Vocals
- source
- brief
- brief_text
- use_source_lyrics
- instrumental
- song_seed
What it is
Cover Brief is the intent document for making a recording into a new version of itself. Melody, form and tempo come from the source - this node decides everything else: the target style, what happens to the vocals, and what happens to the harmony.
The single most useful thing about it is that it makes you commit. Most "cover" tools hand you a vague creativity slider and let you guess what it did. Here you pick instrumental, original lyrics or new lyrics on the melody, and new accompaniment or keep original chords, and then you can watch those choices play out in the transcribed score before anything renders. Which lyrics text is used in the end is settled in the Song Sheet, not here - this is the request, the sheet is the record.
How it works
Style first. template gives you the same ~240-entry genre library Song Brief uses, and it only fills fields you leave empty - so you can take "bossa nova" and override just the mood. description is the free-form "how it should sound" line and it goes to the writer; genre and mood are the short fields. title is optional and advanced: fill it in for something like "Original Title (Jazz Cover)", leave it blank and the writer proposes one.
Then the decision the whole node exists for - vocals:
- instrumental (the default) - nested options for
melody(an instrument plays the vocal melody, or accompaniment only) and an optionallead_instrument. - original lyrics - keep the source's words; nested
language(auto-detects from the singing) andvoice. - new lyrics - new words written to the source's phrasing; nested
language,voice,themeand aphrasing_referenceswitch that shows the writer the source's transcribed lyrics so syllable counts line up.
harmony is the other real choice, and it's worth understanding rather than defaulting: new accompaniment strips the source's chords and lets YuE2 re-harmonise (melody mode), while keep original chords leaves them in place (full mode). Wanting a jazz version of a folk song means the first; wanting a different production of the same progression means the second.
Outputs: brief (into Compose Writing Prompt, the Song Sheet, and Check Vocals), brief_text (readable), and two booleans - use_source_lyrics (true for original-lyrics covers, i.e. lyrics from the ASR) and instrumental. Those booleans are the cheap way to branch a graph: gate the ASR, or route to a different mastering chain, without parsing the brief downstream.
Install
# ComfyUI Manager → search "Plenio Music Production System" → Install → restart
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/jplenio/Plenio-Music-Production-System
Requires ComfyUI 0.37.0+. The cover path needs more weights than the song path: sheetsage2_bf16.safetensors (1.4 GB, into models/audio_encoders) for score transcription and vocal checks, the YuE2 int8 checkpoint (4.0 GB), the Gemma 4 writer, and - for original or new lyrics - faster-whisper, the one optional pip install the pack will tell you about when you need it:
python -m pip install faster-whisper
Note the licence situation if this is going anywhere commercial: YuE2, the YuE2 VAE, SheetSage2 and the instrumental adapter are CC BY-NC 4.0 - non-commercial. The release record names the licences of the models a song was made with, so it's auditable after the fact.
Common issues
- The source is too long. SheetSage2 reads a 300-second window at a time, and on a 16 GB card a second pass doesn't fit - the node tells you so and asks you to trim. Use Trim Audio Duration and do the cover in parts.
- Nobody sang, but the lyrics look invented. The ASR mishears. The Song Sheet highlights unsure words so you can correct them before rendering.
- A voice appeared in your instrumental. Instrumental is a strong request, not a guarantee. That's why the template wires Check Vocals, which measures takes and keeps the cleanest one. N takes cost N renders; nothing is retried for you.
- The new lyrics fight the melody. Turn on
phrasing_referenceand make sureharmonymatches your intent - re-harmonising under new words changes the shape of the song more than people expect.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | one cover, stop to review | one cover, stop to review: Song Sheet · Score and Song Sheet · Text stop so you can check the transcription and the lyrics; later runs keep them and render new takes. new cover every run: each run writes a different version (title, style and - for new lyrics - the lyrics, with its own draft seed) and renders it; the transcription of the source is reused. A Song Sheet set to 'stop for review' stops each new version; after Approve the next run renders it, the run after it writes the next one. |
| template | COMBO | none | Optional target style. Style fields you leave empty are taken from the template. |
| description | STRING | How the cover should sound - instruments, feel, production. Sent to the writing model; a genre or a description is needed. | |
| genre | STRING | Target genre, e.g. 'acoustic folk'. | |
| mood | STRING | Mood words, e.g. 'warm, intimate'. | |
| vocals | COMBO | instrumental (the node's default): an instrument plays the vocal melody, or accompaniment only. original lyrics: the source's words, transcribed (the 2 · YuE2 · Cover template starts with these). new lyrics: new words on the source's melody. | |
| harmony | COMBO | new accompaniment | new accompaniment: the source's chords are removed and YuE2 re-harmonises (melody mode). keep original chords: the chords stay (full mode; the 2 · YuE2 · Cover template starts with it). |
| title | STRING | Optional fixed title, e.g. 'Original Title (Jazz Cover)'. Empty: the source recording's title with '-cover' (its title tag, else its file name) when 'source' is connected, as in the template; without it the writer proposes one. | |
| arrangementopt | COMBO | off | off: no arrangement - the transcribed score stays as it is. standard: Genre-typical - calm verses, fuller choruses, the last chorus the strongest; everything well placed, nothing unusual. sterile: Clean, sparse and steady - plain chords, long notes or silence, low even energy, no surprises. unplugged: Intimate and acoustic - guitar or piano, fingerpicked broken chords and soft pads, low energy, warm and close. varied: Every section sounds different - the instrument line changes from section to section, contrasting energy, fresh chords in the bridge. call and response: The instruments answer the melody - a short reply in the gaps between its phrases, like a band talking back to the singer. signature motif: One short melodic figure becomes the song's signature - it opens the song, returns in every chorus and closes it. hypnotic: A steady repeating pattern drives the song - riffs and broken chords over few chords, changing only little by little (trance, minimal, krautrock). breakdown: Full sections with a breakdown in the middle - everything drops back to almost nothing, then builds again into a big final section. dramatic: One long arc - from a quiet start, section by section, to a big climax in the final chorus. many instruments: A full ensemble - an instrument line in every section, riffs, countermelodies and a solo. jazz colours: Rich jazz harmony - seventh chords throughout, passing chords before a section changes, a mellow countermelody and a solo. fantasy: Imaginative and surprising - colourful chords, unusual instrument lines, a returning motif, a touch of film music. key change: Standard arrangement with one key change - the final chorus lifted a half or whole step, prepared by leading chords. A creative mode (above, or your own file in user/plenio/arrangement) adds its hints to the writing prompt and lets the writer model re-arrange the score's sections within the song flow closeness: chords, what the instrument line plays, energy. The melody and the form always stay. Plenio writes the notes itself and checks the result; a plan it cannot use leaves the transcription as it was (the score's Song Sheet says so). Experimental: creative modes can give unexpected results - they are meant for experimenting: try a mode, listen, keep what you like or run again with another arrangement seed. off is the dependable choice. |
| song_flow_closenessopt | INT | 700–100 | Creative modes only (off ignores it; experimental): how close the cover's song flow stays to the original - 100 exactly the original (nothing is planned), 80 chords, key and tempo stay (only silent sections get a line), 50 recognisable (chords recoloured, lines changed, a small key lift), 20 a free version (new chords and lines, another tempo), 0 only a hint of the original. The melody and the form always remain. |
| lyrics_closenessopt | INT | 00–100 | New lyrics only (experimental): how close they stay to the source's lyrics - 0 written without the source's text (default), 1-29 only a hint of it, 30-59 its theme and mood, 60-89 its story in new words, 90-100 its meaning line by line (a singable translation when the language differs). Above 0 the source's lyrics are transcribed for the writer (lyrics ASR); the source must have clear singing. |
| lines_under_singingopt | BOOLEAN | false | Creative modes only (experimental): off (default) - the instrument line plays where the voice rests (intros, interludes, gaps between phrases), as in YuE2's own scores, where the second voice is the instrumental melody. On - it also sounds under the singing: calm, below the voice and never a minor second against it. More accompaniment, but further from what YuE2 knows. |
| sourceopt | AUDIO | The source recording (its Load Audio node): with an empty title the cover is named after it - the recording's title tag, else its file name, with '-cover' - so a cover is easy to match with its source. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| brief | PLENIO_BRIEF | The cover brief. |
| brief_text | STRING | The brief as readable text. |
| use_source_lyrics | BOOLEAN | True for original-lyrics covers (lyrics from the ASR). |
| instrumental | BOOLEAN | True for instrumental covers. |
| song_seed | INT | Added to the draft seed: every song of a series gets its own (kept while it waits for review); 0 for one song. |