Response Times
Exact timing values for spectrum analyzer ballistics, peak-hold decay, level-meter peak ticks, goniometer phosphor, and Balance-O-Meter response — as implemented in Axis Utility 1.0.0.
Right-click the spectrum analyzer or goniometer → Settings to change these options.
Two layers on the spectrum
Before the tables: the analyzer draws two independent level traces when Peak Hold is enabled:
| Layer | Colour | What it is | Timing controls |
|---|---|---|---|
| Live spectrum | Blue (channel colours) | Line, octave bars, or spectrogram column data — updated every FFT hop | Attack Time (Average only) + Release Time (Average & Peak) |
| Peak Hold overlay | White caps / lines | Highest level seen since last reset (per frequency band) | Peak Hold Response (Settings, when Peak Hold is on) |
Peak Hold also affects IN/OUT level meter peak ticks and numeric peak readouts. Those use the same Peak Hold Response menu (hold time before fall), not Release Time.
What applies in Average vs Peak
Settings → Spectrum Level chooses how each new FFT frame is turned into the live trace. It does not change phosphor (goniometer only).
| Setting | Menu path | Average spectrum | Peak spectrum |
|---|---|---|---|
| Attack Time | Settings → Attack Time | Used — smooths rising levels on the live trace | Not used — menu greyed; Peak always rises instantly. Your Attack setting is kept for when you switch back to Average. |
| Release Time | Settings → Release Time | Used — smooths falling levels on the live trace | Used — smooths falling levels only (rise is instant) |
| Peak Hold Response | Settings → Peak Hold Response | Used when Peak Hold is on (white overlay + meter peaks) | Same |
| Phosphor Decay | Goniometer → Settings → Phosphor Decay | Vector goniometer modes (not Balance-O-Meter) | |
| Balance Response | Goniometer → Settings → Balance Response | Balance-O-Meter mode only (not spectrum) | |
Attack Time
Settings → Attack Time · Average spectrum level only
Controls how quickly the live spectrum trace rises when level increases at a frequency. Implemented as an exponential time constant τ (see Under the hood).
| Menu label | Attack τ | Notes |
|---|---|---|
| Fast | 1 ms | |
| Normal | 3 ms | factory default |
| Slow | 10 ms | |
| Very Slow | 30 ms |
In Peak spectrum level, the live trace snaps upward immediately on each hop; only Release Time smooths downward movement (reduces Hann-window sidelobe flutter). The Attack menu choice is kept in state (so it returns when you switch back to Average) but ballistics force instant attack — changing Attack in Average then switching to Peak does not apply that Attack in Peak.
Release Time
Settings → Release Time · active in both Average and Peak spectrum level
Controls how quickly the live spectrum trace falls when level decreases. Same menu, same τ values in both modes — only the direction differs (Peak ignores attack, not release).
| Menu label | Release τ | Notes |
|---|---|---|
| Very Fast | 5 ms | Snaps on the first FFT hop (~21 ms @ 8192/8, 48 kHz) |
| Fast | 50 ms | |
| Normal | 150 ms | factory default |
| Slow | 500 ms | |
| Very Slow | 1.5 s |
Tip. Release Time does not control the white Peak Hold overlay. That uses Peak Hold Response below.
Peak Hold Response
Settings → Peak Hold Response · enabled when Peak Hold is on (root analyzer menu)
After a new peak is captured, the white hold markers (and level-meter peak ticks) stay frozen at that peak for the selected hold time — then fall at a fixed rate. This is not the drop speed; it is how long the marker remains at the peak before it starts falling.
| Menu label | Hold time | Notes |
|---|---|---|
| Very Fast | 0.5 s | factory default |
| Fast | 1.0 s | |
| Normal | 2.0 s | |
| Slow | 5.0 s |
After the hold expires, markers fall at a fixed 20 dB/s on the spectrum (and a matching fixed step on level-meter ticks). Choose Infinite Hold in the root menu to keep peaks frozen until Reset Peak Hold or a metering reset.
Disabled in Spectrogram display mode (menu entry greyed out).
Level meter peak ticks
The same Peak Hold Response hold times apply to the white peak tick on IN/OUT level meters and to the numeric peak readouts. After hold expires, meter ticks fall at a fixed linear step per UI refresh (not tied to the menu selection).
Phosphor Decay
Goniometer right-click → Settings → Phosphor Decay
Controls how many history frames are blended into the cyan phosphor trail on vector goniometer modes (Lissajous, M/S, Polar, Dot, X/Y). Phosphor is always on. Greyed out in Balance-O-Meter mode (no phosphor trail there).
| Menu label | Trail frames | ~Duration @ 48 kHz | ~Duration @ 44.1 kHz | Notes |
|---|---|---|---|---|
| Fast | 5 | ~53 ms | ~58 ms | |
| Normal | 8 | ~85 ms | ~93 ms | factory default |
| Slow | 12 | ~128 ms | ~139 ms |
Duration ≈ frames × 512 ÷ sample rate (each goniometer
frame is a 512-sample buffer).
Phosphor Decay is independent of spectrum Average / Peak level and from analyzer Attack / Release / Peak Hold Response.
Balance Response (Balance-O-Meter)
Goniometer right-click → Mode → Balance-O-Meter, then Settings → Balance Response
Smooths how quickly the RMS balance triangle widens, narrows, or returns to the centre (mono line) when stereo balance changes. Each update uses one 512-sample goniometer frame (see frame period below — typically ~11 ms at common project rates).
The triangle apex stays fixed at M (Mid). The base expands toward L / R for stereo width and pan — Balance Response only controls how fast that shape moves, not the underlying RMS math.
| Menu label | Rise coeff | Fall coeff | ~Rise τ @ 48 kHz | ~Fall τ @ 48 kHz | Notes |
|---|---|---|---|---|---|
| Fast | 0.04375 | 0.015 | ~200 ms | ~656 ms | |
| Normal | 0.015625 | 0.005375 | ~560 ms | ~1.83 s | |
| Slow | 0.005625 | 0.001875 | ~1.57 s | ~5.16 s | factory default |
| Very Slow | 0.0036 | 0.00125 | ~2.45 s | ~8.0 s |
Menu is greyed out unless display mode is Balance-O-Meter. Phosphor Decay is greyed out in that mode (no phosphor trail on the triangle).
Smoothing per frame: smoothed += coeff × (target − smoothed) where
coeff is the rise or fall value depending on whether the triangle is expanding or
contracting. Approximate τ values use τ = −1 ÷ ln(1 − coeff) frame periods × 512 ÷ sample rate.
Under the hood
FFT hop period (spectrum)
Attack and Release are applied once per FFT hop, not per audio sample. Hop length depends on FFT size and overlap:
hop period = FFT size ÷ overlap ÷ sample rate
Factory default. FFT 8192 with 8× overlap (analyzer right-click Settings) → hop = 1024 samples → ~21.3 ms @ 48 kHz · ~23.2 ms @ 44.1 kHz. That is why Release → Very Fast (5 ms τ) snaps on the first hop at default settings — one update step is already longer than τ.
| FFT size | Overlap | Hop @ 48 kHz | Hop @ 44.1 kHz | Notes |
|---|---|---|---|---|
| 1024 | 1× | 21.3 ms | 23.2 ms | |
| 2048 | 2× | 21.3 ms | 23.2 ms | |
| 4096 | 4× | 21.3 ms | 23.2 ms | |
| 8192 | 8× | 21.3 ms | 23.2 ms | factory default |
| 16384 | 16× | 21.3 ms | 23.2 ms |
Larger FFT sizes use higher overlap so the hop stays ~21 ms at 48 kHz — finer frequency resolution without proportionally slower display updates.
Live trace ballistics (exponential)
Each frequency bin, each hop:
- If the new level is higher than the previous smoothed value → use Attack τ (Average mode only; Peak uses instant rise).
- If the new level is lower → use Release τ.
Smoothing formula (per bin):
smoothed = coeff × previous + (1 − coeff) × new
coeff = exp(−hop period ÷ τ)
τ is the Attack or Release time constant from the tables above. This is a standard hop-synchronous envelope follower on the dB trace.
Peak Hold (hold, then linear dB fall)
When a new peak arrives, the hold marker freezes for the selected Peak Hold Response duration. While the hold timer is running it does not fall. After the timer expires (and while the live level stays below the held peak):
ΔdB = 20 dB/s × hop period
per spectrum update (or a fixed step per UI tick on level meters). It never rises except when a new higher peak arrives (which also restarts the hold timer).
Goniometer frame period
Phosphor Decay and Balance Response advance once per goniometer audio buffer. The buffer is always 512 samples, so the frame period depends only on your project sample rate:
frame period = 512 ÷ sample rate
| Sample rate | Frame period |
|---|---|
| 44.1 kHz | 11.6 ms |
| 48 kHz | 10.7 ms |
| 88.2 kHz | 5.8 ms |
| 96 kHz | 5.3 ms |
| 192 kHz | 2.7 ms |
Supported rates. Axis Utility is designed for 44.1–192 kHz
(Specifications). The formula works at any rate in that range — we list
common project rates above. Phosphor trail duration ≈ frames × frame period;
Balance Response τ values scale the same way.
Peak vs Average measurement
| Peak factory default | Average | |
|---|---|---|
| FFT scaling | Peak-calibrated dBFS per frequency bin | Same raw FFT input |
| Live trace | Instant rise + Release-smoothed fall | Attack + Release on both directions |
| Typical use | Level checks vs meters; “what’s the peak at 1 kHz?” | Tonal balance; less flicker |
Quick reference (defaults)
| Control | Default menu | Value |
|---|---|---|
| FFT size | 8192 factory default | 8× overlap → hop ~21.3 ms @ 48 kHz · ~23.2 ms @ 44.1 kHz |
| Spectrum Level | Peak factory default | — |
| Attack Time | Normal factory default | 3 ms Average only |
| Release Time | Normal factory default | 150 ms |
| Peak Hold Response | Very Fast factory default | 0.5 s hold, then fixed 20 dB/s fall |
| Phosphor Decay | Normal factory default | 8 frames (~85 ms @ 48 kHz · ~93 ms @ 44.1 kHz) |
| Balance Response | Slow factory default | rise 0.005625 / fall 0.001875 |