Nodes/MiniMax Music3 Semantic Studio/Music3 Semantic Studio Audio Editor
ComfyUI Node

Music3 Semantic Studio Audio Editor

There's a non-destructive DAW hidden in this ComfyUI node — and no, Save Edits doesn't save anything

By ukr8b3g-cmyk·Created about a month ago·Updated 23 days ago· 4
Music3 Semantic Studio Audio Editor
  • audio
  • AUDIO
edit_json{"edit_schema_version":2,"project_id":"","view":{"zoom":1.0,"scroll_seconds":0.0,"waveform_height":360.0},"takes":[],"tracks":[{"id":"main","name":"Main Track","muted":false,"solo":false,"gain_db":0.0,"pan":0.0,"gain_envelope":[],"effects":[],"clips":[]}],"master":{"gain_db":0.0,"channel_mode":"preserve","normalize":{"enabled":false,"target_peak_dbfs":-1.0},"effects":[]},"reserved":{}}
bypassfalse

Music generation gets you 80% of a track and leaves you with a mix problem: the vocal is buried, the highs are glassy, the intro is a bar too long. In an image workflow you'd just do a second pass. You can't inpaint a chorus. So the pack ships an actual audio editor as a node: waveform, transport, fades, gain automation, a nine-effect DSP rack, optional VST3, and a Mixer with master normalize. It opens as a full workspace in the browser, and it is genuinely the most interesting thing in this pack.

Non-destructive means what it says

The connected AUDIO is the source of truth. Everything you do in the editor is stored as edit_json - a schema-2 project holding a track list, clips, per-clip gain/pan, a gain envelope, per-track and master effect chains, master gain/channel mode/peak-normalize, and view state. Queue the node and the Python side renders that state onto the source waveform. Change an effect, queue again, get a new render. Your original audio is never overwritten, and - the bit that trips people up - Save Edits does not write the file. It stores the edit state back into the node; the authoritative edited AUDIO only exists after you queue again. In the pack's own V1 flow, "queue again" is cheap because the upstream Music3 branch is frozen (see Capture / Freeze Audio).

The render is a real one. Clips are assembled, gain and pan applied, the effect chain runs in order (gain/amplify, compressor, limiter, 3-band EQ, high-pass, low-pass, stereo width, reverb, stereo delay), then master gain, channel mode and optional peak normalization at your target dBFS. Reverb and delay don't get chopped - the renderer pads the track by the chain's tail length before processing, so long tails extend the output instead of being truncated.

Inputs and output

  • audio (AUDIO) - required, the thing being edited. Mono or stereo only; three or more channels is an error. For interactive editing it wants batch size 1 - a batch of takes gets rendered but the waveform UI flags itself as non-interactive.
  • edit_json - the versioned edit state. Advanced widget; the editor writes it. Unknown future schema versions are read as best it can; malformed JSON intentionally fails at execution rather than silently discarding stored edits. Schema 1 projects are migrated to 2 on load.
  • bypass (BOOLEAN, labeled Bypass / Edited) - returns the source audio untouched while still producing the source and render previews - handy for hearing how much the rack is doing.

One output: AUDIO, the rendered result. The node is an output node, which matters twice over - it always executes, and it publishes temp FLAC previews of both the source and the render so you can hear the difference without a Save node. Wire a Preview/Save Audio after it to keep the file.

There's a subtlety from the freeze node worth knowing: the editor reads the take's session identity, and a new capture resets source-dependent edit state while keeping project/view metadata. Frozen re-queues keep the same identity and therefore keep your edits.

Install

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

Restart. Manager works too - search the pack title, MiniMax Music3 Semantic Studio. Nothing else is mandatory: the built-in DSP is pure PyTorch and the pack installs no Python packages of its own. The one optional dependency is VST3: on Windows only, it installs pedalboard>=0.9.24,<1 into ComfyUI's own Python environment, and the pack won't do it over an HTTP route. When the host is missing the VST3 workspace shows a fixed PowerShell command to copy into a local terminal, then you restart. Users who never open VST3 never install it. VST3 discovery and native plug-in UIs are also loopback-only - if you're reaching ComfyUI over LAN, those controls are disabled, and the native plugin editor runs in a separate helper process so a hung plug-in can be force-stopped without killing ComfyUI.

Practical gotchas

Browser preview is not the render for VST3. Draft preview covers the built-in edits; third-party plug-in processing is only guaranteed by the queued render.

Edits belong to the take they were made on. A fresh capture resets source-dependent edit state - clip positions and envelope points tied to the old take - while project metadata stays intact. That's protection, not a bug.

Reach for envelopes after you've gain staged. Set levels with clip gain and the compressor first, then draw the envelope. If the waveform looks flat while the render sounds loud, check master normalize first.

Categoryaudio/minimax music

Inputs (3)

NameTypeDefaultDescription
audioAUDIOSource audio.
edit_jsonSTRING{"edit_schema_version":2,"project_id":"","view":{"zoom":1.0,"scroll_seconds":0.0,"waveform_height":360.0},"takes":[],"tracks":[{"id":"main","name":"Main Track","muted":false,"solo":false,"gain_db":0.0,"pan":0.0,"gain_envelope":[],"effects":[],"clips":[]}],"master":{"gain_db":0.0,"channel_mode":"preserve","normalize":{"enabled":false,"target_peak_dbfs":-1.0},"effects":[]},"reserved":{}}Non-destructive edit state. Known fields from future schemas are interpreted where possible; malformed JSON still fails at execution to protect stored edits.
bypassBOOLEANfalseReturn the source audio unchanged while still generating source/render preview metadata.

Outputs (1)

NameTypeDescription
AUDIOAUDIO