Nodes/Plenio Music Production System/HQ 2 · Regenerate Highs
ComfyUI Node

HQ 2 · Regenerate Highs

Delete the Top Octave and Have a Model Grow a New One

By jplenio·Created 2 months ago·Updated 3 days ago· 113
HQ 2 · Regenerate Highs
  • audio
  • model
  • brief
  • audio
  • report
◄preset▾►
◄hq_masteringtrue►
◄seed0►
◄model_steps4►

Every audio super-resolution tool promises "more air". This one does something stranger and more interesting: it takes your song, throws away everything above the crossover, and asks a diffusion-style model to invent the top end from what's left. Then it blends that invention back in above the crossover, following the original's level. It's called erase and regenerate in the source, and that's the honest description.

It's the second Audio HQ stage, and the only one that needs a model file.

How it works

Four steps. First the song is converted into the super-resolution model's input condition - the highest edge at or below your crossover. With UniverSR at the standard 8.2 kHz crossover that's the 16 kHz condition, so everything above 8 kHz is simply gone. Second, the model generates a 48 kHz version from that condition, in overlapping chunks, seeded. Third, above from_hz a complementary zero-phase crossover lets the new highs in, following the original's 40 ms envelope times level_match. Fourth, the rest of the high band stays the original's. Below the crossover, the song is bit-for-bit what it was.

Same sample rate out as in - a 44.1 kHz song stays 44.1 kHz - and same length. Nothing is normalised; Loudness & Dynamics owns the level.

The inputs that matter

audio is the song, and model comes from Load Audio Model set to super-resolution - UniverSR, a 229 MB pytorch_model.bin from woongzip1/universr-audio, dropped into models/audio_sr (CC BY 4.0 weights, MIT inference code vendored in the pack). There is no DSP fallback: with the stage on and no model, you get an error with a download hint rather than a quietly mangled top end.

hq_mastering is the boolean that makes or breaks it. Off, the stage is skipped entirely and the model isn't even loaded - the input is lazy, so a missing file is no error then. In the templates the HQ Mastering card at the top of the graph sets it; a node you drop yourself defaults to on.

preset is auto, standard, gentle, strong, wide or custom. Every profile regenerates from 8.2 kHz; the profiles only change the share of new highs and how tightly they track the original's level - 85% at 0.90 for standard, 80% for gentle, 95% for strong, 85% at 0.95 for wide. Only standard has been listening-tested, and the node's summary marks the others provisional.

Two smaller ones you'll touch eventually. seed is fixed after each run rather than randomised - deliberately, so the same seed gives the same highs and ComfyUI reuses the result. model_steps is advanced and defaults to 4; 3 and 2 steps run faster and give other, quieter highs.

Outputs are audio (new highs, same rate and length) and report - profile, engine and its input edge, levels before and after.

Install

It comes with the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/jplenio/Plenio-Music-Production-System

Or Manager → Plenio Music Production System. Restart, open template 0 · System Check and run it; it lists exactly which model files that template still wants. Plenio itself installs zero Python packages - pyproject.toml has an empty dependency list, and that's on purpose. Then get the UniverSR file into models/audio_sr, either through ComfyUI's missing-model dialog or by hand.

In the templates the node and its loader sit inside the Plenio · Master block; in 4 · Enhance & Master HQ 2 is a plain node and HQ mastering is on by default there.

Time, VRAM, and the honest numbers

On an RTX 5060 Ti, four flow steps cost about 1.5 seconds per second of music - a four-minute song is roughly six minutes on top. Three steps is about 1.1 s/s, two about 0.75. It needs around 3 GB of VRAM and runs in bfloat16 where available, a quarter faster than float32 with the result identical within -25 dB.

What you get: highs that are genuinely new (similarity to the original's around 0.3), 1-3 dB quieter between 6 and 10 kHz, 3-7 dB between 10 and 16, with more air above 16 kHz.

Where people get burned

UniverSR generates both channels alike, so the top end gets narrower - side energy above 10.5 kHz drops 4 to 13 dB. That's fine after HQ 1 · Stereo Cleanup has already tightened it, and mildly disappointing in isolation. And don't run it on every take while you're iterating: you'll spend the evening watching a progress bar instead of listening. Leave HQ mastering off for drafts, flip it on for the one take you're keeping.

CategoryPlenio/Mastering

Inputs (7)

NameTypeDefaultDescription
audioAUDIOThe song (every item of a batch).
modelPLENIO_AUDIO_MODELLoad Audio Model (super-resolution).
presetCOMBOauto: the profile that fits the song's genre (from the connected brief; standard without one). standard, gentle, strong and wide are the same four profiles in HQ 1, 2 and 3; custom shows the fields.
hq_masteringoptBOOLEANtrueOff: skipped, the model is not even loaded. In the templates the HQ Mastering switch at the start sets it (off by default, on in Enhance & Master): on, fewer AI shimmer and artifacts, about twice the time.
briefoptPLENIO_BRIEFOptional: Song Brief or Cover Brief - its genre chooses the profile for 'auto'.
seedoptINT00–4294967295Seed of the model: the same seed gives the same highs.
model_stepsoptINT42–8UniverSR's flow steps: 4 (default) about 1.5 s per second of music on an RTX 5060 Ti, 3 about 1.1 s, 2 about 0.75 s - fewer steps, other and quieter highs.

Outputs (2)

NameTypeDescription
audioAUDIOThe song with new highs (same rate and length).
reportPLENIO_REPORTProfile, engine and its input edge, levels before/after.