MiniMax Metadata Loader
Replaying a saved song's exact settings from its JSON sidecar
- title
- caption
- lyrics
- image_prompt
- max_duration
- generation_seed
- text_seed
- text_cfg_scale
- text_top_k
- ksampler_seed
- ksampler_steps
- ksampler_cfg
- sampler_name
- scheduler
- denoise
- pre_preset
- post_preset
- metadata_json
The reverse half of the reproducibility story. MiniMax Song Metadata writes a complete JSON sidecar next to every saved track - prompts, seeds, MiniMax settings, filter and repair and release parameters. MiniMax Metadata Loader reads one of those sidecars back and spits out every compatible field as individual typed outputs, so you can inspect what a track was made with, or reconstruct the exact generation setup that produced it.
It's the "load a recipe" node. Point it at a saved sidecar and you get back the song's title, caption, lyrics and image prompt as STRINGs; max_duration, generation_seed, text_seed, text_cfg_scale, text_top_k for the MiniMax stage; ksampler_seed, ksampler_steps, ksampler_cfg, sampler_name, scheduler, denoise for the sampler; and the pre_preset / post_preset filter choices. Plus metadata_json - the whole thing as one STRING, in case you just want to pass the sidecar along without unwrapping it.
How it works
Input is a single STRING: metadata_file, the path to the sidecar JSON. The node reads compatible fields and emits them all at once. Outputs that aren't present in the file presumably come back empty or defaulted - the practical use is a "duplicate this exact song" workflow: load the sidecar, wire the outputs back into the generation settings and the metadata nodes, change the seed, re-render. That's the pattern this pack's reproducibility story is built for.
Where it fits
In the example workflow it's the lazy-load path: instead of retyping a title and caption to re-master an old track, you load its sidecar and the whole chain lights up with the original values. It also pairs with MiniMax Song Metadata the way a save and a load should - one writes the JSON, the other reads it.
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
The obvious trap is pointing it at a sidecar that doesn't exist or was written by an older toolkit version - if fields are missing, the downstream nodes just get empty values, and ComfyUI doesn't always make that obvious. The README's "No link found in parent graph" message is a different, workflow-serialization issue (fixed in v1.0.1) - don't confuse a missing-model error with a loader problem. And remember this node is a loader: it reads paths you give it from the filesystem, so keep the sidecar on the machine running ComfyUI, same rule as the prompt library.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| metadata_file | STRING | Path to a previously saved song sidecar JSON. The loader reads compatible generation/settings fields from this file so a configuration can be inspected or reused. |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| title | STRING | — |
| caption | STRING | — |
| lyrics | STRING | — |
| image_prompt | STRING | — |
| max_duration | FLOAT | — |
| generation_seed | INT | — |
| text_seed | INT | — |
| text_cfg_scale | FLOAT | — |
| text_top_k | INT | — |
| ksampler_seed | INT | — |
| ksampler_steps | INT | — |
| ksampler_cfg | FLOAT | — |
| sampler_name | STRING | — |
| scheduler | STRING | — |
| denoise | FLOAT | — |
| pre_preset | STRING | — |
| post_preset | STRING | — |
| metadata_json | STRING | — |