scragnog/MiniMax-Music3-GGUF

Model

5

stars

63

commits

4

linked in READMEs

Sep 9, 2026

updated

gguf
hot-step-cpp
music-generation
text-to-music

README

MiniMax-Music3 — GGUF

GGUF conversion of MiniMaxAI/MiniMax-Music3 for HOT-Step CPP, a fully local desktop app for AI music generation with a native C++/GGML engine. As far as we know this is the first GGUF conversion of this model.

These files are downloaded automatically by HOT-Step's Model Manager when the MiniMax-Music3 backend is selected. They are not usable with llama.cpp alone: mm3-lm-*.gguf is structurally a Qwen3 GGUF, but music generation requires the full five-module pipeline (LM → RVQ depth decoder → condition encoder → flow-matching DiT → vocoder) implemented in HOT-Step's engine.

Split format (one GGUF per component)

Since 2026-08-14 the repo carries one file per pipeline component, so each can be picked at its own quantisation and swapped without re-downloading the others:

File familyComponentQuants
mm3-lm-<quant>.ggufGlobal LM (8.59B, Qwen3 arch, 200k vocab incl. 16,384 semantic audio codes) + full tokenizerf16 · q8_0 · Q6_K · Q5_K_M/S · Q4_K_M/S · NVFP4 · MXFP4 · Q3_K_L/M/S · Q2_K
mm3-dit-<quant>.ggufFlow-matching DiT (2.4B)same ladder
mm3-depth-<quant>.ggufRVQ depth decoder (0.6B)same ladder (Q8_0 is the validated quality floor)
mm3-cond-f16.ggufCondition encoder (25M)f16 only — never quantised
mm3-voc-f16.ggufVocoder (54M)f16 only — never quantised
LICENSEMiniMax-Music3 Community License (governs the weights)

