Nodes/ComfyUI-MiniMax-Music-Production-Toolkit/Music settings · adapts to the selected song model
ComfyUI Node

Music settings · adapts to the selected song model

Twenty Knobs on Screen, One Wire Decides Which Ones Count

By jplenio·Created 16 days ago·Updated about 17 hours ago· 42
Music settings · adapts to the selected song model
    • max_duration
    • text_seed
    • text_cfg_scale
    • text_top_k
    • yue2_mode
    • yue2_temperature
    • yue2_top_p
    • yue2_top_k
    • yue2_repetition_penalty
    • ksampler_seed
    • ksampler_steps
    • ksampler_cfg
    • sampler_name
    • scheduler
    • denoise
    • settings_json
    generation_seed
    max_duration300
    ksampler_seed_offset0
    denoise1.00
    minimax_steps40
    minimax_cfg1.70
    minimax_sampler_nameeuler
    minimax_schedulersimple
    minimax_text_cfg_scale1.70
    minimax_text_top_k50
    yue2_steps32
    yue2_cfg1.00
    yue2_sampler_namedpm_2
    yue2_schedulersgm_uniform
    yue2_modefull
    yue2_temperature1.00
    yue2_top_p0.95
    yue2_top_k100
    yue2_repetition_penalty1.20
    profile_json
    yue2_max_duration360
    cover_source_json
    prompt_provenance_json

    MiniMaxMusicModelSettings is the ugliest node in the toolkit and the one you'll spend the most time on. It shows both models' sampler settings at once - MiniMax's group and YuE2's group - keeps them all editable, and then quietly uses only the group that belongs to the model selected upstream. Nothing is hidden, nothing is silently re-derived. It's honest, and it's also the #1 place to confuse yourself.

    The two settings that matter

    generation_seed is a required input (wire it from a seed node) and it's your reproducibility anchor. The node derives text_seed from it and ksampler_seed from text_seed + ksampler_seed_offset, so a single number reproduces the whole run - prompt generation included, if you reuse the seed there too.

    max_duration (1–900 s, default 300) is the MiniMax ceiling. It is an upper bound, not a target: the model can finish early, and nothing is padded or stretched afterwards. If you're on YuE2, the ceiling that actually applies is the separate yue2_max_duration input (default 360), and max_duration is just retained for switching back. That trips people up constantly - raise the length for a YuE2 song and you want yue2_max_duration, not the obvious one.

    What the group wires actually do

    MiniMax group, used when the profile says MiniMax Music 3:

    • minimax_steps (40), minimax_cfg (1.7), minimax_sampler_name (euler), minimax_scheduler (simple) - the sampler settings
    • minimax_text_cfg_scale (1.7) and minimax_text_top_k (50) - the autoregressive text-encoding stage, which is a different knob from sampling cfg. Turning up minimax_cfg does not make the caption stronger; that's what the text pair is for.

    YuE2 group:

    • yue2_steps (32), yue2_cfg (1.0), yue2_sampler_name (dpm_2), yue2_scheduler (sgm_uniform)
    • yue2_mode (full or melody) - score-planning breadth for new songs
    • yue2_temperature (1.0), yue2_top_p (0.95), yue2_top_k (100), yue2_repetition_penalty (1.2) - the planner's sampling behavior

    Then the outputs split three ways. settings_json is the record - it goes to MusicGeneration and carries both groups plus which one was active, so a production JSON can tell you what you'd have gotten with the other engine. The scalar sockets (ksampler_seed, ksampler_steps, ksampler_cfg, sampler_name, scheduler, denoise) feed the KSampler in the expanded subgraph. max_duration and the text_* pair feed the engine's own encode node.

    Mechanism notes worth knowing

    If you wire profile_json, the duration is clamped to that model's window and a note lands in the log. If you don't wire it, the node falls back to the default profile - and your carefully-set YuE2 steps get ignored because the active group is MiniMax. This is the single most common mistake with this node.

    Cover mode overrides yue2_mode from the source audio node's mode, because SheetSage2 and YuE2 have to agree on full vs melody or generation refuses to start. The prompt_provenance_json input is what carries a requested Length (like "3-4 minutes") into the settings; when present, it turns into an approximate timed plan and the full configured ceiling stays available for the natural ending. The node also validates sampler and scheduler names against what your ComfyUI actually offers and falls back with a log note instead of failing, which is what you want after a ComfyUI update reshuffles the sampler list.

    Install and the usual cuts

    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   # same Python as ComfyUI
    

    No models belong to this node - it's pure configuration. Restart and hard-refresh after updating, and reopen the bundled workflow: saved personal workflows are not migrated when the pack changes shape.

    Where it actually bites: settings that disagree with the profile (an explicit error, by design), editing the inactive group and expecting an effect, and the two-ceiling confusion above. Also worth internalizing from the wider audio-generation picture: every second of requested length costs real generation time on a music model, and a longer ceiling is not a quality knob. Set the length you actually want and leave the ceiling alone.

    CategoryMiniMax Music Production Toolkit/config

    Inputs (23)

    NameTypeDefaultDescription
    generation_seedINTPrimary song seed. In this workflow it is the reproducibility anchor used to derive MiniMax text/sampler seeds and can also be reused for artwork generation.
    max_durationFLOAT3001–900Maximum MiniMax Music generation duration in seconds. This is an upper bound; the model can still end earlier if the musical/Lyrics structure encourages a shorter track.
    ksampler_seed_offsetINT0-1000000–1000000Configuration input 'ksampler seed offset'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    denoiseFLOAT1.000–1Sampling denoise strength. 1.0 performs the full denoising process; lower values retain more of an existing latent/input state where applicable.
    minimax_stepsINT401–200Configuration input 'minimax steps'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    minimax_cfgFLOAT1.700–20Configuration input 'minimax cfg'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    minimax_sampler_nameCOMBOeulerConfiguration input 'minimax sampler name'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    minimax_schedulerCOMBOsimpleConfiguration input 'minimax scheduler'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    minimax_text_cfg_scaleFLOAT1.700–10Configuration input 'minimax text cfg scale'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    minimax_text_top_kINT501–1000Configuration input 'minimax text top k'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_stepsINT321–200Configuration input 'yue2 steps'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_cfgFLOAT1.000–20Configuration input 'yue2 cfg'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_sampler_nameCOMBOdpm_2Configuration input 'yue2 sampler name'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_schedulerCOMBOsgm_uniformConfiguration input 'yue2 scheduler'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_modeCOMBOfullFull or melody score planning for new YuE2 songs. YuE2 Cover instead uses the single mode selected on Cover song / Source audio for both transcription and generation.
    yue2_temperatureFLOAT1.000–5Configuration input 'yue2 temperature'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_top_pFLOAT0.950.01–1Configuration input 'yue2 top p'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_top_kINT1001–32768Configuration input 'yue2 top k'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_repetition_penaltyFLOAT1.200.01–10Configuration input 'yue2 repetition penalty'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    profile_jsonoptSTRINGConfiguration input 'profile json'. This value is passed directly to the node's processing logic; keep it at the workflow default unless you intentionally want to change that part of the production chain.
    yue2_max_durationoptFLOAT3601–900YuE2 maximum generation time in seconds. Length is an approximate musical target and never lowers this ceiling: phrases and decay may finish beyond the target. Leave headroom for a natural ending; the model and context can still end generation earlier.
    cover_source_jsonoptSTRINGSource audio identity and shared transcription mode from Cover song / Source audio. Used only for YuE2 Cover; the filename owns the final title.
    prompt_provenance_jsonoptSTRINGStructured provenance JSON from the prompt/parser stage. Preserve this input if you want to recreate how the final MiniMax prompt was produced.

    Outputs (16)

    NameTypeDescription
    max_durationFLOAT
    text_seedINT
    text_cfg_scaleFLOAT
    text_top_kINT
    yue2_modeSTRING
    yue2_temperatureFLOAT
    yue2_top_pFLOAT
    yue2_top_kINT
    yue2_repetition_penaltyFLOAT
    ksampler_seedINT
    ksampler_stepsINT
    ksampler_cfgFLOAT
    sampler_nameSTRING
    schedulerSTRING
    denoiseFLOAT
    settings_jsonSTRING