summaryrefslogtreecommitdiff
path: root/src/audio/ola.h
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-28 18:45:42 +0100
committerskal <pascal.massimino@gmail.com>2026-03-28 20:14:59 +0100
commit8bee7577cba9f55be8bc404038d5df959595b989 (patch)
tree4a228f02a3345d9e1275b9e0949d2fb5d6d1864a /src/audio/ola.h
parent37df61d1a0dbd5e253f9db778c17c4187e453b8d (diff)
fix(audio): fix early timing drift in tracker, use ola_decode_frame in synth
- Replaced chunk_frames truncation accumulation with accurate double-precision integration in audio_render_ahead. - Updated tracker to use double-precision time representations for exact sample-accurate scheduling. - Extracted ola_decode_frame to handle per-frame OLA-IDCT synthesis in synth.cc. - Updated TODO.md for completed audio tasks. handoff(Claude): Audio timing drift and OLA-IDCT enhancement resolved.
Diffstat (limited to 'src/audio/ola.h')
-rw-r--r--src/audio/ola.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/audio/ola.h b/src/audio/ola.h
index 2d6267e..1fb2a4a 100644
--- a/src/audio/ola.h
+++ b/src/audio/ola.h
@@ -18,3 +18,9 @@ void ola_encode(const float* pcm, int n_samples, float* spec, int num_frames);
// Hann at 50% overlap satisfies w[n]+w[n+H]=1 → perfect reconstruction.
// pcm must hold num_frames * OLA_HOP_SIZE floats.
void ola_decode(const float* spec, int num_frames, float* pcm);
+
+// Single-frame OLA-IDCT decoder.
+// spec_frame: single DCT_SIZE spectral frame.
+// overlap: OLA_OVERLAP buffer (read/write). Must be zero-initialized for first frame.
+// out_hop: OLA_HOP_SIZE buffer for the resulting time-domain samples.
+void ola_decode_frame(const float* spec_frame, float* overlap, float* out_hop);