Bus Balance

One instance on each group bus. Each instance measures its bus in short-term LUFS and shares it with the others, so a bus can hold a set distance from another group as heard, and every window shows the whole ladder. The ride is slow and narrow on purpose. Most of the work is reading the ladder, pressing Bake and moving on. A second view, MASKING, shows which groups compete with this bus in the same frequencies.

Bus Balance window

Where it goes

Last insert on each group bus: Kick, Bass, Drums, Vocals, Backing Vocals, Music. Set each instance's role. One group is the anchor with an absolute target, the others are relative to a group. In most styles the kick is the anchor, with vocals one or two LU above it and bass two or three below.

The ladder lists the groups in a fixed order, the usual gain-staging order: kick, bass, drums, vocals, backing vocals, music. Rows do not trade places as levels move. Up to 16 instances fit in the ladder.

Controls

ControlWhat it does
This bus isThe role of the bus this instance sits on. The ladder lists instances by role.
Relative toAbsolute: ride to Target. A role: ride to that group's level as heard (after its own correction) plus Offset. Two buses with the same role count as playing together. If the role has no instance in the session, or its chain of references comes back to this bus, the ride holds and the status line says so.
Target-40 to -6 LUFS, default -20. The absolute target for the anchor.
Offset-12 to +12 LU from the referenced group, default 0.
Range0 to 6 dB, default 3. The maximum travel of the ride.
Speed0.5 to 6 dB per second, default 1.5. Faster than about 3 flattens verse against chorus.
Gate-70 to -30 LUFS, default -50. Below this the bus is absent and the ride holds. It also holds while the bus is dropping out, so a breakdown does not pull the gain up over the three seconds the short-term window takes to fall.
Trim±12 dB static gain. Written by Bake or set by hand.
FREEZEStops the ride where it is.
BAKEAdds the last five seconds' average ride to Trim, restarts the ride at zero and freezes. The level as heard does not change. The correction is now static.
BYPASSRide and trim fade to 0 dB. The big number shows the correction that is applied.
LADDER, MASKINGThe view, right of BYPASS. LADDER is the default.
Style ladder, APPLY TO ALLFills Relative to, Offset and Target for this bus's role from one of seven ladders (Pop, Hip-hop, Rock, Electronic, Acoustic, Country, Ambient). APPLY TO ALL does the same in every instance in the session. The numbers are starting points.

The ladders

RolePopHip-hopRockElectronicAcousticCountryAmbient
Kick-20 LUFS-18 LUFS-20 LUFS-17 LUFSVocals -2-20 LUFSMusic -3
BassKick -2.5Kick -1Kick -2Kick -2Kick -3Kick -2.5Kick -1
DrumsKick -1Kick -3Kick 0Kick -2Kick -2Kick -0.5Kick -4
VocalsKick +2Kick +1Kick +1Kick 0-18 LUFSKick +3Music 0
Backing VocalsVocals -6Vocals -7Vocals -6Vocals -8Vocals -5Vocals -5Vocals -3
MusicKick -3Kick -6Kick -1Kick -4Vocals -2Kick -1-22 LUFS

Short-term loudness of each bus on its own, measured after that bus's correction. The anchor's absolute level only sets where the mix lands before the master. Acoustic anchors on the vocal. Country puts the lead further forward than Pop, the harmony stack closer to it and the acoustic bed nearly level with the kick. Ambient anchors on the music bed, with a quiet kick and little drum presence.

The display

For each group the bar is the level as heard and the tick is the target. The right-hand columns show level, target, correction and state. On-screen levels and targets are smoothed over about a second for reading. The ride is not affected.

Bus Balance masking view

The masking view

MASKING reads every other instance in the session, so it needs Bus Balance on the other group buses. Alone in the session, the view says so.

Reading the grid

The rows are the other buses, in ladder order. The columns are third-octave bands from 40 Hz to 12.5 kHz. A cell's colour is how much of the last 10 seconds the two buses collide in that band while both play: dark is never, amber some of the time, red most of the time, with full red from 80 %. The darkest cells mean the two have not both played in that band for half a second in the last 10 seconds.

Two buses collide in a band when both are present there and within 6 dB of each other. Present means above -70 dB and within 30 dB of the bus's own loudest band. In a collision the quieter bus is the one masked. More than 6 dB apart, the louder one owns the band and the cell stays dark. The rule is the same as in KickBass Check.

The share is counted only while both play. If the vocal is silent half the time and collides with the music in half of the rest, the cell says 50 %, not 25 %.

The two lines under the grid name the two worst runs of neighbouring bands, for example "vocals vs music: collide 1.6 to 3.15 kHz 70 % of the time, music masked, 2 dB under vocals". The dB figure is the mean difference while they collide.

Why mono is the judge

Levels are compared on the mid signal, (L+R)/2. A mono bus is compared as it is. Mono is the worst case, so a collision counts even when the two buses are panned apart.

Separated in stereo only

A hatched, outlined cell means the two collide in mono but for most of that time sit apart in stereo in that band. Apart means pan positions more than 0.5 apart on a scale from -1 (left) to +1 (right), taken from the left and right band energies, or one bus wide (left and right differ, with side energy at least 30 %) and the other centred. On headphones and stereo speakers it sounds solved. In mono it comes back. Fix it with EQ or the arrangement if mono matters.

Limits

Each instance measures its own output in third-octave bands for this view: one 8192-point FFT every 2048 samples at 44.1 and 48 kHz, a new frame every 43 ms. Band levels go through envelope followers (attack 10 ms, release 300 ms), while presence is read from the frame itself, so a part that stops drops out at once. The judgement runs in each instance's 30 Hz timer, so the last 10 seconds are there when the window opens. The measurement never feeds the ride. Bands under 80 Hz have only two or three FFT bins each and leak into their neighbours, so read the lowest bands as one region. It costs about 0.3 % of one core per instance.

Working with it

  1. Insert an instance on each group bus and set its role.
  2. Pick a style in one window and press APPLY TO ALL, or set anchor and offsets by hand.
  3. Play the chorus until the bars sit on their ticks.
  4. Press BAKE in each window.
  5. Play the verse. If a group is off by more than you want, let it ride there too, or bake again. A second bake adds to the trim.

More than 16 instances

A 17th instance passes its audio untouched (no ride, no trim, whatever its controls say) and is not in the ladder. Its window says so in red: "more than 16 Bus Balance instances: this one is not in the ladder". It stays out until it is reloaded after another instance has been removed.

Under the hood

Each instance runs an EBU R128 meter on its input as well as the one on its output. The short-term value (3 s) sets the ride, the momentary value (400 ms) decides presence. Instances share a small table in the plugin's memory inside Logic: role, level as heard, target, correction and state, written by the audio thread without locks. A reference is resolved every block. The referenced role's instances are summed in power, the offset is added, and the ride moves towards the error at Speed, clamped to Range. Gain changes are smoothed over 30 ms. Zero latency.

Loudness meter, level-matched bypass and mono handling work the same in every plugin. Common to all plugins