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.