Nodes/ComfyUI-MiniMax-Music-Production-Toolkit/Song model · MiniMax Music 3 / YuE2
ComfyUI Node

Song model · MiniMax Music 3 / YuE2

One Dropdown, Two Completely Different Music Engines

By jplenio·Created 16 days ago·Updated about 17 hours ago· 42
Song model · MiniMax Music 3 / YuE2
    • profile_json
    • model_id
    • model_name
    • system_prompt_file
    • prompt_token_budget
    • max_duration
    • duration_ceiling
    • info
    modelMiniMax Music 3

    MiniMaxMusicModelProfile generates nothing. It has one widget, it touches no audio, and if you're judging nodes by what they do it looks like dead weight in the graph. It is actually the node that decides whether everything downstream works or throws a confusing error at you ten minutes into a queue.

    The reason is that the MiniMax Music Production Toolkit drives two song generators - MiniMax Music 3 and YuE2 - plus a third mode, YuE2 Cover, and those are not interchangeable at any level. Different prompt contract, different token budget, different duration window, different sampler defaults, different model files, different native nodes underneath. Swap the engine and you're swapping the whole pipeline, not a checkpoint.

    This node is the single source of truth for which one you're running.

    What it actually publishes

    Pick a value on the model dropdown - MiniMax Music 3, YuE2, or YuE2 Cover - and the node returns that model's profile in eight sockets:

    • profile_json - the full record, and the wire that matters most
    • model_id and model_name - the stable id (minimax_music3, yue2, yue2_cover) and the display name
    • system_prompt_file - which of the bundled LLM system prompts belongs to this engine
    • prompt_token_budget - the size the prompt parser trims to
    • max_duration and duration_ceiling - the recommended length and the hard stop for that model
    • info - a one-line human summary that also lands in the ComfyUI log

    profile_json fans out to the settings node, the cover nodes, the model-check node and the generation node. If you've read our node-plumbing essay, this is the classic value-node pattern: one authoritative value broken out of a widget so five consumers can't drift apart.

    Why the two engines can't share settings

    The differences are baked into the profile, and they're real. MiniMax Music 3 takes a long-form production caption and a sectioned Lyrics field, with a hard encoder limit around 5,000 tokens on caption-plus-lyrics; its shipped window is a 300-second default inside a 360-second ceiling. YuE2 takes a Style description synchronized section-by-section with Lyrics, plans an ABC score natively before synthesis, and its ceiling is much higher - 900 seconds - with a 360-second example default. Its context is shared and generous, so the practical limit is your patience, not the tokenizer.

    Same with sampling. MiniMax ships euler/simple at cfg 1.7; YuE2 ships dpm_2/sgm_uniform at cfg 1.0. The settings node carries both sets and picks one, but it picks based on this wire. Pull this node out and the toolkit falls back to its default profile silently, which is exactly how you end up wondering why your YuE2 step count did nothing.

    Install, same as the rest of the pack

    cd ComfyUI/custom_nodes
    git clone https://github.com/jplenio/ComfyUI-MiniMax-Music-Production-Toolkit.git
    cd ComfyUI-MiniMax-Music-Production-Toolkit
    python -m pip install -r requirements.txt   # the same Python that runs ComfyUI
    

    Restart ComfyUI and hard-refresh the browser. There's no model file for this node - the weights belong to MusicGeneration and the model-check node. On a machine with an existing toolkit install, ComfyUI Manager's search for the pack title works too, though the pack moves fast (3.0.0 landed 2026-09-16) and the frontend files matter - update them, not just the Python.

    Where people get burned

    The first is a saved workflow where someone changed the dropdown but not the settings group: MusicGeneration checks that the settings' song_model matches the profile, and if they disagree you get "Song model and generation settings disagree; connect the same profile to both." That's not a bug, it's this node being ignored.

    The second is YuE2 Cover. Selecting it switches on a path that wants native AudioEncoderLoader and SheetSage2AudioToABC nodes in your ComfyUI build plus a ~1.39 GB SheetSage2 encoder. If your build doesn't have them, the failure is downstream - see the cover nodes rather than blaming the dropdown.

    One nicety worth knowing: the dropdown is data-driven from model_profiles.json, and the node forces validation to pass. An unknown or stale value in an old workflow falls back to the default profile with a log line instead of turning the node red. Don't read that as "any string works" - it means the author chose a soft landing over a validation wall.

    If you're building a workflow by hand, wire this before anything else and treat its info line as your sanity check. Two seconds of reading saves you a five-minute generation you'll throw away.

    CategoryMiniMax Music Production Toolkit/config

    Inputs (1)

    NameTypeDefaultDescription
    modelCOMBOMiniMax Music 3ComfyUI model object to sample. This wrapper does not modify the model; it forwards it to the core KSampler while also returning sampler/scheduler names.

    Outputs (8)

    NameTypeDescription
    profile_jsonSTRING
    model_idSTRING
    model_nameSTRING
    system_prompt_fileSTRING
    prompt_token_budgetINT
    max_durationFLOAT
    duration_ceilingFLOAT
    infoSTRING