Suggested combos: quality = everything f16 (~24 GB VRAM); recommended = LM/DiT/depth q8_0 + f16 frontends (~13 GB); balanced = LM q8_0 + DiT Q4_K_M + depth q8_0 (~12 GB download, the split's headline mix); fast on RTX 50-series = LM/DiT NVFP4 + depth q8_0. Audio-code LMs degrade audibly below Q5 — the sub-Q5 LM files exist for experiments, not listening.

The legacy two-file layout (mm3-synth-<quant>.gguf bundling depth+cond+dit+voc) remains available for older HOT-Step versions; current versions load either, preferring split files.

Output: 44.1 kHz stereo, up to 5 minutes.

Training files (added 2026-08-31)

Two more files, needed only by HOT-Step's Training Studio when training an MM3 LoRA. Neither is loaded during generation, and neither is in the generation packs. Download them together as the Model Manager's MiniMax-Music3 Training pack.

FileComponentWhy it is needed
mm3-rvq-53kpooled-f32.ggufAudio → RVQ codes encoder (169M)The codes stage turns your dataset's audio into the code streams the LM trains on
mm3-enc-f16.ggufDAV audio encoder (44.1 kHz stereo → 128-channel flow latents)Input stage of the same codes job
mm3-lm-bf16.ggufThe LM in its source BF16 precision (17.2 GB)OPTIONAL, training only (added 2026-09-03). Picked as the training base it lets the trainer run the projection GEMMs on BF16 tensor cores (--weights bf16) instead of the F32 fallback every other base uses: 1.4x faster per step than q8_0 on a 5090 at matched crop, for ~9 GB more VRAM, so it wants a 40 GB+ card at the default crop. Not better than f16 for generation; render on q8_0 as always
mm3-rec7-f16.ggufrec7 state encoder (audio → LM frame hiddens, 170M)OPTIONAL — only the codes stage's "Cover-launder" option (dense-mix training fix, 2026-08-31). Carries the LM's two semantic table slices so laundering never runs the 8B. PurpleOrc's m3-rec7-encoder (MIT), converted with convert-rvq-encoder.py --head --m3

Training also wants mm3-depth-f16.gguf specifically. The quantised depth files that ship with the generation packs are for generation.

MiniMax never released the official audio tokeniser, so the RVQ encoder here is a community reimplementation: PurpleOrc's open-rvq encoder, SimpleTuner's v4 architecture trained from scratch on a 53k-track multilingual corpus, converted to GGUF and mirrored here so the Model Manager has one place to fetch from. Its reported holdout scores and training code are on PurpleOrc's repo, which is the place to read before drawing conclusions about it.

Codes are encoder-specific. An adapter trained on this encoder's codes has to keep using this encoder at inference; swapping encoders means re-exporting every code cache.

Conversion provenance

Converted with HOT-Step's engine/tools/convert-mm3.py from the bf16/fp16 safetensors published by MiniMax (via the Comfy-Org repackage), then split per component with engine/tools/split-mm3.py (byte-exact tensor passthrough — a split file's tensors are bit-identical to the bundle's). Vocoder weight-norm folded at conversion; vocoder and DiT Fourier/RoPE bases pinned F32; all 911 tensors shape-validated. The HOT-Step implementation is parity-validated against the official diffusers reference (per-module correlation ≥ 0.9999 vs fp32; full-pipeline replay 0.9988). The split-model approach follows ServeurpersoCom/minimaxmusic.cpp, whose author kindly sanctioned reuse of his design.

Credits

All credit for the model belongs to MiniMax. MiniMax-Music3 is their work — the architecture, the training, and the release. This repository contains nothing but a format conversion of their weights, and the Structured Caption format that drives the model is their design.

Thanks also to:

License

The model weights are subject to the MiniMax-Music3 Community License (included here as LICENSE, per its notice-preservation requirement). Notable terms: prominent display of "MiniMax-Music3" in commercial products, separate authorization above US$20M annual revenue, acceptable-use policy, and clear disclosure of AI generation for publicly distributed outputs. The conversion adds no additional restrictions.

Contributors

scragnog

63 commits

scragnog/MiniMax-Music3-GGUF

Model

5

stars

63

commits

4

linked in READMEs

Sep 9, 2026

updated

gguf
hot-step-cpp
music-generation
text-to-music

README

MiniMax-Music3 — GGUF

GGUF conversion of MiniMaxAI/MiniMax-Music3 for HOT-Step CPP, a fully local desktop app for AI music generation with a native C++/GGML engine. As far as we know this is the first GGUF conversion of this model.

These files are downloaded automatically by HOT-Step's Model Manager when the MiniMax-Music3 backend is selected. They are not usable with llama.cpp alone: mm3-lm-*.gguf is structurally a Qwen3 GGUF, but music generation requires the full five-module pipeline (LM → RVQ depth decoder → condition encoder → flow-matching DiT → vocoder) implemented in HOT-Step's engine.

Split format (one GGUF per component)

Since 2026-08-14 the repo carries one file per pipeline component, so each can be picked at its own quantisation and swapped without re-downloading the others:

File familyComponentQuants
mm3-lm-<quant>.ggufGlobal LM (8.59B, Qwen3 arch, 200k vocab incl. 16,384 semantic audio codes) + full tokenizerf16 · q8_0 · Q6_K · Q5_K_M/S · Q4_K_M/S · NVFP4 · MXFP4 · Q3_K_L/M/S · Q2_K
mm3-dit-<quant>.ggufFlow-matching DiT (2.4B)same ladder
mm3-depth-<quant>.ggufRVQ depth decoder (0.6B)same ladder (Q8_0 is the validated quality floor)
mm3-cond-f16.ggufCondition encoder (25M)f16 only — never quantised
mm3-voc-f16.ggufVocoder (54M)f16 only — never quantised
LICENSEMiniMax-Music3 Community License (governs the weights)

Suggested combos: quality = everything f16 (~24 GB VRAM); recommended = LM/DiT/depth q8_0 + f16 frontends (~13 GB); balanced = LM q8_0 + DiT Q4_K_M + depth q8_0 (~12 GB download, the split's headline mix); fast on RTX 50-series = LM/DiT NVFP4 + depth q8_0. Audio-code LMs degrade audibly below Q5 — the sub-Q5 LM files exist for experiments, not listening.

The legacy two-file layout (mm3-synth-<quant>.gguf bundling depth+cond+dit+voc) remains available for older HOT-Step versions; current versions load either, preferring split files.

Output: 44.1 kHz stereo, up to 5 minutes.

Training files (added 2026-08-31)

Two more files, needed only by HOT-Step's Training Studio when training an MM3 LoRA. Neither is loaded during generation, and neither is in the generation packs. Download them together as the Model Manager's MiniMax-Music3 Training pack.

FileComponentWhy it is needed
mm3-rvq-53kpooled-f32.ggufAudio → RVQ codes encoder (169M)The codes stage turns your dataset's audio into the code streams the LM trains on
mm3-enc-f16.ggufDAV audio encoder (44.1 kHz stereo → 128-channel flow latents)Input stage of the same codes job
mm3-lm-bf16.ggufThe LM in its source BF16 precision (17.2 GB)OPTIONAL, training only (added 2026-09-03). Picked as the training base it lets the trainer run the projection GEMMs on BF16 tensor cores (--weights bf16) instead of the F32 fallback every other base uses: 1.4x faster per step than q8_0 on a 5090 at matched crop, for ~9 GB more VRAM, so it wants a 40 GB+ card at the default crop. Not better than f16 for generation; render on q8_0 as always
mm3-rec7-f16.ggufrec7 state encoder (audio → LM frame hiddens, 170M)OPTIONAL — only the codes stage's "Cover-launder" option (dense-mix training fix, 2026-08-31). Carries the LM's two semantic table slices so laundering never runs the 8B. PurpleOrc's m3-rec7-encoder (MIT), converted with convert-rvq-encoder.py --head --m3

Training also wants mm3-depth-f16.gguf specifically. The quantised depth files that ship with the generation packs are for generation.

MiniMax never released the official audio tokeniser, so the RVQ encoder here is a community reimplementation: PurpleOrc's open-rvq encoder, SimpleTuner's v4 architecture trained from scratch on a 53k-track multilingual corpus, converted to GGUF and mirrored here so the Model Manager has one place to fetch from. Its reported holdout scores and training code are on PurpleOrc's repo, which is the place to read before drawing conclusions about it.

Codes are encoder-specific. An adapter trained on this encoder's codes has to keep using this encoder at inference; swapping encoders means re-exporting every code cache.

Conversion provenance

Converted with HOT-Step's engine/tools/convert-mm3.py from the bf16/fp16 safetensors published by MiniMax (via the Comfy-Org repackage), then split per component with engine/tools/split-mm3.py (byte-exact tensor passthrough — a split file's tensors are bit-identical to the bundle's). Vocoder weight-norm folded at conversion; vocoder and DiT Fourier/RoPE bases pinned F32; all 911 tensors shape-validated. The HOT-Step implementation is parity-validated against the official diffusers reference (per-module correlation ≥ 0.9999 vs fp32; full-pipeline replay 0.9988). The split-model approach follows ServeurpersoCom/minimaxmusic.cpp, whose author kindly sanctioned reuse of his design.

Credits

All credit for the model belongs to MiniMax. MiniMax-Music3 is their work — the architecture, the training, and the release. This repository contains nothing but a format conversion of their weights, and the Structured Caption format that drives the model is their design.

Thanks also to:

License

The model weights are subject to the MiniMax-Music3 Community License (included here as LICENSE, per its notice-preservation requirement). Notable terms: prominent display of "MiniMax-Music3" in commercial products, separate authorization above US$20M annual revenue, acceptable-use policy, and clear disclosure of AI generation for publicly distributed outputs. The conversion adds no additional restrictions.

Contributors

scragnog

63 commits