| Click at fixed buffer-length intervals | Buffer boundary discontinuity — uninitialized tail, missing sample-accurate fade | audio-dsp-review: check process entry/exit |
| Click correlates with xrun log | CPU overload — audio thread missed deadline | audio-dsp-review: scan for allocations, locks, I/O |
| Crackling scales with signal amplitude | Clipping or fixed-point overflow | audio-numerics-review: overflow, Q-format multiply |
| Crackling on silent decay | Denormal floats — FTZ absent | audio-numerics-review: denormal section |
| Dropout / silence under load | xrun, NaN propagation, or buffer too small for latency | audio-dsp-review + audio-numerics-review: NaN guards |
| Silence after large value | NaN propagated from unclamped sqrt / division | audio-numerics-review: NaN / Inf section |
| DC offset from first sample | Uninitialized filter state or delay line | audio-numerics-review: precision loss / state init |
| DC offset after long silence | FTZ leaving near-zero state; missing high-pass | audio-numerics-review: denormal / FTZ section |
| Aliasing pitch-tracks with note | Oscillator not bandlimited; no anti-alias before downsampling | audio-numerics-review: check sample-rate handling |
| Stereo collapses to mono | Unmatched processing on L/R; phase inversion | audio-dsp-review: check parallel path symmetry |
| Comb filtering on mono | Latency mismatch on parallel paths | Plugin reports incorrect getLatencySamples() |
| Latency wrong at buffer-size change | Plugin caches latency at init only; not updated on reconfigure | audio-dsp-review: check prepareToPlay reset |