MiniMax Song Metadata
The sidecar writer that makes your whole pipeline reproducible
- metadata_json
- summary
This is the node the whole pack orbits. MiniMax Song Metadata collects every setting that went into a song - prompts, seeds, MiniMax generation parameters, FlashSR filters, repair and release-prep reports, even the LLM system prompt - and assembles them into one complete JSON sidecar that gets saved next to your audio. It's the "what exactly did I do here" record, written while you can still answer the question instead of six months later when you can't.
The sidecar philosophy is worth understanding because it's unusual and it's the pack's superpower. Audio file tags (title, artist) are fragile and lossy - players rewrite them, and there's no standard place for a text_cfg_scale. So this pack splits the job: MiniMax Standard Audio Tags handles the boring interoperable tags players actually read, and this node handles the everything-else JSON that makes a render reproducible. Connect the *_json outputs from the repair/release/prep stages and you get a complete audit trail.
The inputs that matter
Most inputs are straightforward pass-throughs you'll already have wired: title, caption, lyrics, image_prompt, source_name, source_path, prompt_origin, prompt_provenance_json, then the whole MiniMax settings block (generation_seed, max_duration, text_seed, text_cfg_scale, text_top_k, ksampler_seed, ksampler_steps, ksampler_cfg, sampler_name, scheduler, denoise), then the filter block (pre_preset, pre_settings_json, post_preset, post_settings_json, flashsr_lowpass_input), and run_index/variant_count/workflow_name.
The interesting optional inputs are the four report JSONs - declip_json, hybrid_crossover_json, hf_repair_json, release_prep_json - plus llm_system_prompt. Connecting them is what turns a good sidecar into a complete one. The llm_system_prompt one is notable: storing the full system prompt makes later prompt regeneration and auditing possible, at the cost of a big string in the JSON.
Outputs
metadata_json (the full sidecar as a STRING, for the saver) and summary (a human-readable one-liner). Wire metadata_json into Save Audio Smart Prefix, which writes it next to the file.
Installing it
Pack install via ComfyUI Manager (search "MiniMax Music Production Toolkit") or:
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
Dependencies: scipy, soundfile, imageio-ffmpeg, mutagen, Pillow. Restart ComfyUI and hard-refresh once.
Gotchas
Don't confuse it with the loader's job - this node writes the recipe, MiniMax Metadata Loader reads it back. And remember the sidecar is only as complete as its inputs: skip wiring the *_json reports and you've shipped a sidecar that claims the release prep happened without recording what it did. The pack's README calls the whole thing "reproducible generation metadata" - but the metadata is only reproducible if you connect the receipts.
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| title | STRING | Song title used for metadata, filenames or the reproducibility JSON, depending on the node. This does not alter the audio signal itself. | |
| caption | STRING | Final structured MiniMax Music Caption generated or supplied for this song. Stored in the reproducibility JSON and fed to MiniMax Music. | |
| lyrics | STRING | Final MiniMax Music Lyrics/structure field. For pure instrumentals this should contain only supported structural tags; for vocal tracks it contains tags plus singable lyrics. | |
| image_prompt | STRING | Positive Flux artwork prompt associated with the song. It is stored for reproducibility and should describe visual content while avoiding requested text/logos if the workflow requires text-free covers. | |
| source_name | STRING | Stable source identifier used to derive output paths and provenance. It normally comes from the prompt filename or manual/LLM source name. | |
| source_path | STRING | Original prompt-file path when the song came from a file. Empty/manual values are valid for prompts entered directly in the workflow. | |
| prompt_origin | STRING | Human-readable provenance label describing where the prompt came from, such as manual input, folder file or external LLM. | |
| prompt_provenance_json | STRING | Structured provenance JSON from the prompt/parser stage. Preserve this input if you want to recreate how the final MiniMax prompt was produced. | |
| run_index | INT | 1-based variant index for the current song run. It is used for reproducible metadata and optional filename suffixes. | |
| variant_count | INT | Total number of variants produced from the current source. Used for metadata and to decide whether a variant index should be appended. | |
| 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 | 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. | |
| text_seed | INT | Seed used by the MiniMax text/autoregressive generation stage. Normally derived from generation_seed for reproducibility. | |
| text_cfg_scale | FLOAT | Classifier-free guidance strength for the MiniMax text/autoregressive stage. Higher values generally enforce the prompt more strongly but can reduce naturalness or introduce artifacts when pushed too far. | |
| text_top_k | INT | Top-k sampling limit for the MiniMax text/autoregressive stage. Lower values make sampling more conservative/repetitive; higher values allow more alternatives and variability. | |
| ksampler_seed | INT | Seed used by the MiniMax diffusion/audio sampling stage. Normally derived from generation_seed plus the configured offset. | |
| ksampler_steps | INT | Number of diffusion/sampling steps used by the MiniMax audio sampler. More steps cost more time and are not guaranteed to improve quality beyond the model's useful range. | |
| ksampler_cfg | FLOAT | Guidance strength for the MiniMax diffusion/audio sampler. Higher values follow conditioning more aggressively but excessive values can sound strained or artificial. | |
| sampler_name | STRING | Sampling algorithm used by ComfyUI. Changing it alters the numerical denoising trajectory and can change detail, texture and reproducibility even with the same seed. | |
| scheduler | STRING | Noise/sigma schedule paired with the sampler. It controls how sampling effort is distributed across the denoising trajectory and can affect character and convergence. | |
| denoise | FLOAT | Sampling denoise strength. 1.0 performs the full denoising process; lower values retain more of an existing latent/input state where applicable. | |
| pre_preset | STRING | Preset for the low-pass stage before FlashSR. Lower cutoffs remove more original high-frequency content and force FlashSR to reconstruct more; use stronger presets only when the source top end is already problematic. | |
| pre_settings_json | STRING | JSON produced by the pre-FlashSR filter settings node. Connect it to metadata so the exact effective filter settings are preserved for reproducibility. | |
| post_preset | STRING | Preset for the low-pass stage after FlashSR. It gently removes extreme reconstructed high-frequency energy; lower cutoffs sound darker but can better hide artificial 'air' or shimmer. | |
| post_settings_json | STRING | JSON produced by the post-FlashSR filter settings node. Connect it to metadata so the exact effective filter settings are preserved for reproducibility. | |
| flashsr_lowpass_input | BOOLEAN | false | Passes the lowpass_input switch to the FlashSR node. Keep OFF when you already perform the explicit PRE low-pass in this workflow; enabling both can apply unintended extra filtering. |
| workflow_name | STRING | MiniMax Music 3 – Reproducible Batch + External ComfyUI-LLM + FlashSR + Flux2 | Descriptive workflow/version string written into the sidecar JSON. It has no audio effect but helps identify exactly which production workflow created a file. |
| llm_system_promptopt | STRING | Complete external-LLM system prompt stored in the sidecar JSON. Keeping it makes later prompt regeneration/auditing possible; it does not itself execute an LLM in this metadata node. | |
| release_prep_jsonopt | STRING | JSON report from Audio Release Prep containing effective sample-rate, loudness, true-peak and static-gain measurements. Connect it to preserve final mastering/release settings. | |
| hybrid_crossover_jsonopt | STRING | JSON report from the FlashSR Hybrid Crossover. It records sample rates, crossover parameters, HF mix and processing mode for reproducibility. | |
| hf_repair_jsonopt | STRING | JSON report from HF Cymbal / Shimmer Repair. It stores the effective preset/custom parameters and measured processing statistics. | |
| declip_jsonopt | STRING | JSON report from Audio Declip / Overload Repair. It records clipping detection, repaired/skipped regions, effective reconstruction parameters, safety gain and the algorithm limitations. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| metadata_json | STRING | — |
| summary | STRING | — |