audio-artifacts-debug · git:20260515.3a80b75 · 2026-05-15 · sha256 b50d6587baec7df6
audio-artifacts-debug git:20260515.3a80b75A
Immutable. This exact content is served forever at /api/v1/blob/b50d6587baec7df6.
--- name: audio-artifacts-debug description: > Systematic checklist for diagnosing audio artifacts. Use when the user describes a sound quality problem — clicks, pops, crackling, silence, DC offset, aliasing, phase issues, or latency problems. Trigger on phrases like "why do I hear clicks?", "my output has DC offset", "there's aliasing in my oscillator", "phase is wrong in mono", "dropout when CPU spikes". Pairs with audio-dsp-review (realtime safety) and audio-numerics-review (numeric correctness) — use those to fix once the cause is found. --- # Audio Artifacts Debug Audio artifacts have diagnostic signatures — match the symptom to the root cause before touching code. ## Step 1 — Characterize the artifact Ask these questions before reading any code. | Artifact type | Questions to ask | |---------------|-----------------| | **Clicks / pops** | Regular or random? On buffer boundaries? At note on/off? After channel strip toggle? | | **Crackling / distortion** | Constant or load-dependent? Does it correlate with signal level? Worse on silent decay? | | **Silence / dropout** | Immediate or gradual? Only under load? After a specific number of voices? Recovers? | | **DC offset** | Constant or drift? Present from first sample? Appears only after long silence? | | **Aliasing** | Audible as high-frequency mirror tones? Pitch-dependent? Present at all sample rates? | | **Phase issues** | Stereo image collapse in mono? Comb filtering? Only on parallel paths or mid-side? | | **Latency** | DAW reports wrong delay compensation? Wet/dry misaligned? Only at certain buffer sizes? | ## Step 2 — Narrow to root cause | Symptom | Likely cause | Skill / check to apply | |---------|-------------|----------------------| | 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 | ## Step 3 — Structured diagnosis report ``` ## Audio Artifact Diagnosis: `[file / symptom]` ### Artifact characterization Type: [clicks | crackling | silence | DC | aliasing | phase | latency] Observed: [when / under what conditions] Reproducible: [always | intermittent | load-dependent] ### Root cause hypothesis Likely cause: [one sentence] Evidence: [what in the code supports this] Skill to apply: [audio-dsp-review | audio-numerics-review | both] ### Specific checks to run 1. [file:line] — [what to inspect] 2. ... ### Recommended fix [Concrete action — no placeholder text] ``` For artifact-specific diagnostic questions and check-by-check references see `references/artifact-patterns.md`.