Nodes/MiniMax Music3 Semantic Studio/Capture / Freeze Audio
ComfyUI Node

Capture / Freeze Audio

Keep the take you liked before the graph re-rolls it

By ukr8b3g-cmyk·Created about a month ago·Updated 23 days ago· 4
Capture / Freeze Audio
  • audio
  • AUDIO
modeCapture

Here's the loop everyone hits with music generation in ComfyUI: the song comes out, you like it, you want to nudge one EQ band - and the whole AR generation plus diffusion stage runs again, because the AUDIO you're editing is downstream of a sampler. Half the time you get a different song back. Capture / Freeze Audio is the escape hatch: one connection, two modes, and the expensive part of your graph stops re-running while you edit.

What it actually does

It's a cache, not a loader. In Capture mode the node snapshots the AUDIO wired into it into process-local CPU RAM, keyed to the node's own hidden unique_id. In Frozen mode it hands that snapshot back and quietly refuses to ask for its input at all - the audio input is declared lazy, and check_lazy_status() only requests it during Capture. No request, no upstream evaluation. That's the entire trick, and it's a good one: ComfyUI schedules backwards from output nodes, so as long as something downstream is an output node (the pack's Audio Editor is), a Frozen queue has a reason to execute the freeze node while the Music3/KSampler branch is never touched.

The snapshot is detach().to("cpu").contiguous().clone() - an owned CPU tensor, no GPU memory held, no autograd graph. Retrieval clones again, so a downstream node mutating the waveform in place can't corrupt your stored take. Practically: a few minutes of stereo float32 is a couple of hundred megabytes, not a problem.

The inputs and output that matter

Only two inputs, and one of them is the whole point:

  • audio (AUDIO) - the generated take. Marked lazy, and in Frozen mode it is genuinely never requested. Wire it from your VAE Decode Audio.
  • mode - a two-option combo: Capture or Frozen. Capture refreshes the stored take (every capture is treated as a new take); Frozen returns the stored one.

Output: a single AUDIO socket, which goes into Music3 Semantic Studio Audio Editor, and from there into Preview/Save Audio. One node per take - the cache key is the node id, so if you want to hold two different takes at once, add a second freeze node.

Install

Same pack, same install, no extra dependencies (the pack's pyproject.toml declares an empty dependency list):

cd ComfyUI/custom_nodes
git clone https://github.com/ukr8b3g-cmyk/MiniMax-Music3-Semantic-Studio.git

Restart ComfyUI - or let ComfyUI Manager do it by searching the pack title, MiniMax Music3 Semantic Studio; Manager just clones the same repo. Two things to know about the model side: MiniMax Music 3's autoregressive stage is native to ComfyUI - this pack imports comfy.ldm.minimax_music.ar rather than shipping model code - and this node patches nothing. It's a plain v3-API node you can drop into any graph that produces AUDIO, Music3 or not.

Where people get burned

The snapshot dies with the process. Capture is session-only by design - no disk persistence, no auto-restore. Restart ComfyUI with the node still in Frozen and it raises "No captured audio is available for this node. Switch Mode to Capture, queue once to capture the generated take, then switch back to Frozen." That error is the node working correctly; there is deliberately no silent fallback to re-generating.

Frozen makes your upstream widgets inert. While you're in Frozen, changing Music Seed (AR), Duration, KSampler seed, anything - is a no-op for the audio you're hearing. That's the feature, but it's also how you end up confused about why "nothing happened" after queueing. Switch to Capture before you expect a new song.

Frozen is not a save. The take lives in RAM; if you want the file, keep a Save Audio node on the end and queue. And remember the pack's flow: edit → Save Edits → queue again while Frozen to get the authoritative edited AUDIO out of the Audio Editor. Freeze is the thing that makes that second queue cheap.

Categoryaudio/minimax music

Inputs (2)

NameTypeDefaultDescription
audioAUDIOGenerated AUDIO to capture. In Frozen mode this lazy input is not requested.
modeCOMBOCaptureCapture refreshes the stored take. Frozen returns the stored take without evaluating upstream AUDIO.

Outputs (1)

NameTypeDescription
AUDIOAUDIO