FL MiniMax Music 3 Dataset Preprocessor
FL MiniMax Music 3 Dataset Preprocessor — an 8B model captions your music library for training
- dataset
- report
If you want to train a Music 3 LoRA on your own music, the boring honest truth is that captioning is most of the work - and captioning music is worse than captioning images, because nobody wants to hand-write a description for 40 segments of a 14-song folder. This node is the shortcut: point it at a folder of audio, and it uses MOSS-Music 8B Instruct - a model purpose-built for music understanding - to caption, transcribe, analyze structure, and segment each track into trainer-ready pieces. It's the closest thing to the "just point it at a folder and walk away" dream, with a couple of expensive asterisks.
What actually happens
The node reads a source directory recursively at execution time, in place - files are not uploaded or copied through the browser, which is the feature that makes 50-track libraries usable at all. For every source it runs MOSS to produce a musical caption, lyrics with structure tags like [verse] and [chorus], and a segmentation plan. Long tracks get split toward a ~42 s target (min 8 s, max 60 s by default), and each segment is materialized as lossless PCM WAV plus three sidecars:
dataset/
track_001.wav
track_001.txt # the musical caption
track_001.lyrics # lyrics + structure tags
track_001.music3.json # provenance, hashes, analysis, review state
That's exactly the format the FL MiniMax Music 3 Dataset validator and the LoRA trainer expect. The lossless-PCM choice is deliberate: on Windows it sidesteps TorchCodec audio decoding entirely.
The expensive part you should plan around: MOSS-Music is a ~16.9 GiB download, checksum-verified, and it runs in its own isolated environment. The preprocessor installs that environment (backend_policy) and downloads the model (model_policy) on first run. This is not a five-minute first queue.
Inputs
- source_folder - an absolute path to a local folder of
.wav,.flac,.mp3,.ogg,.m4a, or.aacfiles. - output_dataset - the name the finished dataset lands under (in the pack's dataset root). Default
moss_processed. - settings_json - a multiline JSON blob that drives everything. Sensible defaults are pre-filled; the fields you'll actually touch are
analysis_profile(caption_only,caption_and_lyrics,full_analysis),segment_long_tracks, the three segment-duration fields,write_policy(fill_missing/replace_generated/replace_all), andexecution_mode(auto_process_and_write/require_review).
Outputs are dataset (wire it straight into the trainer chain) and report (a STRING with the run state and per-segment breakdown).
Install
Part of FL MiniMax Music 3 - 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, then make sure ffmpeg/ffprobe are on PATH (the segmenter uses them).
Where people get burned
- First run is enormous. It installs a venv, downloads ~16.9 GiB of MOSS model, and then processes. Set
backend_policyandmodel_policyto their install/download options for that first run and expect to leave it alone for a while. require_reviewmode blocks the queue. In that execution mode it won't hand you a dataset until you approve or edit the generated segments in the preprocessor dashboard. Great for control, annoying if you forgot you set it.- Training pain is usually dataset pain. The same author's ACE-Step training pack has a whole thread of people whose LoRAs came out barely audible - and the cause was almost always dataset and step count, not the trainer. This preprocessor exists to remove that variable. Don't skip it and hand the trainer raw, uncaptioned folders.
- Garbage in, garbage out still applies - an 8B model will happily write "a synth arpeggio loop" for that weird demo track. Skim the generated
.txtcaptions before a long training run.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| source_folder | STRING | /tmp/ComfyUI/input/fl_minimax_music3/sources | Absolute path to a local folder containing source audio |
| output_dataset | STRING | moss_processed | — |
| settings_json | STRING | {"schema_version":1,"analysis_profile":"caption_and_lyrics","segment_long_tracks":true,"min_segment_seconds":8.0,"target_segment_seconds":42.0,"max_segment_seconds":60.0,"output_sample_rate":44100,"preserve_channels":true,"write_policy":"fill_missing","execution_mode":"auto_process_and_write","model_policy":"download_if_missing","backend_policy":"install_if_missing","temperature":0.2,"max_new_tokens":1024} | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| dataset | FL_MINIMAX_MUSIC3_DATASET | — |
| report | STRING | — |