HF Cymbal / Shimmer Repair
Fixing the watery cymbals FlashSR gives you — without killing the attack
- audio
- audio
- hf_repair_json
- info
If you've run MiniMax Music 3 through FlashSR and thought "why do my cymbals sound like they're underwater," this is the node you were looking for. Bandwidth extension reconstructs high-frequency content, and sometimes what it reconstructs is a smeared, diffuse shimmer that sits on top of every hi-hat and ride. HF Cymbal / Shimmer Repair dynamically shapes only the high-frequency band - it tames sustained, non-transient HF energy while protecting the attack of each hit. Your low/mid band is never touched.
It works on the same principle as a de-esser, but for the whole top end instead of just sibilance: separate a fast envelope and a slow envelope of the HF energy, and attenuate the slow, sustained component that represents tails, reverb and artificial shimmer. When the fast envelope clearly exceeds the slow one, that's a transient - a real cymbal attack - and it gets protected instead of ducked.
Where it sits
Stage 4, right after the FlashSR Hybrid Crossover and before the POST low-pass. Feed it the hybrid output, not the raw MiniMax audio. In the pack's chain it's the last line of defense against FlashSR artifacts before you move on to mastering.
The modes
The mode dropdown gives you a ladder, and the defaults are the right call:
- Gentle (default) - conservative, batch-safe cleanup.
- Cymbal clarity - suppresses smeared sustain more strongly, still protecting attacks.
- Reverb / shimmer control - the heavy one, for diffuse artificial HF tails.
- Custom - uses your exact parameter values.
- Bypass - pass-through, useful for A/B.
Start at Gentle. The tooltip and the README both push the same message: escalate only on material that actually needs it.
Inputs that matter
The important knobs once you leave the presets behind:
start_frequency_hz(default 8000) - the band above which it works. Lower = more presence/upper harmonics affected; too low dulls instruments and vocals.sustain_reduction_db- how much attenuation the sustained HF energy can take.fast_envelope_ms/slow_envelope_ms- the attack vs. sustain time constants that separate transients from tails.transient_sensitivity- how different the fast and slow envelopes must be before HF energy counts as a transient and gets protected.side_hf_reduction_db- the genuinely clever one. It statically reduces the stereo Side channel's HF (M/S processing), which narrows artificial reverb/shimmer when it's excessively wide without touching the mono image.mix- parallel wet/dry blend for when a preset is slightly too strong.
Outputs are audio, hf_repair_json (preset, effective parameters, measured processing stats), and info. The JSON plugs into MiniMax Song Metadata.
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
This node reduces artifacts; it doesn't eliminate them. The README is explicit that hybrid mixing + HF repair are meant to reduce, not remove, FlashSR's inventions. If cymbals still sound watery after Gentle, the troubleshooting checklist says to work upstream first - lighter PRE filter, Original SRC only A/B, lower flashsr_hf_mix - before reaching for stronger repair here. And watch start_frequency_hz: pushed too low, you're now shaping vocal presence and instrument harmonics, which is a different (and riskier) surgery than the one the node is named for.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Audio entering the high-frequency repair stage, normally the output of FlashSR Hybrid Crossover. Only the high-frequency band is dynamically shaped; low/mid frequencies keep constant gain. | |
| mode | COMBO | Gentle | Processing preset. Gentle is conservative batch-safe cleanup; Cymbal clarity suppresses smeared sustain more strongly while preserving attacks; Reverb / shimmer control is stronger for diffuse artificial HF tails; Custom uses the visible parameters exactly; Bypass returns the signal unchanged. The visible controls automatically update when a preset is selected. |
| start_frequency_hz | FLOAT | 80003000–16000 | Frequency above which the repair detector/process works. Lower values affect more presence/upper harmonics; higher values restrict treatment to air/cymbal frequencies. Too low can dull instruments/vocals, while too high may miss problematic hi-hat smear. Used exactly in Custom; presets overwrite it with their displayed value. |
| sustain_reduction_db | FLOAT | 1.30–8 | Maximum dynamic attenuation applied to sustained/non-transient high-frequency energy. Larger values reduce watery cymbal tails and artificial shimmer more strongly but can make cymbals unnaturally short or dark. Used exactly in Custom; presets set their own displayed value. |
| fast_envelope_ms | FLOAT | 81–50 | Time constant of the fast HF envelope used to recognize attacks/transients. Smaller values react more quickly to hi-hat/cymbal attacks; values that are too small can follow fine waveform fluctuations rather than musical transients. |
| slow_envelope_ms | FLOAT | 18040–1000 | Time constant of the slow HF envelope representing sustained energy. Larger values classify longer tails/reverb as sustain; too large can make the detector slow to adapt when the arrangement changes. |
| transient_sensitivity | FLOAT | 0.350.05–1.5 | Controls how different the fast and slow envelopes must be before HF energy is treated as a transient and protected from reduction. Lower values protect transients more readily; higher values classify more energy as sustain and therefore apply more reduction. |
| side_hf_reduction_db | FLOAT | 0.80–8 | Static reduction of high-frequency stereo Side information (M/S processing). Useful when artificial reverb/shimmer is excessively wide. Higher values narrow only the HF region; 0 leaves HF stereo width untouched. |
| static_hf_trim_db | FLOAT | -0.4-8–2 | Constant gain applied to the processed high-frequency band in addition to dynamic sustain reduction. Negative values gently darken the top end; positive values add brightness and can re-expose artifacts. |
| min_hf_level_dbfs | FLOAT | -58-90–-20 | Detector floor. HF energy below this level is considered too quiet to process dynamically, preventing the node from riding very low-level noise/reverb tails. A more negative value makes the detector active deeper into quiet material. |
| mix | FLOAT | 1.000–1 | Wet/dry blend for the complete HF repair result. 1.0 is fully processed; 0.0 is original audio; intermediate values parallel-blend the repair and are useful when a preset is slightly too strong. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| hf_repair_json | STRING | — |
| info | STRING | — |