diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-05 21:50:53 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-05 21:50:53 +0100 |
| commit | 2f8926f433248af28081497e8371e02abe61d6ff (patch) | |
| tree | 30e480325e2b7f01947a5ca2f8b3865e600d8bb7 /src/audio/dct.h | |
| parent | e2c3c3e95b6a9e53b4631b271640bb9914f8c95e (diff) | |
feat(spectool): add --wav decode, IMDCT, and roundtrip test
- spectool --wav <input.spec> <output.wav>: decodes .spec to mono 16-bit
WAV at 32 kHz using IDCT-OLA synthesis (no synthesis window).
The analysis Hann window at 50% overlap satisfies w[n]+w[n+H]=1,
so the synthesis window must be rectangular for perfect reconstruction.
- Add imdct_512 / imdct_fft to audio lib (fft.cc, fft.h, idct.cc, dct.h)
for future MDCT-based synthesis.
- test_wav_roundtrip: in-process OLA analyze+decode SNR test (≥30 dB).
Currently measures 53 dB on a 440 Hz sine.
- Fix stale test_spectool.cc: version assertion updated from 1 to
SPEC_VERSION_V2_OLA (was always wrong since OLA fix landed).
- Docs: TOOLS_REFERENCE.md removes dead specview, documents --wav /
--normalize / test_gen. HOWTO.md adds decode section. TRACKER.md
notes spec v2 OLA format and decode command.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'src/audio/dct.h')
| -rw-r--r-- | src/audio/dct.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/audio/dct.h b/src/audio/dct.h index ec9f651..ca423c2 100644 --- a/src/audio/dct.h +++ b/src/audio/dct.h @@ -11,3 +11,6 @@ // Forward declarations void fdct_512(const float* input, float* output); void idct_512(const float* input, float* output); +// IMDCT: N=512 coefficients -> 2*DCT_SIZE=1024 samples. +// Window with Hann(1024) and OLA with hop DCT_SIZE for perfect reconstruction. +void imdct_512(const float* input, float* output); |
