Buses and Sends
A mixer is not just strips. It is a routing graph that sums and groups them.
Buses are the shared destinations. Sends are the taps that send signal to them.
Getting these two right is what turns a pile of strips into a controllable mix. This page grounds the routing model in libsonare's Bus and send processors; for the gentler intro see Mixing Basics.
Buses: master, aux, submix
A bus is a destination that sums several signals. libsonare gives a bus a role:
- Master — the final stereo output everything eventually reaches.
- Aux — the return for sends, where a shared effect (one reverb, one delay) lives.
- Submix — a group that collects related tracks (all the drums) so you can process and ride them as one. In a scene this is any role string other than
master(submix,subgroup, …); the string is only a label.
A compressor on a drum submix glues the kit together; one fader then controls the whole kit. The master is special only in that it is the last bus in the graph.
Sends: parallel copies
An insert processes a track in series — the whole track passes through it. A send is different: it routes a copy of the track in parallel to a bus. Use sends for effects several tracks share, so a vocal, snare, and guitar can all sit in one reverb space without each carrying its own reverb. A compressor can also be keyed from another strip (a sidechain), which is how ducking works; see Sidechain and Ducking.
Pre-fader vs post-fader
A send taps either before the fader or after it, and this is the routing decision people most often get wrong:
| Tap | Follows the fader? | Use for |
|---|---|---|
| Pre-fader | No | Headphone/cue mixes, effects that should stay constant while you ride the fader |
| Post-fader | Yes | Reverb/delay that should stay proportional to the balance |
A pre-fader send ignores the fader but not mute and solo: when a lane is silenced by mute or by another lane's solo, its pre-fader sends go silent with it, and a solo-safe lane keeps sounding while another lane is soloed. A disabled send contributes exactly nothing.
VCA groups vs submixes
A submix re-routes audio: the grouped tracks actually flow through the submix bus. A VCA group does not — VCA (voltage-controlled amplifier) is the console circuit this borrows its name from, and here it means a single fader that trims several tracks' levels at once without changing where their audio goes. Use a VCA when the parts must still reach different buses but you want one hand on their combined level.
How libsonare models routing
| Element | Role |
|---|---|
Bus | Carries a BusRole (Master/Aux/Subgroup; a subgroup is what the prose above calls a submix) and runs a BusProcessor |
FxBus | Hosts shared effects |
SendProcessor | Taps a strip at a TapPoint chosen by SendTiming (pre/post-fader) and feeds a destination bus |
VcaGroup | Applies a shared gain offset across member strips without re-routing audio |
There is no submix role value: at scene level the role field is a free string (the scene's submix and the engine's Subgroup are the same thing) in which only master is interpreted specially, so submix, subgroup, group and anything else all compile to the same generic non-master bus (the built-in drum-bus preset writes "subgroup").
The whole graph — strips, buses, sends, connections — is described by a serializable scene and runs with plugin delay compensation (PDC) so parallel paths stay time-aligned. See Mixing Scene JSON for the field-level format.
Related: Mixing Basics, Channel Strip, Automation and Metering, Mixing Scene JSON