From 2f8926f433248af28081497e8371e02abe61d6ff Mon Sep 17 00:00:00 2001 From: skal Date: Thu, 5 Mar 2026 21:50:53 +0100 Subject: feat(spectool): add --wav decode, IMDCT, and roundtrip test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - spectool --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 --- doc/TOOLS_REFERENCE.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'doc/TOOLS_REFERENCE.md') diff --git a/doc/TOOLS_REFERENCE.md b/doc/TOOLS_REFERENCE.md index 61412a9..f99d213 100644 --- a/doc/TOOLS_REFERENCE.md +++ b/doc/TOOLS_REFERENCE.md @@ -26,24 +26,21 @@ Comprehensive reference for all developer tools in the project. cmake -S . -B build -DDEMO_BUILD_TOOLS=ON cmake --build build -j4 -# Analyze WAV → .spec +# Analyze WAV/MP3 → .spec (v2 OLA format) ./build/spectool analyze input.wav output.spec +./build/spectool analyze input.wav output.spec --normalize # normalize to RMS 0.15 +./build/spectool analyze input.wav output.spec --normalize 0.20 # custom RMS target -# Play .spec file -./build/spectool play input.spec -``` - ---- +# Decode .spec → mono 16-bit WAV (32 kHz, IDCT-OLA synthesis) +./build/spectool --wav input.spec output.wav -## specview (Visualization) +# Play .spec file via audio device +./build/spectool play input.spec -```bash -# View spectrogram -./build/specview input.spec +# Generate test spectrogram (C major scale) +./build/spectool test_gen output.spec ``` -Displays spectrogram visualization. - --- ## specplay (Diagnostic) -- cgit v1.2.3