FA-91685 / Digital signal filters / Member archive
Resampling plan swaps the interpolation and decimation factors · case 05
48 kHz to 44.1 kHz is planned as up 160, down 147 instead of up 147, down 160.
Case contract
Input [fin, fout, rolloff] (positive integer rates, rolloff in (0, 1]). Reduce fout/fin to up/down = L/M by gcd, intermediate rate = fin L, anti-alias cutoff = min(fin, fout)/2 * rolloff in Hz and normalized to the intermediate Nyquist. Return {"up", "down", "intermediate_rate", "cutoff_hz", "cutoff_norm"} or "bad-spec".
Why this case matters
Sample-rate converters are planned from these numbers; a wrong cutoff reference aliases or dulls the output.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: 48k to 44.1k | {"cutoff_hz": "19845", "cutoff_norm": "1323/256000", "down": 147, "intermediate_rate": 7680000, "up": 160} | {"cutoff_hz": "19845", "cutoff_norm": "9/1600", "down": 160, "intermediate_rate": 7056000, "up": 147} | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