FL MiniMax Music 3 Dataset
FL MiniMax Music 3 Dataset — the bouncer that keeps bad training data out
- dataset
- report
Every trainer in this ecosystem has the same dirty secret: garbage in, garbage out, and the garbage is usually a dataset problem, not a training problem. This node is the pack's answer to that. It doesn't caption, segment, or train anything - it checks a local caption-and-lyrics Music 3 dataset against the rules the trainer actually cares about, and hands you a validated dataset object plus a report. Think of it as a bouncer: bad track doesn't get in, and you find out why it got bounced instead of burning a training run to discover it.
How it works
It scans a dataset folder on disk and, crucially, never decodes the audio into workflow tensors. It's cheap on purpose. For each audio file it runs ffprobe to read duration, sample rate, and channel count, then checks the two sidecars Music 3 training expects - a .txt caption and a .lyrics file - and verifies the duration lands inside your min/max window. That's the metadata path. If you set audio_analysis to full, it goes deeper: an ffmpeg volume pass that flags silent audio and near-full-scale clipping, plus a content hash that catches exact duplicate tracks.
The dataset object that comes out is a FL_MINIMAX_MUSIC3_DATASET - the exact type the LoRA Trainer expects on its dataset input. That's the whole pipeline: preprocess (or assemble by hand) → validate here → train.
The inputs that matter
- dataset_folder - a dropdown that's auto-populated by scanning the pack's dataset root (under
ComfyUI/input/fl_minimax_music3/datasets/). If your folder isn't in the list, it isn't in the right place. - missing_lyrics -
instrumentaltreats a track without a.lyricssidecar as instrumental and lets it through;rejectthrows it out. Music 3 is caption-plus-lyrics conditioned, so this policy quietly shapes what your LoRA learns. - min_duration / max_duration - the window a track must fit (defaults 1 s to 60 s). Tracks outside it are rejected.
- duration_interval - the step for duration bucketing. Trainers sample by duration bucket, so this is your resolution for getting varied-length segments, not a per-track filter.
- audio_analysis -
metadata(fast, ffprobe only) orfull(adds volume analysis and duplicate detection).
Both outputs are worth reading: dataset wires into the trainer, and report is a STRING of JSON with valid/invalid counts, total seconds, and every error and warning per file. When training fails mysteriously, this report is where you start.
Install
This is one node of the FL MiniMax Music 3 pack. Install via ComfyUI Manager (search FL MiniMax Music 3) or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-MiniMaxMusic3.git
cd ComfyUI-FL-MiniMaxMusic3
pip install -r requirements.txt
Restart ComfyUI. One hard dependency to check first: ffprobe must be on your PATH (comes with FFmpeg). If it's missing, the node fails with a message telling you exactly that.
Common issues
- "No valid tracks" error - the whole dataset got rejected. Open the
reportoutput and read the per-file errors: empty captions, missing lyrics underreject, durations outside the window, or a file ffprobe couldn't decode are the usual suspects. - The folder isn't in the dropdown - it must live under the dataset root the pack scans, not anywhere you feel like putting it.
- Silent or clipped tracks - only caught in
fullanalysis mode. If your LoRA sounds weird and you skipped full analysis, this is a plausible reason. - The node re-validates when files change (its change-detection is deliberate), so if you edit captions mid-project, re-queueing picks them up automatically.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| dataset_folder | COMBO | 1 options: <no datasets found> | |
| recursive | BOOLEAN | true | — |
| caption_extension | STRING | .txt | — |
| lyrics_extension | STRING | .lyrics | — |
| missing_lyrics | COMBO | 2 options: instrumental, reject | |
| min_duration | FLOAT | 1.00–600 | — |
| max_duration | FLOAT | 601–1800 | — |
| duration_interval | FLOAT | 3.00.5–30 | — |
| audio_analysis | COMBO | 2 options: metadata, full | |
| include_invalid | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| dataset | FL_MINIMAX_MUSIC3_DATASET | — |
| report | STRING | — |