ryanfrancesconi/spfk-metadata-base
Pure Swift audio metadata data types extracted from [SPFKMetadata](https://github.com/ryanfrancesconi/spfk-metadata). No C++, TagLib, or libsndfile dependency — suitable for lightweight consumers that need metadata type definitions without file I/O.
Requirements
- Platforms: macOS 13+, iOS 16+
- Swift: 6.2+
Types
Tag Properties
| Type | Description | |------|-------------| | TagKey | 100+ case enum — canonical key type mapping to ID3 frames and RIFF INFO tags | | TagProperties | Struct wrapping TagData with tagLibPropertyMap for bridge interop | | TagPropertiesAV | AVFoundation-based tag reader (read-only) | | TagData | Container with TagKeyDictionary and custom tags, with merge support | | TagGroup | Enum grouping TagKeys into logical sets (common, music, loudness, etc.) | | ID3FrameKey | 80+ case enum for ID3v2.4 frame identifiers | | InfoFrameKey | 90+ case enum for RIFF INFO chunk tags | | TagFrameKey | Protocol shared by both frame key types |
Audio File Definitions
| Type | Description | |------|-------------| | MetaAudioFileDescription | Top-level Codable struct aggregating tags, audio format, BEXT, iXML, markers, and artwork | | AudioFormatProperties | Channel count, sample rate, bit depth, bit rate, and duration | | BEXTDescription | Broadcast Wave Extension (BWF) chunk wrapper (v0/v1/v2) | | BEXTDescription.Key | Enum of BEXT field keys with dictionary-style subscript access | | ImageDescription | Embedded artwork container with CGImage and Codable conformance | | TagPropertiesContainerModel | Protocol for types that contain tag properties |
Markers
| Type | Description | |------|-------------| | AudioMarkerDescription | Format-agnostic marker struct with name, start/end time, color, and markerID | | AudioMarkerDescriptionCollection | Ordered collection with insert, remove, update, sort, and automatic ID assignment |
Installation
.package(url: "https://github.com/ryanfrancesconi/spfk-metadata-base", from: "0.0.1")import SPFKMetadataBaseDependencies
| Package | Description | |---------|-------------| | spfk-audio-base | Shared audio type definitions | | spfk-utils | Foundation utilities and extensions |
Package Metadata
Repository: ryanfrancesconi/spfk-metadata-base
Default branch: main
README: README.md