The existing schemes for encoding metadata into audio files are extremely diverse. There are formally designed ones; some explicitly intended for use in professional broadcast settings (--e.g. CartChunk), others for general purpose "consumer" use (--e.g. ID3). Still others fall into a broad class that one may term "informal", based not on any recognized public standard but typically designed around a specific product or group of products. These informal schemes tend to be closely bound to the overall design and organization their native environment (--e.g. Rivendell's RDXL).
This appendix is an attempt to document the various file metadata schemes that are recognized by Rivendell, taking note of how each scheme maps to Rivendell's foundational RDXL schema while also describing any known quirks or limitations in Rivendell's implementation thereof. It's worth noting that, especially with regard to the informal schemes, Rivendell's implementation can be a moving target; one that is updated and extended as more information is gleaned about a given scheme by Rivendell's developers. One basic rule with regard to such informal schemes in Rivendell is that, in keeping with Postel's Prescription, support is generally read-only.
RDXL is Rivendell's native audio schema. It uses UTF-8 character encoding. Two levels of records are supported: "cart" data (exactly one record per cart) and "cut" data (zero or more records per cart).
Table J.2. RDXL Cart Fields
Field Name | Data Type | Max Width | Notes |
---|---|---|---|
Agency | String | 64 | |
Album | String | 191 | |
Artist | String | 191 | |
Asynchronous | Boolean | n/a | Valid values are 'true' or 'false' |
Average Hook Length | Integer | 191 | milliseconds |
Average Length | Integer | n/a | milliseconds |
Average Segue Length | Integer | n/a | milliseconds |
Client | String | 64 | |
Composer | String | 64 | |
Conductor | String | 64 | |
Cut Quantity | Integer | n/a | |
Enforce Length | Boolean | n/a | Valid values are 'true' or 'false' |
Forced Length | Integer | n/a | milliseconds |
Group Name | String | 10 | |
Label | String | 64 | |
Last Cut Played | Integer | n/a | |
Length Deviation | Integer | n/a | milliseconds |
Macros | String | unlimited | |
Minimum Talk Length | Integer | n/a | milliseconds |
Maximum Talk Length | Integer | n/a | milliseconds |
Metadata Datetime | DateTime | n/a | |
Number | Integer | n/a | |
Owner | String | 64 | |
Publisher | String | 64 | |
Song ID | String | 32 | |
Title | String | 191 | |
Type | String | n/a | Valid values are 'audio' or 'macro' |
Year | Integer | n/a | |
Usage Code | integer | n/a | 0=Feature, 1=Open, 2=Close, 3=Theme |
User Defined | String | 191 |
Table J.3. RDXL Cut Fields
Field Name | Data Type | Max Width | Notes |
---|---|---|---|
Cut Name | String | 12 | |
Evergreen | Booleans | n/a | Valid values are 'true' or 'false' |
Description | String | 64 | |
Outcue | String | 64 | |
Isrc | String | 12 | |
Isci | String | 32 | |
MusicBrainz Recording ID | String | 40 | |
MusicBrainz Release ID | String | 40 | |
Origin Date Time | DateTime | n/a | |
Start Date Time | DateTime | n/a | |
End Date Time | DateTime | n/a | |
Sunday | Boolean | n/a | Valid values are 'true' or 'false' |
Monday | Boolean | n/a | Valid values are 'true' or 'false' |
Tuesday | Boolean | n/a | Valid values are 'true' or 'false' |
Wednesday | Boolean | n/a | Valid values are 'true' or 'false' |
Thursday | Boolean | n/a | Valid values are 'true' or 'false' |
Friday | Boolean | n/a | Valid values are 'true' or 'false' |
Saturday | Boolean | n/a | Valid values are 'true' or 'false' |
Start Daypart | Time | n/a | |
End Daypart | Time | n/a | |
Origin Name | String | 64 | |
Origin Login Name | String | 191 | |
Source Hostname | String | 191 | |
Origin Name | String | 191 | |
Weight | Integer | n/a | |
Last Play Datetime | DateTime | n/a | |
Play Counter | Integer | n/a | |
Coding Format | Integer | n/a | 0=PCM16, 2=MPEG Layer II, 3=MPEG Layer III, 4=PCM24 |
Sample Rate | Integer | n/a | samples/second |
Bit Rate | Integer | n/a | bits/second |
Channels | Integer | n/a | |
Start Point | Integer | n/a | milliseconds |
End Point | Integer | n/a | milliseconds |
Fadeup Point | Integer | n/a | milliseconds |
Fadedown Point | Integer | n/a | milliseconds |
Segue Start Point | Integer | n/a | milliseconds |
Segue End Point | Integer | n/a | milliseconds |
Segue Gain | Integer | n/a | 1/100 dBFS |
Hook Start Point | Integer | n/a | milliseconds |
Hook End Point | Integer | n/a | milliseconds |
Talk Start Point | Integer | n/a | milliseconds |
Talk End Point | Integer | n/a | milliseconds |
CartChunk is a WAV file chunk format designed to allow the communication of basic radio traffic and continuity data between systems from diverse manufacturers and operating systems. It is explicitly specified by the Audio Engineering Society as standard AES46-2002 .
CartChunk is defined as an extension to the Broadcast Wave File format, and as such is usable only with WAV files. When importing metadata from a file containing valid CartChunk, CartChunk fields will be mapped to Rivendell RDXL fields as follows:
Table J.4. CartChunk to RDXL Field Mappings
CartChunk Field Name | RDXL Field Name | Data Type | Notes |
---|---|---|---|
Title | Title | String | ASCII title of cart audio sequence |
Artist | Artist | String | ASCII artist or creator name |
CutID | Cart Number | String | ASCII cut number identification |
ClientID | Client | String | ASCII client identification |
Category | Group Name | String | ASCII category ID, PSA, NEWS, etc |
Classification | [none] | String | ASCII classification or auxiliary key |
OutCue | Outcue | String | ASCII outcue text |
StartDate | Start Date Time | Date | Applied to the Date field of Start Date Time, interpreted as the local system time zone |
StartTime | Start Date Time | Time | Applied to the Time field of Start Date Time, interpreted as the local system time zone |
EndDate | End Date Time | Date | Applied to the Date field of End Date Time, interpreted as the local system time zone |
EndTime | End Date Time | Time | Applied to the Time field End Date Time, interpreted as the local system time zone |
AUDs | Start Point | CartChunk PostTimer | See AES46-2002 Table A.2 |
AUDe | End Point | CartChunk PostTimer | See AES46-2002 Table A.2 |
SEGs | Segue Start Point | CartChunk PostTimer | See AES46-2002 Table A.2 |
SEGe | Segue End Point | CartChunk PostTimer | See AES46-2002 Table A.2 |
INTs | Talk Start Point | CartChunk PostTimer | See AES46-2002 Table A.2 |
INTe | Talk End Point | CartChunk PostTimer | See AES46-2002 Table A.2 |
INT | Talk End Point | CartChunk PostTimer | Variant form. When importing, also sets Talk Start Point to be equal to Start Point. Rivendell does not write this form. Point |
ID3 is a metadata scheme intended for use with raw MPEG files. While not backed by a formal standards organization, ID3 is defined in a set of standards documents originally promulgated at http://id3.org/.
Rivendell supports both reading and writing ID3v2.3 tags. Each tag consists of a series of frames, each of which contains a field of metadata.
Table J.5. ID3v2.3 Frame to RDXL Field Mappings
ID3v2.3 Frame Name | RDXL Field Name | Data Type | Notes |
---|---|---|---|
TIT2 | Title | String | Title/songname/content description |
ARTIST | Artist | String | Non-standard frame |
TALB | Artist | String | Album/Movie/Show title |
ALBUM | Artist | String | Non-standard frame |
TCOM | Composer | String | Composer |
COMPOSER | Composer | String | Non-standard frame |
TPUB | Label | String | Publisher |
LABEL | Label | String | Non-standard frame |
TPE3 | Conductor | String | Conductor/performer refinement |
CONDUCTOR | Conductor | String | Non-standard frame |
TYER | Year | Integer | Year |
DATE | Year | Integer | Non-standard frame |
YEAR | Year | Integer | Non-standard frame |
ISRC | Isrc | String | Non-standard frame |
TBPM | Beats Per Minute | String | BPM (beats per minute) |
BPM | Beats Per Minute | String | Non-standard frame |
PUBLISHER | Publisher | String | Non-standard frame |