Myriad Metadata Import Documentation
Overview
When importing an audio file into the MediaWall, Myriad Playout v6 attempts to reads metadata from various audio file formats and populate the Media Item with the extracted information. This document describes the complete metadata extraction process, supported formats, and the specific tag field mappings that users can utilize when preparing audio files for import into Myriad.
The metadata import process operates in multiple phases, extracting information from different sources within the audio files, including standard ID3/tag data, broadcast-specific chunks, and embedded timing information.
Supported File Formats
Primary Audio Formats
- WAV - Full metadata support including CART, BEXT, and SCOT chunks
- MP3 - ID3v1, ID3v2 tag support and APE tag extensions
- FLAC - Comprehensive Vorbis comment metadata support
- OGG - Vorbis comment metadata
- OPUS - Custom metadata tag support with XML embedding
- MP2 - Basic tag metadata support
- AAC/M4A - iTunes-style metadata support
Special File Types
- SS32 Rotator Files - Scott Studios playlist/rotator files
- RadioHost Files - Files with embedded cue point data
- Media Foundation Compatible - Windows Media Foundation supported formats for less common audio formats
Metadata Extraction Process
The process follows a hierarchical approach to metadata extraction:
- File Format Detection - Determines audio format from file extension
- Audio Properties - Extracts duration, sample rate, and audio format
- Primary Metadata - Standard tag information (TagLib)
- Extended Metadata - Format-specific chunks and extensions
- Timing Information - Broadcast cues, markers, and timing data
- Adjacent Files - Companion metadata files
Standard Tag Field Mappings
The following table shows which specific tag fields are read from audio files and how they map to MediaItem properties:
ID3v1/ID3v2 Tags (MP3)
Tag Field | MediaItem Property | Description | Processing Notes |
---|---|---|---|
TIT2 (Title) | ItemTitle | Song/track title | Sanitized, invalid characters removed |
TPE1 (Artist) | Artists collection | Primary performing artist(s) | Creates ArtistInfo objects with ID=0 |
TPE2 (Album Artist) | Artists collection | Album artist (fallback) | Used if no TPE1 performers found |
TALB (Album) | AlbumTitle | Album name | Sanitized string |
TIT3 (Subtitle) | ItemDescription | Content description/subtitle | Sanitized string |
COMM (Comment) | Notes collection | General comments | Added as Presenter-type note |
TCOM (Composer) | Copyright.Composer | Music composer(s) | Sanitized string |
TPUB (Publisher) | Copyright.Publisher | Music publisher | Sanitized string |
TCOP (Copyright) | Copyright.License | Copyright information | Sanitized string |
TSRC (ISRC) | Copyright.ISRC | International Standard Recording Code | Sanitized string |
TYER /TDRC (Year) | FirstReleaseYear | Release year | |
TCON (Genre) | IngestCategoryName | Genre/category | Used for category assignment |
UFID (MusicBrainz) | MusicBrainzId | MusicBrainz track ID | When unique ID contains musicbrainz.org |
Vorbis Comments (FLAC/OGG)
Tag Field | MediaItem Property | Description | Processing Notes |
---|---|---|---|
TITLE | ItemTitle | Track title | Sanitized string |
ARTIST | Artists collection | Performing artist(s) | Creates ArtistInfo objects |
ALBUMARTIST | Artists collection | Album artist (fallback) | Used if no ARTIST found |
ALBUM | AlbumTitle | Album name | Sanitized string |
DESCRIPTION | ItemDescription | Track description | Sanitized string |
COMMENT | Notes collection | Comments | Added as Presenter-type note |
COMPOSER | Copyright.Composer | Music composer | Sanitized string |
PUBLISHER | Copyright.Publisher | Publisher information | Sanitized string |
COPYRIGHT | Copyright.License | Copyright text | Sanitized string |
ISRC | Copyright.ISRC | International Standard Recording Code | Sanitized string |
DATE /YEAR | FirstReleaseYear | Release year | |
GENRE | IngestCategoryName | Musical genre | Used for category assignment |
MUSICBRAINZ_TRACKID | MusicBrainzId | MusicBrainz track identifier | Sanitized string |
iTunes/MP4 Tags (AAC/M4A)
Tag Field | MediaItem Property | Description | Processing Notes |
---|---|---|---|
©nam | ItemTitle | Track title | Sanitized string |
©ART | Artists collection | Artist name | Creates ArtistInfo objects |
aART | Artists collection | Album artist (fallback) | Used if no ©ART found |
©alb | AlbumTitle | Album name | Sanitized string |
desc | ItemDescription | Description | Sanitized string |
©cmt | Notes collection | Comments | Added as Presenter-type note |
©wrt | Copyright.Composer | Composer | Sanitized string |
©pub | Copyright.Publisher | Publisher | Sanitized string |
cprt | Copyright.License | Copyright | Sanitized string |
----:com.apple.iTunes:ISRC | Copyright.ISRC | ISRC code | Sanitized string |
©day | FirstReleaseYear | Release date/year | |
©gen | IngestCategoryName | Genre | Used for category assignment |
----:com.apple.iTunes:MusicBrainz Track Id | MusicBrainzId | MusicBrainz ID | Sanitized string |
Embedded Artwork
Source | MediaItem Property | Supported Formats | Processing |
---|---|---|---|
APIC (ID3v2) | TemporaryImageFiles | JPEG, PNG, BMP, GIF | Extracted to temporary files |
PIC (ID3v1) | TemporaryImageFiles | JPEG, PNG, BMP, GIF | Extracted to temporary files |
Vorbis METADATA_BLOCK_PICTURE | TemporaryImageFiles | JPEG, PNG, BMP, GIF | Base64 decoded and extracted |
MP4 covr | TemporaryImageFiles | JPEG, PNG | Extracted to temporary files |
Extended Metadata Sources
APE Tags (Advanced Audio Coding)
APE tags provide broadcast-specific timing and metadata information primarily used by professional radio automation systems:
APE Tag | MediaItem Property | Description | Unit |
---|---|---|---|
SegueDb | Validation flag | Indicates professional timing data | Boolean |
Cue | MediaLength.Start | Media start time/cue point | Milliseconds |
Segue | Extro.Start | Segue/outro start time | Milliseconds |
Intro | Intro.End | Intro end time (relative to cue) | Milliseconds |
HookStart | Hook.Start | Hook/refrain start time | Milliseconds |
HookLen | Hook.End | Hook length (calculated as start + length) | Milliseconds |
EAN/UPC | Copyright.RecordingNumber | Product identification code | String |
ISRC | Copyright.ISRC | International Standard Recording Code | String |
Label | Copyright.RecordLabel | Record label information | String |
Writer | Copyright.Lyricist | Songwriter/lyricist | String |
Composer | Copyright.Composer | Music composer | String |
Publisher | Copyright.Publisher | Music publisher | String |
WAV File Chunks
CART Chunk (Broadcast Wave)
Professional broadcast metadata chunk containing comprehensive information:
CART Field | MediaItem Property | Description |
---|---|---|
Title | ItemTitle | Title from CART chunk |
Artist | Artists collection | Artist from CART chunk |
Category | Item type assignment | Content category |
Classification | IngestCategoryName | Genre/classification |
CutID | CutId | Cart identification |
ClientID | Processing use | Client information |
URL | CustomFields[5] | Associated URL |
StartDate /StartTime | StartDateTime | Broadcast start date/time |
EndDate /EndTime | EndDateTime | Broadcast end date/time |
ProducerAppID | Processing flag | Source application identifier |
OutCue | OutCue | End cue text |
PostTimer[n] | Various timing properties | Broadcast timing markers |
UserDef | Colors, ending type | User-defined settings |
TagText | Various | XML or legacy metadata |
PostTimer Mappings (CART Chunk)
Timer Usage | MediaItem Property | Description |
---|---|---|
AUDs | MediaLength.Start | Audio start point |
AUDe | MediaLength.End | Audio end point |
INTs | Intro.Start | Intro start |
INTm | Intro.Middle | Intro middle point |
INTe | Intro.End | Intro end |
SEG1 | Extro.Start | Segue/outro start |
MRK + timer value | Hook or Loops | Hook points or loop markers |
BEXT Chunk (Broadcast Extension)
Basic broadcast metadata:
BEXT Field | MediaItem Property | Description |
---|---|---|
Description | ItemTitle (if empty) | Broadcast description |
Originator | Notes (Technical) | Creator/originator |
OriginatorReference | Notes (Technical) | Reference identifier |
OriginationDate /OriginationTime | Notes (Technical) | Creation timestamp |
Version | Revision | Version number |
CodingHistory | Notes (Technical) | Audio processing history |
SCOT Chunk (Scott Studios)
Legacy format support for Scott Studios systems:
SCOT Field | MediaItem Property | Description |
---|---|---|
Name | ItemTitle | Item name |
Artist | Artists collection | Artist information |
Trivia | ItemDescription | Description/trivia |
SDate | StartDateTime | Schedule start date |
KDate | EndDateTime | Kill/end date |
StartTime | MediaLength.Start | Audio start time |
EndTime | MediaLength.End | Audio end time |
Intro | Intro.End | Intro timing |
eomstrt | Extro.Start | End of message start |
End | Ending | Ending type |
Year | FirstReleaseYear | Release year |
RadioHost File Support
Specialized cue point data for RadioHost systems:
Cue Point Type | MediaItem Property | Description |
---|---|---|
TalkTimeStart | Intro.Start | Talk/vocal start |
TalkTimeEnd | Intro.End | Talk/vocal end |
TalkTime | Intro.End | General talk point |
RefrainStart | Hook.Start | Refrain/hook start |
RefrainEnd | Hook.End | Refrain/hook end |
ExtroOffset | Extro.Start | Outro timing offset |
End | Force fade point | End marker |
OPUS Format Extensions
OPUS files support embedded XML metadata:
Metadata Type | MediaItem Property | Description |
---|---|---|
MediaItemXml | Complete object | Full MediaItem XML structure |
Standard Vorbis tags | Various | Standard tag mappings (see Vorbis table) |
Special File Types
SS32 Rotator Files
Scott Studios playlist files are automatically detected and converted:
- Detection Method: SCOT chunk with rotator bit flags
- Content Type: Automatically changed to
MediaListRotate
- Related Items: Playlist members extracted from data chunk
- Description: Automatically set to " SS32 Rotator "
- Processing: Audio data marked as invalid, metadata-only import
Metadata Processing Rules
String Sanitization
All text fields undergo sanitisation:
- Encoding normalization to handle international characters
- Null and empty string handling
Priority Handling
When multiple sources provide the same information (highest to lowest priority):
- XML Files - Complete MediaItem XML overrides everything - see this article for more information.
- CART Chunk - Professional broadcast metadata
- APE Tags - Broadcast timing and extended metadata
- Standard Tags - ID3, Vorbis, iTunes metadata
- BEXT/SCOT Chunks - Legacy broadcast formats
- Adjacent Files - BCX, CSV companion files - see this article for more information.
- Filename Parsing - Last resort extraction from filename
Error Handling
- Individual metadata extraction errors don't fail the entire process
- Malformed tags are logged but don't prevent import
- Missing companion files are handled gracefully
- Invalid timing data is constrained to valid ranges
Content Validation
- Timing markers are validated against audio duration
- ISRC codes are format-validated
- Date fields are parsed with error tolerance
- Embedded images are validated for supported formats
Processing Examples
Standard MP3 File with ID3v2Input: song.mp3
ID3v2 Tags Found:
- TIT2 (Title): "Example Song"
- TPE1 (Artist): "Example Artist"
- TALB (Album): "Example Album"
- TDRC (Year): "2023"
- TCON (Genre): "Rock"
- TSRC (ISRC): "US1234567890"
- APIC: Embedded JPEG image
Result: SimpleMetadata MediaItem Properties:
- ItemTitle = "Example Song"
- Artists[0] = ArtistInfo(0, "Example Artist")
- AlbumTitle = "Example Album"
- FirstReleaseYear = 2023
- IngestCategoryName = "Rock"
- Copyright.ISRC = "US1234567890"
- TemporaryImageFiles[0] = "temp_image.jpg"
WAV File with CART ChunkInput: broadcast.wav
CART Chunk Data: - Title: "News Bulletin"
- Artist: "News Team"
- Category: "News"
- PostTimer[0]: AUDs = 12000 samples (0.5s at 24kHz)
- PostTimer[1]: SEG1 = 600000 samples (25.0s at 24kHz)
- UserDef: "BackColor=&HFF0000&"
- TagText: "Breaking News"
Result: AdvancedMetadata
MediaItem Properties:
- ItemTitle = "News Bulletin"
- Artists[0] = ArtistInfo(0, "News Team")
- ItemDescription = "Breaking News"
- MediaLength.Start = 00:00:00.500
- Extro.Start = 00:00:25.000
- BackColor = Red
- UseCustomColors = True
FLAC File with Vorbis Comments + BCXInput: track.flac + track.bcx
Vorbis Comments: - TITLE: "Classical Piece"
- ARTIST: "Orchestra"
- COMPOSER: "Famous Composer"
- MUSICBRAINZ_TRACKID: "abc-123-def"
BCX File Content:
- Auto Start Point: 1500 (1.5 seconds)
- Intro: 15000 (15 seconds)
- Auto Out Point: 180000 (3 minutes)
Result: SimpleMetadata (upgraded from BCX) MediaItem Properties:
- ItemTitle = "Classical Piece"
- Artists[0] = ArtistInfo(0, "Orchestra")
- Copyright.Composer = "Famous Composer"
- MusicBrainzId = "abc-123-def"
- MediaLength.Start = 00:00:01.500
- Intro.End = 00:00:15.000
- Extro.Start = 00:03:00.000
File Preparation Guidelines
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article