Music settings · adapts to the selected song model
Twenty Knobs on Screen, One Wire Decides Which Ones Count
- 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
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 settingsminimax_text_cfg_scale(1.7) andminimax_text_top_k(50) - the autoregressive text-encoding stage, which is a different knob from sampling cfg. Turning upminimax_cfgdoes 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(fullormelody) - score-planning breadth for new songsyue2_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.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| generation_seed | INT | Primary 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_duration | FLOAT | 3001–900 | Maximum 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_offset | INT | 0-1000000–1000000 | Configuration 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. |
| denoise | FLOAT | 1.000–1 | Sampling denoise strength. 1.0 performs the full denoising process; lower values retain more of an existing latent/input state where applicable. |
| minimax_steps | INT | 401–200 | Configuration 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_cfg | FLOAT | 1.700–20 | Configuration 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_name | COMBO | euler | Configuration 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_scheduler | COMBO | simple | Configuration 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_scale | FLOAT | 1.700–10 | Configuration 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_k | INT | 501–1000 | Configuration 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_steps | INT | 321–200 | Configuration 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_cfg | FLOAT | 1.000–20 | Configuration 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_name | COMBO | dpm_2 | Configuration 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_scheduler | COMBO | sgm_uniform | Configuration 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_mode | COMBO | full | Full 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_temperature | FLOAT | 1.000–5 | Configuration 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_p | FLOAT | 0.950.01–1 | Configuration 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_k | INT | 1001–32768 | Configuration 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_penalty | FLOAT | 1.200.01–10 | Configuration 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_jsonopt | STRING | Configuration 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_durationopt | FLOAT | 3601–900 | YuE2 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_jsonopt | STRING | Source audio identity and shared transcription mode from Cover song / Source audio. Used only for YuE2 Cover; the filename owns the final title. | |
| prompt_provenance_jsonopt | STRING | Structured provenance JSON from the prompt/parser stage. Preserve this input if you want to recreate how the final MiniMax prompt was produced. |
Outputs (16)
| Name | Type | Description |
|---|---|---|
| max_duration | FLOAT | — |
| text_seed | INT | — |
| text_cfg_scale | FLOAT | — |
| text_top_k | INT | — |
| yue2_mode | STRING | — |
| yue2_temperature | FLOAT | — |
| yue2_top_p | FLOAT | — |
| yue2_top_k | INT | — |
| yue2_repetition_penalty | FLOAT | — |
| ksampler_seed | INT | — |
| ksampler_steps | INT | — |
| ksampler_cfg | FLOAT | — |
| sampler_name | STRING | — |
| scheduler | STRING | — |
| denoise | FLOAT | — |
| settings_json | STRING | — |