Skip to content

Automation and Metering ​

A static mix is rarely the best mix, and ears alone are not enough to trust one. Automation lets controls move over time; metering lets you watch the result with your eyes as well as your ears. This page grounds both in libsonare's automation and meter processors; for the basics see Mixing Basics.

Automation: a mix that breathes ​

Automation records how a control changes over time — push the vocal up half a dB in the chorus, fade a synth out over four bars, open a filter on a riser. Each control follows a curve between the points you set, and the curve shape changes the feel:

CurveMotion
LinearA straight ramp between points
ExponentialInterpolates on a log scale, so a frequency or linear-gain sweep sounds even. A fader lane is already in dB, where linear is the even-sounding fade; see Mixing Engine
S-curveEased at both ends — smooth, musical transitions
HoldJumps instantly and stays until the next point

Automation can target faders, pans, sends, and insert parameters, so the whole strip — not just level — can move.

Engine lanes and project lanes ​

The automation above is engine-level and plays back in real time. A persisted, project-level lane (Project.addAutomationLane) can also target a track's fader or pan directly, so an offline bounce applies it with no raw parameter ids; see Automation lanes.

Metering: trusting your eyes too ​

Rooms lie and ears tire, so a mix is also judged on meters:

  • Peak / true peak — the highest level. A plain sample meter only reads the stored samples, but the waveform reconstructed between them can rise higher; true peak catches those between-sample overs a plain meter misses.
  • RMS / LUFS — average level and perceived loudness. LUFS (Loudness Units relative to Full Scale) is the unit that tracks what listeners actually judge.
  • Correlation — whether left and right agree; strongly negative values warn the mix may weaken in mono.
  • Goniometer — a dot-plot of the stereo field. Read it on the usual rotated display, which puts left−right across and left+right up (a raw left-against-right plot rotates every shape below by 45°). A vertical line means a mono signal, and the more the dots spread sideways into a round cloud, the wider the image. A cloud collapsing onto the horizontal axis warns of phase or polarity trouble. A cloud tilted to one side is a plain left/right level imbalance — the image sits off-centre, which is a balance problem, not a phase one. The figure below draws all four from test signals, with the correlation each one reads.
Reading a goniometer
MSLRmonor = +1.00MSLRwide, unrelated sidesr = 0.00MSLRanti-phaser = −1.00MSLRleft-heavyr = +0.93
Each dot is one left/right sample pair on the rotated display: up is the mid (L+R), across is the side (L−R), and left-only material lies on the diagonal marked L. The value under each scope is the correlation of the same samples. The left-heavy pair still reads strongly positive: an imbalance moves the image without hurting the mono sum.

Peak, RMS, and correlation in libsonare cover one processed block (or the whole render for a one-shot mix), with no smoothing. The steady needle of a VU meter (about 300 ms of integration) or the slow fall and peak hold of a program meter are ballistics that the display adds on top; LUFS already has its own fixed 400 ms and 3 s windows. See Metering for the details.

Meters describe; they do not decide. Use them to catch problems your ears miss, not to chase numbers.

LOUDNESS · TRUE PEAKIDLE
Inter-sample peaks — why a master clips on playback

The dots are samples of a sine wave; the curve shows its analytic waveform. A crest can fall between samples, above every stored value. The gap depends on frequency and phase, so it does not increase smoothly toward Nyquist. Compare the analytic peak with the oversampled meter reading. Raising the sample peak toward 0 dBFS can leave an inter-sample over that clips a converter or processor without sufficient headroom.

Sample peak
-0.3 dBFS
Frequency (×Nyquist)
0.4
METERS · LOUDNESSIDLE
Loudness metering — LUFS, true-peak, and range

The bar tracks momentary loudness as the clip plays; the panel is the loudness over time. Integrated LUFS is the single overall number, true-peak estimates peaks between samples, and LRA captures how much the loudness moves. Switch the window to compare the fast momentary meter with the smoother short-term one — each reports only once its window has filled, so the short-term contour starts three seconds into the clip.

Window
How libsonare models automation and metering

Automation is scheduled on AutomationLanes as sample-accurate AutomationEvents with an AutomationCurve (linear/exponential/s-curve/hold); an AutomationTarget points at a fader, pan, send, or insert parameter, and InsertAutomationLane automates inside an insert. Metering uses a MeterProcessor (MeterConfig) for peak/true-peak/RMS/LUFS and correlation, plus a GoniometerBuffer of GoniometerPoints for the vectorscope. All of this is real-time-safe, so automation plays back and meters update both offline and inside an AudioWorklet, with engine-side telemetry available for UI displays.

The true-peak meter looks a few samples ahead (the reconstruction filter's group delay), so it reports slightly late, which is what makes its reading independent of the block size. The last few samples of a signal are therefore still pending when the final block ends; call Mixer.flushMeters() (Python: flush_meters()) after the last block of an offline render to read them against silence and fold them into the snapshot. Offline engine renders and the one-shot mix flush every meter themselves.

Related: Mixing Basics, Channel Strip, True Peak, Reading Mastering Meters