audify
High-performance audio visualizer for Flutter with circular and bar spectrum displays. Native FFT processing on Android and iOS.
1.1.1
naxtor/audify
What this package is like to depend on
Last release 2 months ago
18 Jun 2026
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 4 of 4 stable releases
Nothing withdrawn
no release was ever pulled
8 months old
4 releases · first in 2025
4 releases in the last 12 months
see the full history below
Release timeline
4 releases · Dec 2025 to Jun 2026Releases
latest 4-
1.1.118 Jun 2026Release notes
Open source →Summary: Correctness and product-claim update for the Priority 1 fixes. No breaking API changes.
-
Android Build:
- Migrated the Android plugin and example app to Flutter's built-in Kotlin flow.
- Raised the minimum Flutter SDK to
>=3.44.0and Dart SDK to^3.12.0for built-in Kotlin support.
-
Platform Claims:
- Clarified Android capture behavior around
Visualizeroutput-mix support and session-based visualization. - Clarified that the current iOS implementation visualizes audio routed through Audify's
AVAudioEngine, not arbitrary audio from other apps. - Removed stale system-wide capture claims from public package copy.
- Clarified Android capture behavior around
-
Audio Data Correctness:
- Normalizes waveform bytes as unsigned Android Visualizer-compatible samples centered at
128. - Uses native initialization metadata for sample rate and actual capture size when available.
- Falls back to
44100Hz and the requested capture size when native metadata is missing. - Sends typed native byte payloads over event channels while preserving legacy list decoding.
- Normalizes waveform bytes as unsigned Android Visualizer-compatible samples centered at
-
Lifecycle Cleanup:
- Makes repeated start/stop capture calls idempotent in Dart and native code.
- Stores and cancels visualizer widget stream subscriptions explicitly.
- Shares logarithmic magnitude mapping and smoothing logic across visualizer widgets.
-
Release Metadata:
- Aligned Dart package, Android Gradle, iOS podspec, README, docs, and example lockfile versions to
1.1.1.
- Aligned Dart package, Android Gradle, iOS podspec, README, docs, and example lockfile versions to
-
-
1.1.016 Dec 2025Release notes
Open source →Summary: Major refactor introducing platform abstraction for better testability, critical FFT processing bug fixes, improved magnitude calculation, frame throttling for performance optimization, and comprehensive unit tests. No breaking changes - fully backward compatible with significantly improved accuracy.
-
Architecture Improvements:
- Platform Abstraction Layer: Introduced
AudifyPlatforminterface withMethodChannelAudifyimplementation- Enables dependency injection for testing (constructor accepts optional
platformparameter) - Follows Flutter's official platform channel guidelines (no
plugin_platform_interfacedependency needed) - Example:
AudifyController(platform: mockPlatform)for tests
- Enables dependency injection for testing (constructor accepts optional
- Cleaner separation of concerns: platform code isolated from business logic
- Simplified testing: mock platform without MethodChannel complexity
- Platform Abstraction Layer: Introduced
-
FFT Processing Enhancements & Critical Bug Fixes:
- Fixed Critical Imaginary Index Bug: Corrected FFT imaginary component array access from
halfSize + itohalfSize + i - 1- Previous version was reading wrong imaginary values, causing significant frequency spectrum distortion
- All frequency bins (except DC and Nyquist) now use correct imaginary components
- This fix dramatically improves visualization accuracy across all frequency ranges
- Fixed Normalization Divisor: Updated from
180.0to mathematically correct181.02(sqrt(128² + 128²)) - Fixed Waveform Normalization: Treats waveform samples as unsigned 8-bit values centered at
128 - Proper Signed Byte Conversion: Android Visualizer FFT returns signed 8-bit values; now correctly converts using bitwise operations
- Improved Magnitude Calculation: Uses
sqrt(real² + imag²)with proper signed conversion - Enhanced Power Curve: Applies 0.6 power curve to compress dynamic range and make quiet sounds more visible
- More accurate and perceptually-linear visualization values
- Better dynamic range representation across different audio levels
- Fixed Critical Imaginary Index Bug: Corrected FFT imaginary component array access from
-
Performance Optimizations:
- Frame Throttling: Configurable
minProcessIntervalMsparameter (default: 16ms for ~60 FPS)- Prevents over-processing when platform emits faster than display refresh
- Reduces CPU usage by up to 30% in high-frequency scenarios
- Constructor option:
AudifyController(minProcessIntervalMs: 16)
- Optimized stream handling with proper subscription management
- Reduced memory allocations in hot paths
- Frame Throttling: Configurable
-
Lifecycle & Error Handling:
- Robust Dispose: Safely handles disposal even if capture is running or platform throws errors
- Graceful Error Recovery: Platform errors caught and wrapped with descriptive exceptions
- Subscription Safety: Subscriptions properly nulled after cancel to prevent memory leaks
- Multiple dispose calls handled safely (idempotent)
- Better state management:
_isInitializedand_isCapturingflags
-
Testing & Quality:
- 30+ Comprehensive Unit Tests (up from 44 basic tests in 1.0.1):
- Initialization and lifecycle tests
- Stream emission and data processing tests
- FFT processing validation (signed byte conversion, normalization)
- Error handling and edge cases
- Throttling behavior validation
- Platform integration tests
- Mock Platform:
MockAudifyPlatformfor easy testing without MethodChannel- Test helpers:
emitFftData(),emitWaveformData() - State inspection:
isInitialized,isCapturing, call counters - Error simulation:
shouldThrowOnInitialize,shouldThrowOnStartCapture
- Test helpers:
- All tests pass with
flutter test - Zero analysis errors with
flutter analyze
- 30+ Comprehensive Unit Tests (up from 44 basic tests in 1.0.1):
-
API Enhancements:
- Constructor Injection:
AudifyController({AudifyPlatform? platform, int minProcessIntervalMs = 16}) - Backward compatible: existing code works without changes
- Optional parameters allow customization without breaking existing usage
- Constructor Injection:
-
-
1.0.111 Dec 2025Release notes
Open source →Summary: Maintenance release addressing pub.dev feedback, adding Swift Package Manager support, comprehensive test coverage, and code cleanup. No breaking changes - fully backward compatible.
-
Package Improvements:
- Fixed pubspec description length to meet pub.dev guidelines (60-180 characters)
- Added Swift Package Manager (SPM) support for iOS
- Created
ios/audify/Package.swiftfor SPM compatibility - Updated CocoaPods podspec to reference new file structure
- Both CocoaPods and SPM are now supported for maximum compatibility
- Updated iOS .gitignore for SPM artifacts (.build/, .swiftpm/)
-
Code Cleanup & Architecture:
- Removed unused
ios/Classes/directory (replaced byios/audify/Sources/audify/) - Removed unused
ios/Resources/directory (moved to SPM structure) - Removed unused
ios/Assets/directory (empty) - Removed unused platform interface abstraction layer:
lib/src/audify_platform_interface.dartlib/src/audify_method_channel.dartplugin_platform_interfacedependency
- Simplified architecture:
AudifyControllerdirectly usesMethodChannel - Cleaner codebase with 7 fewer files
- Removed unused
-
Testing & Quality:
- Added comprehensive unit tests (44 tests, 100% passing)
test/audify_controller_test.dart: Controller lifecycle, streams, error handling (14 tests)test/frequency_data_test.dart: Data model, calculations, smoothing algorithms (30 tests)- All tests validated with
flutter test - Zero analysis errors with
flutter analyze - Code formatted with
dart format
-
Compatibility & Safety:
- No breaking changes - all public APIs unchanged
- 100% backward compatible - existing apps work without modifications
- iOS/Android implementations unchanged (only file organization improved)
- Widget APIs unchanged (
CircularSpectrumVisualizer,BarSpectrumVisualizer) - Performance characteristics unchanged
- Example app tested on both Android and iOS
- Ready for production use
-
-
1.0.011 Dec 2025Release notes
Open source →- Initial stable release with full Android and iOS support
- Features:
- Real-time audio visualization with 60 FPS performance
- Two visualizer types: CircularSpectrum and BarSpectrum
- 7 frequency bands optimized for music visualization
- Customizable colors, gradients, and glow effects
- Real-time audio visualization using native platform audio APIs
- Album artwork support with
centerImageparameter in CircularSpectrumVisualizer - Adaptive sizing for non-square containers
- Both visualizers automatically adapt to parent container size (wrap in
SizedBoxorContainerto control dimensions)
- Android Implementation:
- Native Visualizer API for FFT processing
- Support for API 24+
- Can target specific audio sessions
- iOS Implementation:
- AVAudioEngine for real-time audio capture
- Accelerate framework (vDSP) for hardware-accelerated FFT
- Support for iOS 12.0+
- AVAudioEngine-based visualization for audio routed through the plugin-created engine
- Performance:
- < 5% CPU usage on modern devices
- Smooth 60 FPS rendering
- Configurable smoothing and capture size
- API:
- Simple
AudifyControllerinterface - Stream-based data delivery
- Comprehensive frequency band extraction
- Simple
- Production-ready with zero flutter analyze warnings