ZammothBack to the site

Manual

Mix Runs and Auto Mix

Mix runs

A run is the engineer's iterative loop: analyze → propose → apply → render → re-analyze, repeated for a bounded number of passes until your brief's measurable targets are met (or provably can't be improved).

Starting one: describe a goal — "master this for streaming", "make the vocal sit", "the chorus needs to lift". The engineer itself decides, with the whole session in front of it, whether your message is a run (a goal needing iteration), a single move, a direct edit, or just a question to answer. There is no separate run button; the conversation is the control surface.

While it runs: moves tick into the feed live as they land; the status shows pass N/M and the ticking $ spend; the ENGINEER cell breathes. ■ cancels at the next boundary, keeping (and reporting) whatever had landed — still one Undo away.

You can keep mixing while the engineer works. A fader, pan or knob you move during a run or a chat turn stays where you put it: the engineer picks your move up before its next step and works on top of it ("+2 dB on the vocal" lands on the vocal as you just set it), and what it sends back at the end of the turn carries your move rather than resetting it. The same holds when a turn fails part-way. If you move something in the last second or two, while the final measurement is running, the control may flick back for a moment and then return — the engineer's result arrived first, and your move is re-applied right after.

It can't quietly make things worse. If later passes regress, the run reverts to its best measured pass and re-renders so what's kept is honestly measured. The feed says so: "reverted to the best pass (later passes made it worse)". Every stop reason is shown — cancelled, spend limit, regression — with the run's cost. EQ rail reached means everything still open would need more EQ than the agent may use on one track in a session (+12 dB of boost, −24 dB of cut): the run stops there instead of spending more passes, and the engineer names the bands still short — closing them takes a different source, not more EQ.

The ledger: every applied move carries its rationale and predicted impact (metric, delta, unit). Ask for predicted vs measured anytime.

Moves that are not devices. Most of what a run does lands as a device you can see in the dock. Four kinds do not, and all four are in what you hear and in what you export:

  • a pan or a mute is your track's own pan knob and mute button — they move, and the feed says the engineer set vocals pan −0.30;
  • a stem the engineer takes out of the mix is muted (un-mute it and it is back in the engineer's mix as well);
  • a gain ride — "bring the second verse up 2 dB" — is a level change over a time range, with 50 ms fades at its edges. It has no box in the dock; the ledger lists it with its range, and the engineer can tell you which rides a track is playing. Undo run / Undo Agent Move takes any of the four back.

Bounds: runs are guardrailed server-side (gain ≤ ±6 dB/pass, EQ boost ≤ +6 dB per band and ≤ +6 dB per pass / +12 dB per session for all of the engineer's EQ moves on one track added together, master true peak ≤ −1 dBTP, ≤ 24 actions/pass) and budgeted (a per-run spend ceiling, plus timeouts on any single stalled call). A chat turn has no tool-round cap: the agent works until the task is done (or you press Cancel).

Auto Mix

AUTO MIX (the composer's status line) is the one-button bootstrap: profile the stems → auto-tag them (vocal, kick, bass, pads…) → build a sensible starting chain (balance, high-pass policy per instrument class, corrective EQ where masking is measured, gentle compression on dynamic sources, a master limiter to your loudness target) → apply → one refinement pass.

The chip's popup picks the loudness target: Streaming −14 LUFS · Apple/Podcast −16 LUFS · Club −8 LUFS · Ceiling only (no loudness push).

Intent presets ride a spoken brief — ask in chat, combining freely with a loudness target ("auto mix, vocal-forward and club loud"):

PresetWhat it does
vocal-forward+1.5 dB on the confidently-tagged vocal stems
punchy-drumstransient attack +2 dB / sustain −1 dB on kick and cymbal stems
warm-mastermaster tilt: +1.5 dB low shelf at 180 Hz, −1 dB high shelf at 6.5 kHz
wide-popwidth ×1.25 on vocals/pads/cymbals (never kick or bass)
club-loudloudness target −8 LUFS
podcast-cleanhigh-pass at 85 Hz + de-ess on voice, target −16 LUFS
AI cleanupsay "clean up separation artifacts": measures shimmer, smeared transients, spectral holes, and leakage on AI-separated stems, then applies spectral de-noise, transient restore, gentle saturation over holes, and glue compression — without touching your balance

A preset shapes the bootstrap; the refinement that follows aims only at loudness — the target you named, else the preset's own (wide-pop −12, warm-master −14, club-loud −8, podcast-clean −16 LUFS), else none. The preset's moves get a pass of their own, so the vocal phrase rides can't use up vocal-forward's lift. If the guardrails refuse any step, the status says which (⚠ 1 step was refused by the guardrails: …) instead of just "applied".

Progress streams in stages — tagging → profiling → building → applying → rendering — in the ENGINEER cell. When it finishes: undo run takes the whole bootstrap back in one click, and a/b (press and hold) swaps the pre-run chains in and out instantly so you can hear before/after.

With no audio tracks yet (a MIDI-only session) Auto Mix declines and says so in the feed — instruments are mixed live, not through the offline bootstrap. Stop part-way keeps what had landed (one Undo away) and the status reads run cancelled, not applied.

Zammoth is a DAW for Apple silicon Macs with an AI audio engineer built in. The beta opens soon.

Join the beta