- Move shared buffer headers and source into TapOutUgen repo (or use as submodule)
- Replace test audio buffers with
SharedRingBufferReaderin TapOutUGen.cpp - Ensure build system (CMake) includes the buffer code
- Convert
circular_reader_testto support continuous streaming - Track last read index and support wraparound reads
- Prevent duplicate or missed reads in continuous mode
- Write unit test that:
- Writes a known sine wave to buffer
- Reads from buffer
- Verifies amplitude and frequency match original (within epsilon)
- Improve cleanup tool (
cleanup_shared_memory) - Add signal handler to writer to release segment on crash
- Optional: watchdog tool to monitor stale shared segments
- Move ringbuffer logic to
ringbuffermodule/namespace - Add CMake options to include/exclude test apps
- Link ringbuffer to TapOutUgen and unit test targets
- Add logging/timing for:
- Time between writes
- Buffer underruns or overruns
- Missed reads or lag
- Ensure
getLatestSamplesavoids heap allocation inside audio callback - Avoid mutex locks in real-time audio path
- Preallocate read buffer in TapOutUgen and reuse
This checklist helps finalize the integration of shared ring buffers into TapOutUgen and ensure robust, real-time performance with testability and maintainability.