ComfyUI Node

Export Release

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

By jplenio·Created a day ago·Updated about 13 hours ago· 2
Export Release
  • audio
  • original
  • cover
  • reports
  • files
  • record
◄folderplenio►
◄naming{date} {title}►
◄collisionnumber►
◄title—►
◄flactrue►
◄mp3false►
◄wavfalse►
◄tags▾►

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

NameTypeDefaultDescription
audioAUDIOThe finished audio (every item of a batch becomes one file).
folderSTRINGplenioSub-folder of the ComfyUI output folder.
namingSTRING{date} {title}File name pattern: {title}, {date}, {time}, {seed}. '/' makes sub-folders.
collisionCOMBOnumberWhen the file exists: number (add ' (2)'), 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).
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.

Outputs (2)

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