ComfyUI Node

Cover Brief

Pick the New Style, Keep the Melody, and Actually Decide What Happens to the Vocals

By jplenio·Created about a month ago·Updated about 23 hours ago· 105
Cover Brief
  • source
  • brief
  • brief_text
  • use_source_lyrics
  • instrumental
  • song_seed
  • template
  • genre
  • mood
  • vocals
  • language
  • voice
  • theme
  • harmony
  • arrangement
  • song_flow_closeness
  • lyrics_closeness
  • lines_under_singing
  • creativity
  • original_notes
◄modenew cover every run►
◄templatenone►
◄description►
◄genre►
◄mood►
◄vocals▾►
◄harmonynew accompaniment►
◄title►
◄arrangementoff►
◄song_flow_closeness70►
◄lyrics_closeness0►
◄lines_under_singingfalse►
◄creativity100►
◄lyrics_fidelitystandard►
◄original_notes100►

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 optional lead_instrument.
  • original lyrics - keep the source's words; nested language (auto-detects from the singing) and voice.
  • new lyrics - new words written to the source's phrasing; nested language, voice, theme and a phrasing_reference switch 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_reference and make sure harmony matches your intent - re-harmonising under new words changes the shape of the song more than people expect.
CategoryPlenio/Song

Inputs (16)

NameTypeDefaultDescription
modeCOMBOnew cover every runnew cover every run (default): each run writes and renders another version, without stops. one cover, stop to review: the Song Sheets stop so you can check the transcription and the lyrics; later runs render new takes.
templateCOMBOnoneOptional target style. Style fields you leave empty are taken from the template.
descriptionSTRINGHow the cover should sound - instruments, feel, production. Sent to the writing model; a genre or a description is needed.
genreSTRINGTarget genre, e.g. 'acoustic folk'.
moodSTRINGMood words, e.g. 'warm, intimate'.
vocalsCOMBOoriginal lyrics: the source's words, transcribed. new lyrics: new words on the source's melody. instrumental: an instrument plays the vocal melody, or accompaniment only.
harmonyCOMBOnew accompanimentnew 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).
titleSTRINGOptional fixed title, e.g. 'Original Title (Jazz Cover)'. Empty: the source recording's title with '-cover' when 'source' is connected; else the writer proposes one.
arrangementoptCOMBOoffoff (default): the transcribed score stays as it is. A creative mode (experimental) re-arranges the sections within the song flow closeness; the line under the brief says what the chosen mode does.
song_flow_closenessoptINT700–100Creative modes only (experimental): how close the cover stays to the original - 100 exactly, 80 chords and key stay, 50 recognisable, 20 a free version, 0 only a hint. The form always stays.
lyrics_closenessoptINT00–100New lyrics only (experimental): how close they stay to the source's lyrics - 0 without its text (default), 30 its theme, 60 its story, 90-100 its meaning line by line.
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.
sourceoptAUDIOThe 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.
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).
original_notesoptINT1000–100How many of the source's notes YuE2 gets: 100 all. Less leaves out the least important of the instrument line and chords (an instrumental's melody too; a sung one keeps all), nothing new; 0 about a quarter.

Outputs (19)

NameTypeDescription
briefPLENIO_BRIEFThe cover brief.
brief_textSTRINGThe brief as readable text.
use_source_lyricsBOOLEANTrue for original-lyrics covers (lyrics from the ASR).
instrumentalBOOLEANTrue for instrumental covers.
song_seedINTAdded to the draft seed: 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.
vocalsSTRINGoriginal lyrics, new lyrics or instrumental.
languageSTRINGThe language of the lyrics ('' for an instrumental).
voiceSTRINGThe vocal character.
themeSTRINGWhat new lyrics are about.
harmonySTRINGnew accompaniment or keep original chords.
arrangementSTRINGThe creative mode.
song_flow_closenessINTThe song flow closeness (0-100).
lyrics_closenessINTThe lyrics closeness of new lyrics (0-100).
lines_under_singingBOOLEANWhether instrument lines also sound under the singing.
creativityINTThe creativity (0-200, 100 the default): for the YuE2 Takes' sampling.
original_notesINTHow many of the source's notes the score keeps (0-100, 100 every one).