<< All versions

Skill v1.0.0

currentAutomated scan100/100
gourdja/sonic-skills/audio-numerics-review
──Details
PublishedSeptember 28, 2026 at 03:10 AM
Content Hashsha256:1959446555f9790c...
Git SHA818446b36771
──Files
Files (1 file, 3.2 KB)
SKILL.md3.2 KBactive
SKILL.md · 74 lines · 3.2 KB

version: "1.0.0" name: audio-numerics-review description: > Reviews audio DSP code for numerical correctness. Use when the user asks to review, audit, or check DSP code for correctness issues — filters, feedback loops, fixed-point arithmetic, accumulation loops, or any numeric computation in audio code. Trigger on "check this filter for NaN", "why does my reverb blow up?", "is this numerically stable?", "why do I hear DC in my output?". Pairs with audio-dsp-review (realtime safety); this skill covers numeric correctness. Flag issues proactively.


Audio Numerics Review

Floating-point is not real math. IEEE 754 edge cases — denormals, NaN propagation, catastrophic cancellation, precision loss — silently produce wrong audio output without crashing. You won't find them with a debugger; you find them by knowing where to look.

Step 1 — Find numeric-critical paths

Locate every function doing floating-point or integer DSP: filter state loops, feedback delay lines, envelope followers, RMS/energy accumulators, pitch detectors, fixed-point paths (CMSIS-DSP, SIMD int16/int32), any division whose denominator may be zero.

Step 2 — Scan for violations

ViolationWhere to lookSymptom
Denormal floatsIIR state vars, reverb tanks, delay feedbackSudden 100× CPU spike when signal decays
NaN / InfDivisions, sqrt, acos/asin, peak normalizersSilence or noise that can't be traced
Catastrophic cancellationDC-blocking filters, near-Nyquist biquads, first-order diffNoise floor jumps, loss of precision
Fixed-point overflowQ15/Q31 multiply, CMSIS paths, SIMD int16Audible distortion / wrapping
Precision lossRMS/energy sums, mixing buses, long loopsAccumulated DC offset, incorrect levels
FTZ/DAZ absentprepareToPlay/stream-open — no mode setupDenormals hit on some hosts but not others

For code examples and platform-specific notes see references/numerics-pitfalls.md.

Step 3 — Write the review

## Audio Numerics Review: `[file / function]`
### Verdict
[Safe | Has critical violations | Warnings only] — one sentence summary
### Critical Violations
**[Category]: [description]**
`file:line` — `offending code`
Why: one sentence on the numeric risk
Fix: concrete suggestion
### Warnings
[same format]
### What's Done Well
[guarded divisions, double accumulators, FTZ setup, etc.]
### Recommended Fixes (priority order)
1. ...

Quick fix table

ViolationSafe alternative
Denormal in feedbackScopedNoDenormals; FTZ+DAZ in prepareToPlay; DC-offset clamp
Division by zero(denom > 1e-6f) ? num/denom : fallback
sqrt/acos/asin unclampedstd::sqrt(std::max(0.f, x)), std::clamp inputs
NaN propagating silentlyassert(!std::isnan(y)) in debug; validate at entry points
Cancellation in coefficientsCompute coefficients in double; use numerically stable forms
Fixed-point overflowPromote to wider type before multiply; __SSAT, CMSIS saturating ops
Precision loss in long sumdouble accumulator or Kahan compensated summation
FTZ/DAZ absentSet explicitly in prepareToPlay; use ScopedNoDenormals per-block
All versions