phonic library
Phonic - A unified audio metadata tagging library for Dart.
This library provides a format-agnostic interface for reading and writing audio metadata tags across different container formats (ID3v1, ID3v2.x, Vorbis Comments, MP4 atoms).
Key Features
- Type-safe enums: TextEncoding and MimeType enums provide better type safety and IDE support compared to string constants
- Format capabilities: TagCapability system defines what each format supports
- Lazy loading: ArtworkData supports efficient memory usage with lazy image loading
- Unified API: Consistent interface across different container formats
Example Usage
import 'package:phonic/phonic.dart';
// Load audio file and read metadata
final audioFile = await Phonic.fromFile('song.mp3');
final title = audioFile.getTag(TagKey.title);
final artist = audioFile.getTag(TagKey.artist);
final genres = audioFile.getTags(TagKey.genre);
print('Title: ${title?.value}');
print('Artist: ${artist?.value}');
print('Genres: ${genres.map((g) => g.value).join(', ')}');
// Modify metadata
audioFile.setTag(TitleTag('New Title'));
audioFile.setTag(GenreTag(['Rock', 'Alternative']));
// Save changes
if (audioFile.isDirty) {
final updatedBytes = await audioFile.encode();
await File('updated_song.mp3').writeAsBytes(updatedBytes);
audioFile.markClean();
}
// Cleanup
audioFile.dispose();
// Create artwork with type-safe MIME type
final artwork = ArtworkData(
mimeType: MimeType.jpeg.standardName,
type: ArtworkType.frontCover,
description: 'Album cover',
dataLoader: () async => await File('cover.jpg').readAsBytes(),
);
// Check format capabilities
final capability = id3v24Capability;
if (capability.semantics(TagKey.title).supportsEncoding(TextEncoding.utf8)) {
// UTF-8 is supported for titles in ID3v2.4
}
Classes
- AlbumArtistTag
- Represents an album artist metadata tag for audio files.
- AlbumTag
- Represents an album metadata tag for audio files.
- ArtistTag
- Represents an artist metadata tag for audio files.
- ArtworkCache
- A specialized cache for artwork data with memory pressure handling and compression.
- ArtworkData
- Represents artwork data embedded in audio metadata with lazy loading support.
- ArtworkPerformanceMetrics
- Performance metrics for optimized artwork data.
- ArtworkTag
- Represents an artwork metadata tag for audio files.
- BatchAudioProcessor
- High-performance batch processor for handling very large audio file collections.
- BatchMemoryMonitor
- Specialized memory monitor for batch processing operations.
- BpmTag
- Represents a BPM (beats per minute) metadata tag for audio files.
- CancellationToken
- A simple cancellation mechanism for stopping long-running audio processing operations.
- CollectionAnalyzer
- Specialized analyzer for gathering comprehensive statistics from audio file collections.
- CommentTag
- Represents a comment metadata tag for audio files.
- ComposerTag
- Represents a composer metadata tag for audio files.
- CompressedArtworkData
- Represents artwork data that may be compressed to save memory.
- CustomTag
- Represents a custom metadata tag for audio files.
- DateRecordedTag
- Represents a date recorded metadata tag for audio files.
- DiscNumberTag
- Represents a disc number metadata tag for audio files.
- EncoderTag
- Represents an encoder metadata tag for audio files.
- EncodingOptions
- Options for controlling metadata encoding behavior and validation.
- GenreTag
- Represents a genre metadata tag for audio files.
- GroupingTag
- Represents a grouping metadata tag for audio files.
- IsrcTag
- Represents an ISRC (International Standard Recording Code) metadata tag for audio files.
- LazyArtworkLoader
- A lazy loader for artwork data that extracts image bytes from container data on demand.
- LyricsTag
- Represents a lyrics metadata tag for audio files.
- MemoryEfficientTagStorage
- Memory-efficient storage system for metadata tags that minimizes overhead per file while maintaining fast access patterns.
- MemoryUsageMonitor
- Utilities for monitoring memory usage in the Phonic library.
-
MetadataTag<
T> - Base sealed class for all metadata tags in the unified tagging system.
- MusicalKeyTag
- Represents a musical key metadata tag for audio files.
- OptimizedArtworkData
- An optimized version of ArtworkData with advanced memory management features.
- Phonic
- Factory class for creating PhonicAudioFile instances.
- PhonicAudioFile
- Abstract interface for audio file metadata operations.
- ProcessingResult
- Represents the result of processing a single audio file in a streaming operation.
- RatingTag
- Represents a rating metadata tag for audio files.
- StreamingAudioProcessor
- High-performance streaming processor for large audio file collections.
- StreamingConfig
- Configuration settings for streaming audio file operations.
- StreamingProgress
- Represents progress information for streaming audio file operations.
- StringInterning
- A string interning system that reduces memory usage by storing only one copy of identical strings.
- TagCapability
- Defines the metadata capabilities and constraints for a specific container format.
- TagProvenance
- Tracks the origin and reliability of metadata tag values.
- TagSemantics
- Defines the semantic constraints and capabilities for a specific tag field within a particular container format.
- TagStoragePool
- A specialized storage pool for managing multiple tag storage instances efficiently, useful for batch processing of many files.
- TitleTag
- Represents a title metadata tag for audio files.
- TrackNumberTag
- Represents a track number metadata tag for audio files.
- YearTag
- Represents a year metadata tag for audio files.
Enums
- ArtworkType
- Enumeration of standard artwork types for audio metadata.
- ContainerKind
- Enumeration of supported audio metadata container formats.
- EncodingStrategy
- Strategy for determining which metadata containers to write to.
- MimeType
- MIME type enumeration for artwork and media content.
- TagConfidence
- Confidence level indicating the reliability of tag data.
- TagKey
- Enumeration of all supported unified tag field types.
- TextEncoding
- Text encoding enumeration for metadata containers.
- ValidationLevel
- Level of validation to apply during encoding operations.
Constants
- id3v1Capability → const TagCapability
- ID3v1 metadata capability definition with format-specific constraints.
- id3v22Capability → const TagCapability
- Capability definition for ID3v2.2 metadata format.
- id3v23Capability → const TagCapability
- Capability definition for ID3v2.3 metadata format.
- id3v24Capability → const TagCapability
- Capability definition for ID3v2.4 metadata format.
- mp4Capability → const TagCapability
- Capability definition for MP4 metadata format.
- vorbisCapability → const TagCapability
- Capability definition for Vorbis Comments metadata format.
Properties
- globalStringInterning → StringInterning
-
Global string interning instance for use across the library.
final
Typedefs
- ProgressCallback = void Function(StreamingProgress progress)
- Callback function type for receiving progress updates during streaming operations.
-
StreamingProcessor<
T> = Future< ProcessingResult> Function(PhonicAudioFile audioFile, int index, int total) - Processor function type for streaming audio file operations.
Exceptions / Errors
- CorruptedContainerException
- Exception thrown when a corrupted or malformed audio container is encountered.
- PhonicException
- Base exception class for all Phonic library errors.
- TagValidationException
- Exception thrown when tag validation fails due to constraint violations.
- UnsupportedFormatException
- Exception thrown when an unsupported audio file format is encountered.