Nodes/MiniMax Music Production Toolkit/Audio Super Resolution (FlashSR, integrated)
ComfyUI Node

Audio Super Resolution (FlashSR, integrated)

FlashSR is built in now — getting sparkle back on MiniMax Music 3's raw output

By jplenio·Created 5 days ago·Updated a day ago· 11
Audio Super Resolution (FlashSR, integrated)
  • audio
  • audio
  • settings_json
lowpass_inputfalse
output_sr48000
auto_downloadtrue

Ever render a track from a local music model and feel like the top end is… missing? That's not always your ears. Generative music output tends to be clean but a little dull on top - the high-frequency sparkle that separates a demo from a finished track isn't really in the source. MiniMaxFlashSRAudio is the fix: an integrated audio super-resolution (FlashSR) stage that reconstructs that high-frequency content at 48 kHz and delivers your audio at up to 96 kHz, with 48 kHz as the sensible default.

This node is the "integrated" replacement for a piece of external tooling. If you've been around ComfyUI audio since late 2025, you may know FlashSR from the standalone ComfyUI-Egregora-Audio-Super-Resolution node (lucasgattas' pack) that brought FlashSR to music enhancement workflows. v2.0.0 of this toolkit vendored the inference code in and made it a first-class node, so the full example workflow no longer needs that external dependency at all.

How it works

FlashSR is generative bandwidth extension - it doesn't just resample, it invents plausible high-frequency content. Mechanically: your audio is normalized and resampled to 48 kHz (FlashSR's design target), chopped into fixed 5.12-second chunks with a 0.5-second overlap, run through the model, and stitched back together with Hann-windowed overlap-add so you don't hear seams. The inference code ships with the pack in flashsr_inference/ (vendored from the upstream FlashSR_Inference and TorchJaekwon projects). Only the three weight files - student_ldm.pth, sr_vocoder.pth, vae.pth - are fetched on first use from the jakeoneijk/FlashSR_weights HuggingFace dataset into models/audio/flashsr, with progress logged.

That word "invents" is the whole caveat, and the pack is refreshingly honest about it. Reconstructed high-frequency energy is not guaranteed to equal what was originally there. The workflow doesn't blindly trust a full FlashSR replacement - it routes your output through a hybrid-crossover stage that blends the cleanly-resampled original with the FlashSR air, plus HF cymbal/shimmer repair and low-pass stages to keep the result from sounding synthetic.

Inputs that matter

  • audio (AUDIO) - the signal to super-resolve. Straight from the source branch (after declip/PRE low-pass in the example chain).
  • output_sr - 48000, 44100 or 96000. FlashSR always infers at 48 kHz; other rates are a clean resample afterwards. The example workflow uses 48000 and handles final delivery rate later.
  • lowpass_input - FlashSR's internal low-pass flag. The example keeps it OFF, because a separate PRE low-pass node already controls input bandwidth. Leave it off unless you know why you want FlashSR filtering too.
  • auto_download - ON means missing weights download automatically on first use. Disable it to fail fast instead, which is handy when you want to know now that files are missing.

Outputs

  • audio - the super-resolved signal at your chosen rate.
  • settings_json - a report (inference rate, chunk/overlap sizes, low-pass flag, output rate, device) that you wire into the pack's Save Production JSON node so every run is reproducible.

Installing

Clone the pack and install its requirements, then restart and hard-refresh:

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 node needs a GPU with enough room for the three weights plus your source audio, but FlashSR is deliberately small and fast compared to the generation stage before it.

Where people get burned

The classic complaint, echoed in the pack's own troubleshooting: cymbals and hi-hats sound watery after FlashSR. When that happens, more reconstructed bandwidth isn't the answer - A/B lighter PRE filtering, drop flashsr_hf_mix in the hybrid crossover, or switch HF repair to Gentle. Loaded FlashSR models are cached per process; the LLM Unload node can release them with its unload_flashsr toggle if you're short on VRAM. And if you disable auto_download and then get a missing-weights error, the fix is putting those three .pth files into models/audio/flashsr/ yourself - the code, remember, is already on disk.

CategoryMiniMax Music Production Toolkit/audio

Inputs (4)

NameTypeDefaultDescription
audioAUDIOAudio signal to super-resolve. FlashSR reconstructs high-frequency content at 48 kHz; the hybrid crossover later combines it with the original signal.
lowpass_inputBOOLEANfalseWhen enabled, FlashSR applies an internal low-pass to its input first. The example workflow keeps this OFF because the PRE low-pass node already controls the input bandwidth.
output_srCOMBO48000Sample rate of the delivered audio. FlashSR itself always works at 48 kHz; other rates are produced by a clean resample afterwards. The example workflow uses 48000 and handles delivery rate later.
auto_downloadBOOLEANtrueWhen enabled, the missing FlashSR weights (student_ldm.pth, sr_vocoder.pth, vae.pth) are downloaded automatically on first use (see models_config.json) and logged with progress. Disable to fail fast instead. The inference code itself is bundled with the toolkit in flashsr_inference/ and is never downloaded.

Outputs (2)

NameTypeDescription
audioAUDIO
settings_jsonSTRING