ComfyUI Node

Export Release

Files With Tags and Cover Art, Plus a Record of How the Song Was Made

By jplenio·Created about a month ago·Updated about 15 hours ago· 105
Export Release
  • audio
  • original
  • cover
  • brief
  • reports
  • files
  • record
◄folderplenio►
◄naming{date} {title}►
◄collisionnumber►
◄title—►
◄flactrue►
◄mp3false►
◄wavfalse►
◄tags▾►
◄sheet_musicoff►
◄sheet_music_sizestandard►
◄project_in_flactrue►
◄lyrics_srttrue►
◄lyrics_timingthe song►
◄song_pagetrue►

What it is

The last node in every Plenio path, and the one that turns a good take into a file you can actually put somewhere: FLAC 24-bit, MP3 V0, WAV 32-bit float, with tags, cover art and a naming convention. It's also the node that ships the receipt - a .plenio.json release record holding the documents that conditioned the model with their hashes, the seeds and settings of the run, the reports, the measured loudness and the model licences.

That record is the feature I'd keep if I could keep only one. Six months later, "which lyrics draft, which score, which seed, which build made this file" is a question you cannot answer from the audio. It's answered here.

How it works

audio is the finished song, and every item of a batch becomes its own file. folder (default plenio) is a sub-folder of ComfyUI's output folder, and naming is a pattern - {title}, {date}, {time}, {seed}, with / creating sub-folders, so {date} {title} gives you 2026-09-26 My Song.flac. collision decides what happens when the name exists: number (add " (2)"), overwrite, or error. With number the whole set gets numbered together, so an earlier export's audio, cover and record are never half-overwritten - a small detail that saves an afternoon.

Format switches: flac on by default (24-bit lossless, Vorbis comments with title, artist, album, date, track, genre, comment, album artist and composer), mp3 off (LAME VBR V0, converted for the MP3 only above 48 kHz so 88.2 kHz becomes 44.1 and 96 kHz becomes 48), wav off (32-bit float, no clipping, but RIFF INFO has no album artist or composer and no place for a cover).

tags is a picker: title only, tags (revealing artist, album, date, track, genre, comment, album artist, composer fields), or copy from loaded file, which reads tags and the embedded cover from the workflow's single Load Audio node. Two Load Audio nodes and the export stops and asks you to type them instead. Cover art comes in on the cover input (an IMAGE, square-cropped to JPEG); as of Plenio 0.2.2 the pack embeds it itself, into a FLAC picture block or an ID3 APIC frame, and the README's mention of the optional mutagen package is stale - the code and changelog both say embedding is built in.

The reports input is an autogrow slot (up to 16) for the reports of the run: Song Sheets, mastering, vocal checks, the system check. Whatever you connect ends up in the record. original is the other useful optional: wire the unmastered take and you also get <name> (original).flac, which is the file you actually want when you decide a week later that the loudness target was wrong.

Outputs: files (paths, one per line) and record (the path of the JSON). Files are written to a temporary name and renamed on completion, so an interrupted export doesn't leave half a song.

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

ComfyUI 0.37.0+, no Python packages installed by the pack (it uses the PyAV and Pillow stack ComfyUI already has). Nothing else to download - this node is local file I/O.

Common issues

  • Cover saved as .jpg but not inside the file. You exported WAV, which has nowhere to put it, or you're on an older Plenio. Use FLAC or MP3.
  • "'copy from loaded file' needs exactly one Load Audio node." Exactly that. Either keep one loader in the graph or type the tags.
  • WAV files are missing album artist and composer. RIFF INFO has no fields for them. FLAC or MP3 if you need full tags.
  • Weird widget values on a workflow saved before 0.2.2. The node gained widgets in 0.2.2 and old saves restore by position, so values land in the wrong slots. Start from the current template or drop in a fresh Export node.
  • The record has no documents in it. Connect your Song Sheet reports to the reports input - the record can only hash what you feed it.
CategoryPlenio/Release

Inputs (19)

NameTypeDefaultDescription
audioAUDIOThe finished audio (every item of a batch becomes one file).
folderSTRINGplenioSub-folder of the ComfyUI output folder.
namingSTRING{date} {title}File name: {title}, {date}, {seed}, {genre}, {artist} ... (the variables of the tags); '/' makes sub-folders; [optional {parts}] vanish when empty.
collisionCOMBOnumberWhen the file exists: number (add ' (2)' - also to a title another song of the folder has), overwrite, or stop with an error.
titleoptSTRINGSong title (from the Song Sheet). Without it: the copied title or the source file name.
originaloptAUDIOAlso export this audio (for example the unmastered take) as '<name> (original).flac'.
coveroptIMAGECover art (square crop, JPEG).
briefoptPLENIO_BRIEFOptional: the brief, so that tags and the file name can use its fields ({genre}, {mood} ...).
reportsoptCOMFY_AUTOGROW_V3Reports to include in the release record (Song Sheets, mastering).
flacoptBOOLEANtrueFLAC 24-bit (lossless).
mp3optBOOLEANfalseMP3 VBR V0 (LAME).
wavoptBOOLEANfalseWAV 32-bit float (no clipping; few tags, no cover).
tagsoptCOMBOMetadata written into the files: the title only, tags typed or connected (with {variables}), or the tags of the loaded file.
sheet_musicoptCOMBOoffAlso save the sheet music (both voices, chords, sections, the lyrics under the notes) as '<name>.pdf' on A4 or Letter pages; an open ComfyUI page draws it after the export. Needs a score (YuE2).
sheet_music_sizeoptCOMBOstandardHow large the sheet music draws: standard about 3 bars a line, smaller 3-4, compact about 4, large 1-2 (the biggest notes).
project_in_flacoptBOOLEANtrueStore the release record (workflow, Song Sheets, seeds, settings) inside the song's FLAC: File > Continue a Plenio song... opens the song from the FLAC alone. Off for files you share without their making-of.
lyrics_srtoptBOOLEANtrueWrite the lyrics as subtitles: '(lines).srt' whole lines, '(notes).srt' note by note, '(sung).srt' what the take really sings. Timed by listening (Qwen3-ASR and its aligner, 5.9 GB, fetched on first use).
lyrics_timingoptCOMBOthe songWhat the lyrics ASR hears for the subtitles and the player: the song (quicker) or the take's vocal stem - more exact times, but the separation takes extra time: half a minute per take, more while the GPU is busy.
song_pageoptBOOLEANtrueAlso write '<name>.html': the song on one page to open in any browser - the lyrics with their sections and the prompts to copy, every setting, how it was made, the sound, the score and links to the files.

Outputs (2)

NameTypeDescription
filesSTRINGWritten files, one per line.
recordSTRINGPath of the release record.