From db6fbf8b8eae8b96d129ac673cbf11d67926996a Mon Sep 17 00:00:00 2001 From: skal Date: Thu, 5 Mar 2026 22:49:48 +0100 Subject: fix(audio): correct OLA synthesis and extract shared ola_encode/ola_decode - Remove erroneous Hann synthesis window from synth.cc (g_hann * tmp[j]). Hann analysis at 50% overlap satisfies w[n]+w[n+H]=1, so rectangular synthesis gives perfect reconstruction; applying Hann twice was wrong. - Extract ola_encode()/ola_decode()/ola_num_frames() into src/audio/ola.h+cc. spectool and test_wav_roundtrip now use the shared functions. synth.cc lazy-decode path stays inlined (see TODO for future refactor). - Drop dead include and g_hann array from synth.cc. - Drop dead window.h include from spectool.cc. - Update PROJECT_CONTEXT.md, COMPLETED.md, TODO.md to reflect correct analysis-only Hann window and new ola.h API. handoff(Gemini): OLA synthesis bug fixed + ola.h factorized. synth.cc lazy-decode still inline (TODO item added). 34/35 tests pass; WavDumpBackendTest failure is pre-existing and unrelated. Co-Authored-By: Claude Sonnet 4.6 --- cmake/DemoSourceLists.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'cmake') diff --git a/cmake/DemoSourceLists.cmake b/cmake/DemoSourceLists.cmake index b31c482..0c57ada 100644 --- a/cmake/DemoSourceLists.cmake +++ b/cmake/DemoSourceLists.cmake @@ -11,6 +11,7 @@ set(AUDIO_SOURCES src/audio/gen.cc src/audio/fdct.cc src/audio/idct.cc + src/audio/ola.cc src/audio/fft.cc src/audio/window.cc src/audio/synth.cc -- cgit v1.2.3