CPB analysis runs the signal through a bank of real digital band-pass filters, one per frequency band, and measures the mean square of each filter output in the time domain. Because the measurement never passes through an FFT, the low-frequency bands are not limited by FFT resolution.
Four elements share this engine and differ only in what the horizontal axis shows: CPB Spectrum, CPB vs Time, CPB vs RPM and CPB Synthesis. All four are inserted from the Insert menu into the analysis pool.
Deepsona ships both. They answer the same question with different machinery, and the results are not interchangeable at low frequencies.
| CPB analysis | Octave Spectrum (1/1, 1/3) | |
|---|---|---|
| Method | Time-domain IIR filter bank, one band-pass per band | FFT synthesis: FFT lines are grouped into bands |
| Band definition | IEC 61260 base-ten, G = 100.3 ≈ 1.99526 | ISO preferred values (base-two lineage) |
| Low-frequency behaviour | Unaffected by FFT resolution | Degrades when too few lines fall inside a band |
| Bandwidths | 1/1, 1/3, 1/6, 1/12, 1/24 | 1/1, 1/3 |
| Cost | Higher (filtering + decimation per octave) | Lower (one FFT, then grouping) |
A constant-percentage band gets narrower in absolute terms as the centre frequency drops, while an FFT has a constant line spacing Δf. Below roughly
fc < 4.32 · lines · Δf
the number of FFT lines inside the band becomes too small to represent it, and the band level collapses towards whatever the few surviving lines happen to contain. This is a property of the method, not a defect: it is exactly why a filter bank is used instead. A 20 Hz 1/3-octave band is only about 4.6 Hz wide — at a typical analysis resolution it may contain a handful of lines.
Filtering every band at the full sampling rate would be wasteful and numerically poor at low frequencies, so the bank decimates by one octave at a time:
Each absolute octave carries its own set of decimation low-pass coefficients. Sharing a single prototype across octaves is what makes the error grow with decimation depth, so the coefficients are stored per octave rather than reused.
Pre-averaging time × 2k. This matters when reading CPB vs Time: a slow-moving
staircase in the lowest bands is the time resolution, not the signal.
2floor(log2(round(fs·T))),
clamped to [2, 131072] — so the decimation chain divides evenly.One spectrum for the whole selected segment: every band is averaged over time according to the chosen averaging mode. This is the element to use for a stationary condition — a steady load point, an idle run, a constant-speed pass.
Band levels as a function of time, one column per pre-averaging frame. Use it to see when something appears, and in which bands. Remember the note above: the lowest bands update more slowly than the frame rate.
Band levels against a speed axis. Deepsona extracts one spectrum at the moment the speed crosses each grid value, rather than sorting frames into speed bins and averaging them.
Bands synthesised from an existing FFT spectrum rather than from a filter bank. It is the cheap option when an FFT is already available and the frequencies of interest are high enough for the line count to be adequate. When a band does not contain enough lines, the band is marked invalid rather than being given a plausible-looking number.
A, B, C and D weighting are applied in the time domain, before the signal enters the filter bank. The weighting stated on the Y axis always matches what was actually applied: if the selected weighting cannot be applied to the signal, the axis will not claim it was.
| Mode | Behaviour |
|---|---|
| Exponential — Fast | 125 ms time constant. |
| Exponential — Slow | 1 s time constant. |
| Linear (finite window) | Arithmetic mean over a fixed window. |
| Linear (whole segment) | Arithmetic mean of all frames in the segment. |
The Overall value shown alongside the bands is computed by an independent broadband time-domain chain — it is not the sum of the band levels. Both an A-weighted and a linear Overall are produced by default. Summing bands and measuring broadband give slightly different answers because the band filters overlap at their edges; the broadband chain is the one to quote.
| Parameter | Options / default | Description |
|---|---|---|
| Bands per octave | 1/1, 1/3, 1/6, 1/12, 1/24 (default 1/3) | Band width. An unsupported value falls back to 1/3 and says so in the log. |
| Lower / upper frequency | 20 Hz / 20 kHz | Band centre frequencies, not band edges. A value that is not a valid centre snaps to the nearest one, and the substitution is written to the log. |
| Pre-averaging time | 0.01 s | Detector block length. Rounded to a power of two internally. |
| Frequency weighting | Z (linear), A, B, C, D | Applied in the time domain before banding. |
| Averaging | Fast / Slow / Linear / Linear whole segment | See above. |
| Skip settling | Off by default | Discards the leading frames covering the settling time of the lowest band. Off means the start-up transient is included. |
The band range you get is not always the band range you asked for, and every reduction is logged:
© 2026 Deepsona. All Rights Reserved.