Repository navigation
Release 2.1.0
🚀 What’s New in 2.1.0
Introduces NES-inspired and Hybrid sound profiles, improving audio character with NES-style mixing, envelopes, pulse duty patterns and output filtering. This release also fixes two integer-rendering issues on no-FPU builds, reduces command queue memory usage and preserves the default Legacy output on FPU builds.
🔊 Sound Profiles
- New Sound Profiles: Adds
Legacy(default),NesandHybrid, selectable at runtime throughApuCore::setSoundProfile().Nesintroduces NES-style mixing and stepped pulse duty, whileHybridadds exponential envelopes and band-limited SAW synthesis. - NES-Style Output: Adds profile-specific filtering and level compensation for a more consistent listening experience, while preserving the original
Legacyrendering behavior. - Consistent Integer Rendering:
NesandHybriduse the same integer core across platforms, producing identical PCM output for equivalent inputs.
🔧 Changed
- Reduced Memory Usage: Lowers the default audio command queue capacity from 128 to 64, reducing
sizeof(ApuCore)on the host ABI from 22,416 to 13,344 bytes. - Configurable Legacy Float Core: Adds
PR32_APU_ENABLE_LEGACY_FLOATto optionally exclude the legacy floating-point renderer on FPU targets, reducing flash usage. - Engine Audio Integration: Updates the recommended render block sizes to 512 samples on FPU builds and 1024 on no-FPU builds, reducing processing wake-ups at the cost of increased command latency.
🐛 Fixed
- Integer DC Blocking: Fixes a persistent negative DC offset after voices are silenced on no-FPU builds.
- 100% Pulse Duty: Fixes pulse waves rendering as silence at
duty = 1.0on the integer rendering path.
🧪 Testing & Tools
- Audio Regression Tests: Adds immutable PCM reference fixtures for the
Nes,Hybridand integer rendering paths. - Audio Profiling Tools: Adds profile comparison, canonical audio rendering and host/firmware benchmarking tools.
📌 Compatibility Notes
Legacyremains the default profile and preserves its existing output on FPU builds.- On ESP32-C3,
NesandHybridare limited to 22,050 Hz with eight voices due to processing constraints. - The reduced command queue capacity may affect applications that depend on more than 63 pending commands.
- Applications using the integer path should revalidate audio levels and regenerate PCM references affected by the DC blocker fix or the new sound profiles.