v1.3.2
๐ก๏ธ Audio Engine Hardening
This release is a comprehensive reliability overhaul of FineTune's audio engine โ no new features, just a significantly more robust experience under the hood.
๐ Crash Recovery
- Orphaned device cleanup โ If FineTune crashes or is force-quit, aggregate devices are now cleaned up automatically on next launch, preventing the "apps go silent" issue
- Signal-safe crash guard โ Aggregate devices are destroyed during crashes before the process exits, reducing orphaned devices in the first place
๐๏ธ EQ & Audio Quality
- Soft limiter โ Post-EQ clipping prevention catches digital distortion when bands are boosted aggressively
- Preamp attenuation โ Signal is reduced before EQ processing proportional to max boost, preventing internal clipping
- Nyquist guard โ EQ bands near or above the Nyquist frequency (e.g. 16kHz at 32kHz sample rate) now pass through cleanly instead of producing robotic artifacts
- High sample rate support โ Fixed unstable biquad filters on 96kHz+ devices
๐๏ธ Bluetooth & Voice Apps
- Bluetooth HFP distortion โ Fixed audio distortion when using Bluetooth headphones with voice apps like FaceTime, Discord, and Zoom
- Extended Bluetooth warmup โ Bluetooth device switches now use a 300ms warmup (vs 50ms wired) to account for firmware handshake latency
- Rapid reconnect handling โ Fixed race conditions during rapid Bluetooth connect/disconnect cycles
๐ Device Switching
- Crossfade state machine โ Device switches use a proper RT-safe state machine, eliminating race conditions that could cause glitches
- Correct teardown order โ Tap lifecycle management enforces Stop โ DestroyIOProc โ DestroyAggregate โ DestroyTap ordering, preventing resource leaks
- Re-entrant switch guard โ Rapidly switching devices no longer causes resource leaks from overlapping crossfades
๐ Volume Control
- Fallback chain โ Volume reading now tries VirtualMainVolume โ VolumeScalar โ channel 1, supporting more diverse hardware
- Correct API usage โ VirtualMainVolume queries now use AudioHardwareService APIs (matches system volume slider behavior)
๐ Bug Fixes
- DDC monitor leak โ Fixed io_service_t resource leak and observer cleanup race in DDC controller
- Monitor deinit โ Added proper observer cleanup on deallocation for DDC, audio device, and process monitors
- Volume listener lifecycle โ Overhauled DeviceVolumeMonitor to properly register and unregister HAL listeners
- Mono device check โ Fixed off-by-one in stream readiness check for mono output devices
- Escape to dismiss โ Press Escape to close the menu bar popup (with smooth animation)
- Percentage width โ Fixed UI jitter in the percentage display field
What's Changed
- Fix percentage width UI glitch by using fixed width instead of minWidth by @fcsonline in https://github.com/ronitsingh10/FineTune/pull/94
- feat(ui): add Escape key to dismiss menu bar popup by @AbdulEmad in https://github.com/ronitsingh10/FineTune/pull/97
New Contributors
- @fcsonline made their first contribution in https://github.com/ronitsingh10/FineTune/pull/94
- @AbdulEmad made their first contribution in https://github.com/ronitsingh10/FineTune/pull/97
Full Changelog: https://github.com/ronitsingh10/FineTune/compare/v1.3.1...v1.3.2