Nodes/ComfyUI/MiniMax Music3 Text Encode
ComfyUI Node Runs on cloud

MiniMax Music3 Text Encode

The text encoder that writes your song before the diffusion model hears about it

By Comfy-Org·Created 4 years ago·Updated about 15 hours ago· 131,671
MiniMax Music3 Text Encode
  • clip
  • CONDITIONING
  • seconds
caption
lyrics
seed0
max_duration120.00
cfg_scale1.5
top_k50

This is the node that turns your prompt into a song in MiniMax Music 3, and it's not like the CLIP encoders you already know. A normal text encoder is passive: it shoves your prompt through a transformer once and hands the hidden states to the sampler. This one runs an autoregressive language model - an 8B global LLM plus a 0.6B local one - that generates the acoustic conditioning sequence for your whole track before the diffusion model ever starts. That's why it takes a seed, a duration, and sampling settings. It's not encoding your text; it's composing to it.

So the practical thing to know up front: this node is the slow, heavy part of the pipeline. On a mid-range GPU it can take longer than the diffusion pass itself, and it's why Comfy-Org repackages the text encoder as an INT8 pruned file. Budget for it, and don't panic when the run "stalls" on this step - that's the song being planned.

How it works

Your caption and lyrics get wrapped in special tokens - <|caption_start|><|lyrics_start|><|audio_start|> - and fed to the Music3 autoregressive model. For sampling it builds an unconditioned copy of the prompt (the tokens between the audio tags get replaced with a dedicated <|audio_cfg|> token), which is where cfg_scale comes in: it's classifier-free guidance for the autoregressive pass, not for the diffusion sampler. top_k and seed are AR sampling controls too. The hidden states it emits become the CONDITIONING output, and the node force-sets conditioning_scale to all ones for you.

Inputs that matter

  • caption - the music description. MiniMax's format is three sections: Global Metadata (genre, BPM, key, mood, production), Vocal Details, and Arrangement. Be specific; the model follows the musical development you describe.
  • lyrics - the words to sing, with structural tags like [Intro], [Verse], [Chorus], [Bridge], [Instrumental], [Outro]. Tags are the executable structure; the lyric text just conveys mood. The node strips markdown formatting from both fields for you.
  • max_duration - target length in seconds (default 120, hard cap 360). The model may legitimately end the song early.
  • seed - this one actually matters, because it controls the AR generation. Same seed, same song; change it for a different take.

cfg_scale (default 1.5) and top_k (default 50) are tucked behind the "advanced" toggle. The defaults are fine - most people never touch them.

Outputs

  • CONDITIONING - wires into the MiniMax Music3 diffusion model sampler.
  • seconds - the actual generated length (the model can finish before max_duration). Feed this into EmptyMiniMaxMusic3LatentAudio so your empty latent matches the conditioning, then decode with the DAV VAE and save as MP3.

Getting it

It ships with ComfyUI core, but it only landed in August 2026 - you need a recent nightly or the latest stable, not a year-old install. Model files come from the Comfy-Org/MiniMax-Music-3 Hugging Face repo: the text encoder goes in models/text_encoders/, the DiT in models/diffusion_models/, and the DAV (audio VAE) in models/vae/. The search for "MiniMax Music 3" in the Template Library gives you the whole working graph.

Where people get burned

  • Prompt too long. The AR model caps prompts at 5000 tokens; a maximalist caption plus full lyrics will hit it. Keep the caption structured and the lyrics tight.
  • VRAM. This is an 8B+0.6B LLM doing generation. Use the INT8 text encoder, the INT8 DiT, and enable tiled VAE decode for long songs. Even then, 4+ minute tracks on 8GB cards will be rough.
  • Expecting audio in. The Music3 DAV cannot encode - it raises MiniMax Music3 DAV cannot encode audio if you try to feed it audio. This is text-to-music, not a remixer.
  • The first run looks hung. Loading that text encoder plus the AR prefill takes a while on one pass; it's not frozen.

The name undersells it. Most "Text Encode" nodes are plumbing. This one is a composer wearing a text encoder's coat.

Categorymodel/conditioning/minimax music

Inputs (7)

NameTypeDefaultDescription
clipCLIP
captionSTRING
lyricsSTRING
seedINT00–18446744073709550000
max_durationFLOAT120.000.04–360Maximum duration in seconds; the model can end the song earlier.
cfg_scaleFLOAT1.50–100
top_kINT501–16384

Outputs (2)

NameTypeDescription
CONDITIONINGCONDITIONING
secondsFLOAT