Buffer Management Module¶
Professional audio buffer management system for AudioLab.
📁 Structure¶
05_buffer_management/
├── 00_buffer_types/ # Core buffer types (audio, planar, interleaved)
├── 01_buffer_operations/ # Buffer operations (copy, fill, mix)
├── 02_buffer_pools/ # Memory management (pooling, RAII)
├── 03_specialized_buffers/ # Specialized buffers (delay, lookahead, crossfade)
├── examples/ # Complete usage examples
│ ├── delay_effect.cpp # Delay/echo effect
│ ├── lookahead_limiter.cpp # Lookahead limiter
│ └── wavetable_synth.cpp # Wavetable synthesizer
└── tests/ # Test suites
🚀 Quick Start¶
Build¶
Run Examples¶
# Delay effect
./examples/delay_effect
# Lookahead limiter
./examples/lookahead_limiter
# Wavetable synth
./examples/wavetable_synth
Run Tests¶
📚 Components¶
DelayBuffer¶
Circular delay buffer with fractional delay support:
#include "delay_buffer.hpp"
DelayBuffer delay(48000); // 1 second max
delay.write(input);
float output = delay.readLinear(12345.67f); // Fractional delay
LookaheadBuffer¶
Buffer for lookahead processing (limiters, compressors):
#include "lookahead_buffer.hpp"
LookaheadBuffer lookahead(240); // 5ms at 48kHz
lookahead.write(input);
float peak = lookahead.getPeakLookahead();
float delayed = lookahead.readCurrent();
CrossfadeBuffer¶
Dual buffer for smooth crossfading:
#include "crossfade_buffer.hpp"
CrossfadeBuffer xfade(2048);
xfade.setBufferA(wavetable1, 2048);
xfade.setBufferB(wavetable2, 2048);
float sample = xfade.read(index, 0.5f); // 50% crossfade
✅ Features¶
- ✅ Zero-allocation in audio thread
- ✅ SIMD-friendly data layout
- ✅ Fractional delay with interpolation
- ✅ Memory pooling for temporary buffers
- ✅ RAII resource management
- ✅ Comprehensive test coverage
📖 Documentation¶
See individual header files for detailed API documentation.
🔗 Dependencies¶
- C++20 compiler
- CMake 3.20+
- Google Test (for tests, auto-downloaded)
📄 License¶
Part of AudioLab - Professional Audio Processing Framework