Save LRC (auto)
The saver for when there's no audio file to match
- path
Save LRC (auto) writes the lyric file on its own. No audio input, no waiting for another node to have saved something first - it takes the LRC text, picks the next free number in the target folder, and writes the file. It's the saver you want when you're only after the lyrics, or when the song itself is being saved by something else entirely.
Inputs and outputs
Two required widgets and one output:
lrc- the timed text from Lyrics to LRC.filename_prefix- where to write, defaultaudio/songs/lyrics. Verified the way you'd hope: the path is resolved inside ComfyUI's output directory and rejected if it tries to escape, so you can't accidentally point a workflow at/etc.- output:
path, a STRING holding the relative path it wrote, e.g.audio/songs/lyrics_00003.lrc. It's an output node, so it fires when the graph runs; the returned path is there to display or log.
After a run the node body shows the finished lyrics - song title, then timed lines - and the console gets the path.
How the counter works
It looks for existing <name>_NNNNN.lrc files in the target folder, takes the highest number, adds one, and writes. Zero-padded to five digits, matching ComfyUI's own convention. It does not touch or look at your audio files at all, which is the whole distinction from Save Matching LRC.
Which is the thing to be clear about before you use this: the counter is independent of the audio's. If you wire Song Filename's filename_prefix in here, this node writes Hold The Line Tonight_00003.lrc while Save Audio (Advanced) writes Hold The Line Tonight_00007.mp3. The names look related but they don't match, and no player will pair them. If you want the classic side-by-side lyrics file, you want Save Matching LRC, which reads the audio's counter back off disk instead of inventing one.
When this is the right node
- You're generating lyrics for a song that already exists - a cover, a remix, an audio file dropped in from outside ComfyUI. There's nothing being saved to match, so matching-by-name is meaningless.
- You want just the words, timed against a duration you typed, and the audio is going out through a different application.
- You're producing
.lrcfiles as a batch to drop into a music library later. - Your audio is being saved as
.wav. Matching mode only recognises.flac,.mp3and.opus, so a WAV render leaves it with nothing to find - this saver doesn't care what format the audio is.
The pack's own advice is to pick one of the two savers and leave the other out. Wire both and every run writes your lyrics twice, under two names, with two counters, and you get to explain to yourself later what lyrics_00001.lrc was doing next to track 12.
Install
Manager → search ComfyUI-SongLRC, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TheAwaken1/ComfyUI-SongLRC
pip install -r ComfyUI-SongLRC/requirements.txt
Two pure-Python-ish dependencies, numpy and soundfile. No models, no WhisperX - though the quality of what you save obviously depends on the alignment upstream.
This node has no legacy twin: it was added in the 1.1.0 rename, so there's no MiniMax-prefixed version of it to trip over. If you're moving a workflow over from ComfyUI-MiniMaxLRC, add this one fresh and delete the old pack.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| lrc | STRING | — | |
| filename_prefix | STRING | audio/songs/lyrics | Path inside the output folder. Connect Song Filename to match the audio name. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| path | STRING | — |