Appendix J. File Metadata

J.1. Introduction

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.

J.2. Supported Metadata Schemes

Table J.1. Supported Metadata Schemes

TypeFile TypeImportExportNotes
RDXL*.mp2, *.mp3, *.wavYesYesNative Rivendell schema
CartChunk *.wavYesYesFormally defined
ID3*.mp2, *.mp3YesYesFormally defined
Scot Chunk*.wavYesNoInformal
Av10 Chunk*.wavYesNoInformal


J.2.1. RDXL

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 NameData TypeMax WidthNotes
AgencyString64 
AlbumString191 
ArtistString191 
AsynchronousBooleann/aValid values are 'true' or 'false'
Average Hook LengthInteger191milliseconds
Average LengthIntegern/amilliseconds
Average Segue LengthIntegern/amilliseconds
ClientString64 
ComposerString64 
ConductorString64 
Cut QuantityIntegern/a 
Enforce LengthBooleann/aValid values are 'true' or 'false'
Forced LengthIntegern/amilliseconds
Group NameString10 
LabelString64 
Last Cut PlayedIntegern/a 
Length DeviationIntegern/amilliseconds
MacrosStringunlimited 
Minimum Talk LengthIntegern/amilliseconds
Maximum Talk LengthIntegern/amilliseconds
Metadata DatetimeDateTimen/a 
NumberIntegern/a 
OwnerString64 
PublisherString64 
Song IDString32 
TitleString191 
TypeStringn/aValid values are 'audio' or 'macro'
YearIntegern/a 
Usage Codeintegern/a0=Feature, 1=Open, 2=Close, 3=Theme
User DefinedString191 

Table J.3. RDXL Cut Fields

Field NameData TypeMax WidthNotes
Cut NameString12 
EvergreenBooleansn/aValid values are 'true' or 'false'
DescriptionString64 
OutcueString64 
IsrcString12 
IsciString32 
MusicBrainz Recording IDString40 
MusicBrainz Release IDString40 
Origin Date TimeDateTimen/a 
Start Date TimeDateTimen/a 
End Date TimeDateTimen/a 
SundayBooleann/aValid values are 'true' or 'false'
MondayBooleann/aValid values are 'true' or 'false'
TuesdayBooleann/aValid values are 'true' or 'false'
WednesdayBooleann/aValid values are 'true' or 'false'
ThursdayBooleann/aValid values are 'true' or 'false'
FridayBooleann/aValid values are 'true' or 'false'
SaturdayBooleann/aValid values are 'true' or 'false'
Start DaypartTimen/a 
End DaypartTimen/a 
Origin NameString64 
Origin Login NameString191 
Source HostnameString191 
Origin NameString191 
WeightIntegern/a 
Last Play DatetimeDateTimen/a 
Play CounterIntegern/a 
Coding FormatIntegern/a0=PCM16, 2=MPEG Layer II, 3=MPEG Layer III, 4=PCM24
Sample RateIntegern/asamples/second
Bit RateIntegern/abits/second
ChannelsIntegern/a 
Start PointIntegern/amilliseconds
End PointIntegern/amilliseconds
Fadeup PointIntegern/amilliseconds
Fadedown PointIntegern/amilliseconds
Segue Start PointIntegern/amilliseconds
Segue End PointIntegern/amilliseconds
Segue GainIntegern/a1/100 dBFS
Hook Start PointIntegern/amilliseconds
Hook End PointIntegern/amilliseconds
Talk Start PointIntegern/amilliseconds
Talk End PointIntegern/amilliseconds

J.2.2. CartChunk

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 NameRDXL Field NameData TypeNotes
TitleTitleStringASCII title of cart audio sequence
ArtistArtistStringASCII artist or creator name
CutIDCart NumberStringASCII cut number identification
ClientIDClientStringASCII client identification
CategoryGroup NameStringASCII category ID, PSA, NEWS, etc
Classification[none]StringASCII classification or auxiliary key
OutCueOutcueStringASCII outcue text
StartDateStart Date TimeDateApplied to the Date field of Start Date Time, interpreted as the local system time zone
StartTimeStart Date TimeTimeApplied to the Time field of Start Date Time, interpreted as the local system time zone
EndDateEnd Date TimeDateApplied to the Date field of End Date Time, interpreted as the local system time zone
EndTimeEnd Date TimeTimeApplied to the Time field End Date Time, interpreted as the local system time zone
AUDsStart PointCartChunk PostTimerSee AES46-2002 Table A.2
AUDeEnd PointCartChunk PostTimerSee AES46-2002 Table A.2
SEGsSegue Start PointCartChunk PostTimerSee AES46-2002 Table A.2
SEGeSegue End PointCartChunk PostTimerSee AES46-2002 Table A.2
INTsTalk Start PointCartChunk PostTimerSee AES46-2002 Table A.2
INTeTalk End PointCartChunk PostTimerSee AES46-2002 Table A.2
INTTalk End PointCartChunk PostTimerVariant form. When importing, also sets Talk Start Point to be equal to Start Point. Rivendell does not write this form. Point

J.2.3. ID3

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 NameRDXL Field NameData TypeNotes
TIT2TitleStringTitle/songname/content description
ARTISTArtistStringNon-standard frame
TALBArtistStringAlbum/Movie/Show title
ALBUMArtistStringNon-standard frame
TCOMComposerStringComposer
COMPOSERComposerStringNon-standard frame
TPUBLabelStringPublisher
LABELLabelStringNon-standard frame
TPE3ConductorStringConductor/performer refinement
CONDUCTORConductorStringNon-standard frame
TYERYearIntegerYear
DATEYearIntegerNon-standard frame
YEARYearIntegerNon-standard frame
ISRCIsrcStringNon-standard frame
TBPMBeats Per MinuteStringBPM (beats per minute)
BPMBeats Per MinuteStringNon-standard frame
PUBLISHERPublisherStringNon-standard frame