Nodes/ComfyUI-SongLRC/Song Filename
ComfyUI Node

Song Filename

Stop your songs landing in a pile of ComfyUI_00001_.flac

By TheAwaken1·Created 22 days ago·Updated 17 days ago· 6
Song Filename
    • filename_prefix
    • safe_title
    ◄title►
    ◄folderaudio/songs►
    ◄lyrics—►

    Out of the box, ComfyUI's audio saver names everything ComfyUI_00001_. Which is fine until you want a lyric file sitting next to it, because an .lrc is only useful if it shares the audio's name - VLC, foobar, Navidrome and everything else find lyrics by looking for the same stem with a different extension. Hold The Line Tonight_00007.mp3 needs Hold The Line Tonight_00007.lrc, not lyrics_00003.lrc.

    Song Filename is the small plumbing node that makes those two names agree. It's the least exciting node in the pack and the one everything else depends on.

    What it does

    Two required widgets and one optional input:

    • title - the song title. Leave it blank and it derives one from the lyrics instead, using the same hook-finding logic Lyrics Clean uses.
    • folder - where inside ComfyUI's output directory you want files to go. Default audio/songs.

    And optionally lyrics, which is only consulted when title is blank. Wire it from Lyrics Clean's lyrics output and you can leave the title field empty forever.

    It returns two strings:

    • filename_prefix - audio/songs/Hold The Line Tonight. This is the one you wire into Save Audio (Advanced)'s filename prefix, and into Save LRC (auto) or Save Matching LRC. The audio saver then appends its own five-digit counter.
    • safe_title - Hold The Line Tonight, the cleaned title on its own. Handy for a Preview Text node, or to feed the title input on Lyrics to LRC so the [ti:] tag in the LRC and the filename agree too.

    The sanitising is worth knowing because it's what saves you from a save error: <>:"/\|?* and control characters become spaces, runs of whitespace collapse, leading and trailing dots, dashes and underscores get trimmed, and the whole thing is capped at 80 characters. Empty turns into Generated Song. Slashes in folder are normalised, so \audio\songs\ and audio/songs behave the same.

    Nobody types the counter

    Here's the thing that confuses people arriving from an image workflow: there is no counter setting here. The _00007 is appended by whatever saver you wire downstream, and Save Matching LRC reads that exact number back out of the folder to name the LRC. So don't try to smuggle a number into title - you'll get Hold The Line Tonight 7_00001.flac.

    Install

    Same as the rest of the pack. Manager → search ComfyUI-SongLRC, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/TheAwaken1/ComfyUI-SongLRC
    pip install -r ComfyUI-SongLRC/requirements.txt
    

    numpy and soundfile only. No models, no WhisperX needed for this node.

    Where people get tripped up

    Changed the folder and the LRC went somewhere else. If you point folder at music/2026 but your Save Audio (Advanced) node still has a hand-typed prefix, the two disagree and Save Matching LRC will fail with a "no saved FLAC, MP3, or Opus found" error, because it's hunting in music/2026 for a file that landed elsewhere. Wire filename_prefix into the audio saver rather than typing it in both places.

    Old workflows write to audio/YuE2. The pack used to be called ComfyUI-MiniMaxLRC and defaulted there. Load an old graph and its stored widget value stays audio/YuE2; a freshly dropped Song Filename defaults to audio/songs. If you want your library in one place, check the field after loading a graph from the internet.

    Categoryaudio/SongLRC

    Inputs (3)

    NameTypeDefaultDescription
    titleSTRINGLeave blank to derive a title from the lyrics.
    folderSTRINGaudio/songsSubfolder inside ComfyUI's output directory.
    lyricsoptSTRINGUsed to derive a title when the title field is blank.

    Outputs (2)

    NameTypeDescription
    filename_prefixSTRING—
    safe_titleSTRING—