Mixer
The Mixer is the studio’s console: a channel strip per track, the send/return bus strips, and the master strip. Unlike the other views, the mixer is live performance state, not part of the AST — like flags, it resets with the runtime and is never written into your code.
What it shows
Section titled “What it shows”- Track strips: a vertical dB fader, a pan knob, mute / solo, and a live meter. The meter color climbs green → amber → red as the level approaches clipping.
- Bus return strips: a fader + meter only (no pan/mute/solo), set apart with
a dashed border and a “return” tag. The bus itself — its effect chain and
default volume — is declared in code via
song.bus(name, { effects, volume }); only its level is performance state here. - The master strip: the master fader + meter, tapped post-master-effects.
Why it isn’t write-back
Section titled “Why it isn’t write-back”Track gain, pan, mute, and solo are things you ride during a performance — they change constantly and per-take, and writing every fader nudge back into the source would be noise, not composition. So the mixer owns this state in the runtime, separate from the document.
That mirrors a real distinction in the model:
- Composition (what the song is) lives in code: tracks, effect chains, buses, patterns, automation. The Devices and Clip detail panels write back here.
- Performance (how you play it) lives in the runtime: mixer state and flags. It resets when you reload.
Automation written in code (track.automate("gain", …)) drives a separate
per-track gain stage, so code automation and the manual fader don’t fight each
other.