Nodes/ComfyUI-FL-MiniMaxMusic3/FL MiniMax Music 3 Dataset Preprocessor
ComfyUI Node

FL MiniMax Music 3 Dataset Preprocessor

FL MiniMax Music 3 Dataset Preprocessor — an 8B model captions your music library for training

By filliptm·Created about a month ago·Updated 22 days ago· 5
FL MiniMax Music 3 Dataset Preprocessor
    • dataset
    • report
    source_folder/tmp/ComfyUI/input/fl_minimax_music3/sources
    output_datasetmoss_processed
    settings_json{"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}

    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 .aac files.
    • 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), and execution_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_policy and model_policy to their install/download options for that first run and expect to leave it alone for a while.
    • require_review mode 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 .txt captions before a long training run.
    CategoryFL/MiniMax Music 3/Training

    Inputs (3)

    NameTypeDefaultDescription
    source_folderSTRING/tmp/ComfyUI/input/fl_minimax_music3/sourcesAbsolute path to a local folder containing source audio
    output_datasetSTRINGmoss_processed
    settings_jsonSTRING{"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)

    NameTypeDescription
    datasetFL_MINIMAX_MUSIC3_DATASET
    reportSTRING