flutter_audio_toolkit 0.3.5
flutter_audio_toolkit: ^0.3.5 copied to clipboard
Advanced audio plugin with native support for MP3/WAV/OGG to AAC/M4A conversion, precise trimming, waveform extraction, and comprehensive noise detection & analysis
Changelog #
0.3.5 - 2025-06-26 #
- #1 Bug Fix (Compile-time error on iOS)
0.3.4 - 2025-06-14 #
🌐 Web Platform Support (Limited) #
- NEW: Added web platform support with limited functionality
- Waveform Extraction: Web implementation generates realistic fake waveforms
- Format Support Detection: Browser codec support checking via HTML Audio API
- Audio Info Extraction: Basic metadata retrieval for web-accessible audio files
- Audio Player Compatibility: Existing audio player widgets work on web
- Clear Error Messages: Helpful error messages for unsupported operations
- Documentation: Updated README with web platform limitations and capabilities
🔧 Technical Improvements #
- Modern Web APIs: Uses
package:web
anddart:js_interop
(no deprecated APIs) - Dependency Updates: Added
flutter_web_plugins
andweb
package dependencies - Code Quality: All web implementations pass static analysis
- Platform Detection: Proper platform-specific feature availability
⚠️ Web Platform Limitations #
- Audio conversion and trimming are not supported (browser security restrictions)
- Waveform extraction returns generated patterns (Web Audio API CORS limitations)
- File system access restricted to HTTP URLs only
- Performance is limited compared to native platforms
0.3.3 - 2025-06-10 #
- Bug Fixes
0.3.2 - 2025-06-13 #
🆕 Audio Player Features #
🎵 Interactive Audio Players with Waveform Visualization
- TrueWaveformAudioPlayer: Audio player using real extracted waveform data
- FakeWaveformAudioPlayer: Audio player using generated waveform patterns
- Interactive Waveform: Tap-to-seek functionality on waveform display
- Customizable Controls: Configurable play/pause, volume, progress, and time labels
- Flexible Control Layouts: Position controls top, bottom, overlay, left, or right
- Real-time Progress: Visual progress overlay showing played portion
- Position Indicator: Real-time playback position marker on waveform
- Event Callbacks: Comprehensive event system for state, position, and error handling
🎮 Player Configuration Options
- AudioPlayerControlsConfig: Complete control customization (buttons, colors, positions)
- WaveformVisualizationConfig: Waveform styling and interaction settings
- AudioPlayerColors: Comprehensive color theming for all UI elements
- AudioPlayerCallbacks: Event handling for all player interactions
🎨 Enhanced Visual Features
- Customizable Waveform Styles: Colors, gradients, line widths, opacity
- Progress Visualization: Different colors for played/unplayed portions
- Control Theming: Fully customizable button colors and styles
- Responsive Design: Adaptive layouts for different screen sizes
🔧 Implementation Details #
- Native Audio Playback: Platform-optimized audio rendering
- Memory Efficient: Optimized waveform rendering and audio processing
- Background Threading: Audio operations on background threads
- State Management: Robust state management for player controls and visualization
📚 Documentation #
- Complete Audio Player Guide: Comprehensive guide with examples and best practices
- Example Integration: Full working example in demo app
- API Documentation: Detailed parameter documentation for all new classes
0.3.1 - 2025-06-10 #
- Fixed Dart Format Issues
0.3.0 - 2025-06-10 #
🆕 Major New Features #
🔊 Noise Detection & Audio Quality Analysis
- Comprehensive Audio Analysis: Deep analysis of audio quality with detailed metrics
- 15+ Noise Type Detection: Identify background noises like car horns, dog barking, construction, etc.
- Audio Quality Metrics: Peak levels, SNR, dynamic range, LUFS loudness measurement
- Frequency Analysis: Spectral analysis with problematic frequency band detection
- Quality Grading: Automatic quality scoring (Excellent, Good, Fair, Poor, Very Poor)
- Issue Detection: Automatic detection of clipping, distortion, and balance problems
- Network Analysis: Analyze audio quality directly from URLs
🎨 Enhanced Waveform Generation
- 25+ Waveform Patterns: Expanded from 7 to 25+ realistic patterns
- New Pattern Categories:
- Basic Waveforms:
square
,sawtooth
,triangle
(added to existing sine, random, etc.) - Musical Patterns:
electronic
,classical
,rock
,jazz
,ambient
- Voice & Speech:
podcast
,audiobook
(improved speech patterns) - Nature & Relaxation:
whiteNoise
,pinkNoise
,heartbeat
,ocean
,rain
,binauralBeats
- Basic Waveforms:
- Visual Styling System: 9 predefined color schemes with customizable visual properties
- Themed Generation: Automatic pattern-to-style matching for optimal visual presentation
- Style Application: Apply visual styles to existing waveform data
📊 Advanced Metadata Extraction
- Comprehensive Metadata: Extract 35+ metadata fields from audio files
- Cover Art Support: Extract and handle embedded album artwork
- Technical Details: Detailed codec, bitrate, and encoding information
- Date/Time Fields: Recording dates, release dates with proper DateTime handling
- Custom Fields: Support for additional metadata through extensible system
🔧 Enhanced Features #
- Improved Algorithm Accuracy: Better pattern generation algorithms for all waveform types
- Memory Optimization: More efficient audio processing and analysis
- Progress Tracking: Enhanced progress callbacks for all new operations
- Error Handling: Robust error handling for network operations and file processing
🎛️ New API Methods #
// Noise Detection & Analysis
final analysisResult = await toolkit.analyzeAudioNoise(inputPath);
final networkAnalysis = await toolkit.analyzeAudioNoiseFromUrl(url, localPath);
// Enhanced Waveform Generation
final themedWaveform = toolkit.generateThemedWaveform(pattern: WaveformPattern.jazz);
final styledWaveform = toolkit.generateStyledWaveform(pattern: WaveformPattern.electronic, style: WaveformColorSchemes.neon);
final waveformWithStyle = existingWaveform.withStyle(WaveformColorSchemes.fire);
// Advanced Metadata
final metadata = await toolkit.extractMetadata(inputPath);
final networkMetadata = await toolkit.extractMetadataFromUrl(url, localPath);
🏗️ Architecture Improvements #
- Modular Design: Separated concerns into specialized analyzer and generator modules
- Type Safety: Enhanced type definitions for all new models
- Documentation: Comprehensive dartdoc documentation for all new APIs
- Testing: 100+ new test cases covering all noise detection and enhanced waveform features
📋 New Data Models #
NoiseDetectionResult
- Complete analysis resultsAudioQualityMetrics
- Detailed quality measurementsFrequencyAnalysis
- Spectral analysis dataDetectedNoise
- Individual noise detection resultsWaveformStyle
- Visual styling configurationAudioMetadata
- Comprehensive metadata container
0.2.0 - 2025-06-08 #
Added #
- Multi-Platform Support: Added support for macOS, Linux, and Windows platforms
- macOS Implementation: Full native implementation using AVFoundation (same as iOS)
- Linux & Windows: Basic plugin structure with platform-specific error handling
- Platform Documentation: Updated README with comprehensive platform support matrix
- Desktop Compatibility: Plugin now declares support for all desktop platforms
Enhanced #
- Updated platform support matrix in README
- Added platform-specific implementation notes
- Improved plugin architecture for cross-platform compatibility
Technical Details #
- macOS: Complete AVFoundation implementation for audio conversion, trimming, and waveform extraction
- Linux: GTK-based plugin structure (requires FFmpeg/GStreamer for full functionality)
- Windows: Win32 plugin structure (requires Media Foundation/FFmpeg for full functionality)
Notes #
- Desktop platforms (Linux, Windows) have basic plugin structure but require additional audio processing libraries
- macOS has full feature parity with iOS using the same AVFoundation APIs
0.1.0 - 2025-06-07 #
Added #
- Fake Waveform Generation: Generate realistic waveform patterns for testing and previews
- 7 Waveform Patterns: Sine, Random, Music, Speech, Pulse, Fade, and Burst patterns
- Network URL Support: Process audio files from network URLs with fake waveform generation
- Modular Architecture: Complete refactoring of example app with Provider state management
- Enhanced Example App: Added fake waveform UI with pattern selection and color-coded display
- Pattern-specific amplitude algorithms for realistic waveform simulation
- URL validation and network audio file support
- Comprehensive testing for fake waveform functionality
Enhanced #
- Example app refactored from 1180 lines to 122 lines (89% reduction)
- Added Provider state management pattern
- Extracted business logic into service classes
- Modularized UI components into reusable widgets
- Improved error handling and progress tracking
Fixed #
- Library formatting and method signature issues
- Enhanced dependency management
0.0.1 - 2025-06-07 #
Added #
- Initial release of flutter_audio_toolkit plugin
- Audio conversion from MP3, WAV, OGG to AAC/M4A formats
- Audio trimming with precise time range selection
- Waveform data extraction for visualization
- Native implementations for Android (MediaCodec/MediaMuxer) and iOS (AVFoundation)
- Progress tracking for all operations
- Audio file information retrieval
- Comprehensive example app with UI for all features
- Full test coverage including unit and widget tests
- Platform-specific permission handling
- Error handling and validation
- Performance optimized for large audio files
Platform Support #
- Android: API 21+ using MediaCodec, MediaMuxer, MediaExtractor
- iOS: 12.0+ using AVAssetExportSession, AVAudioConverter, AVAssetReader
Features #
- Convert audio files between formats
- Trim audio files to specific time ranges
- Extract waveform amplitude data
- Get detailed audio file information
- Real-time progress callbacks
- Native performance optimization