Phonic

A unified audio metadata tagging library for Dart that provides a format-agnostic interface for reading and writing audio metadata tags across different container formats. Work with MP3, FLAC, OGG, Opus, and MP4 files using a single, consistent API without needing to understand the complexities of ID3, Vorbis Comments, or MP4 atoms.

✨ Key Features

  • 🎡 Format Agnostic - Unified API across ID3v1, ID3v2.x, Vorbis Comments, MP4 atoms
  • πŸ–ΌοΈ Smart Artwork - Lazy loading and memory-optimized image handling
  • ⚑ Performance - Streaming operations for large collections
  • πŸ”§ Type Safe - Strong typing with Dart enums and sealed classes
  • πŸ›‘οΈ Robust - Comprehensive error handling and validation
  • πŸ“Š Capability Aware - Format-specific constraint handling

πŸ“¦ Supported Formats

Format Extension Container Read Write Artwork
MP3 .mp3 ID3v1/v2.x βœ… βœ… βœ…
FLAC .flac Vorbis Comments βœ… βœ… βœ…
OGG Vorbis .ogg Vorbis Comments βœ… βœ… βœ…
Opus .opus Vorbis Comments βœ… βœ… βœ…
MP4/M4A .mp4, .m4a MP4 Atoms βœ… βœ… βœ…

πŸ”§ Installation

Add phonic to your pubspec.yaml:

dependencies:
  phonic: <latest>

πŸ“– Quick Start

import 'package:phonic/phonic.dart';

// Load and read metadata
final audioFile = await Phonic.fromFile('song.mp3');
final title = audioFile.getTag(TagKey.title);
print('Title: ${title?.value}');

// Modify and save
audioFile.setTag(TitleTag('New Title'));
final updatedBytes = await audioFile.encode();
await File('updated_song.mp3').writeAsBytes(updatedBytes);

audioFile.dispose();

πŸ“š Documentation

Core Topics

Advanced Topics

Reference

🀝 Contributing

We welcome contributions! Areas where help is needed:

  • Additional format support (FLAC, OGG, MP4)
  • Testing and bug fixes
  • Documentation improvements
  • Performance optimizations

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Phonic - Because metadata should be simple, not format-dependent.

Libraries

phonic
Phonic - A unified audio metadata tagging library for Dart.