From 11486d634c865aca944f9691e3bdb2be83adc79a Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 2 Mar 2026 09:40:18 +0100 Subject: docs: update PROJECT_CONTEXT, TODO, COMPLETED for OLA-IDCT - PROJECT_CONTEXT: audio section reflects OLA-IDCT (Hann, 50% overlap); test count 35->34; Next Up notes .spec regen needed - TODO: remove stale MP3 sub-task (done), trim test TODOs, add .spec regen as Priority 3, update test count to 34/34 - COMPLETED: archive OLA-IDCT task with implementation summary --- doc/COMPLETED.md | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'doc') diff --git a/doc/COMPLETED.md b/doc/COMPLETED.md index 0dba307..e37ddbf 100644 --- a/doc/COMPLETED.md +++ b/doc/COMPLETED.md @@ -29,6 +29,15 @@ Detailed historical documents have been moved to `doc/archive/` for reference: Use `read @doc/archive/FILENAME.md` to access archived documents. +## Recently Completed (March 2, 2026) + +- [x] **OLA-IDCT Synthesis — click-free .spec decoding** + - **Goal**: Eliminate frame-boundary clicks in spectrogram→PCM synthesis. + - **Implementation**: Added v2 spectrogram format (`SPEC_VERSION_V2_OLA`). Synthesis uses Hann-windowed IDCT with 50% overlap-add (hop=256, overlap=256). Per-voice `overlap_buf[256]` accumulates the tail from the previous IDCT frame. V1 path (raw DCT-512) preserved for generated notes and old `.spec` files. Hann window precomputed at `synth_init()`. MP3 encoder switched from Hamming to Hann, now slides a 512-sample analysis window by 256 samples per frame (OLA analysis), emitting ~2× as many frames. `SpecHeader.version` field propagated through `Spectrogram.version` to the voice's `ola_mode` flag at trigger time. + - **Files**: `src/audio/dct.h`, `src/audio/synth.h`, `src/audio/synth.cc`, `src/audio/window.h`, `src/audio/window.cc`, `src/audio/tracker.cc` + - **Tests**: 34/34 passing + - **Pending**: Regenerate `.spec` files from MP3 assets to activate v2 encoding. + ## Recently Completed (February 21, 2026) - [x] **WGSL Refactor: getScreenCoord Helper** -- cgit v1.2.3