The broadcast extension chunk makes a WAV file a Broadcast Wave Format file, the European Broadcasting Union’s standard for exchanging audio in radio and television (EBU Tech 3285). It records who made the audio, when, where it sits in time and how loud it is. It was the most common optional chunk in the files examined for this site, in about one in five of them.
Fields
Text fields are ASCII, padded with NULs. Offsets are from the start of the chunk’s data, and numbers are little-endian. The fixed part is 602 bytes, the minimum size libsndfile accepts; the explorer reports a shorter chunk.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
| 0 | 256 | char[256] | Description | a free text description of the audio |
| 256 | 32 | char[32] | Originator | the organisation or person that made it, often the software |
| 288 | 32 | char[32] | OriginatorReference | a unique reference given by the originator |
| 320 | 10 | char[10] | OriginationDate | the date, as yyyy-mm-dd |
| 330 | 8 | char[8] | OriginationTime | the time, as hh-mm-ss |
| 338 | 4 | u32 | TimeReferenceLow | the low 32 bits of the time reference |
| 342 | 4 | u32 | TimeReferenceHigh | the high 32 bits |
| 346 | 2 | u16 | Version | 0, 1 or 2 |
| 348 | 64 | bytes | UMID | a SMPTE unique material identifier, from version 1; zeros in version 0 |
| 412 | 2 | i16 | LoudnessValue | integrated loudness in LUFS × 100, version 2 |
| 414 | 2 | i16 | LoudnessRange | loudness range in LU × 100, version 2 |
| 416 | 2 | i16 | MaxTruePeakLevel | maximum true peak in dBTP × 100, version 2 |
| 418 | 2 | i16 | MaxMomentaryLoudness | highest momentary loudness in LUFS × 100, version 2 |
| 420 | 2 | i16 | MaxShortTermLoudness | highest short-term loudness in LUFS × 100, version 2 |
| 422 | 180 | bytes | Reserved | zeros |
| 602 | varies | char[] | CodingHistory | lines of text recording each step the audio went through |
A loudness value of 0x7FFF means it was not measured; the explorer leaves
it out.
Versions
| Version | Year | Change |
|---|---|---|
| 0 | 1997 | the first Broadcast Wave Format, with 254 reserved bytes after Version |
| 1 | 2001 | the first 64 of the reserved bytes become the UMID |
| 2 | 2011 | the next 10 become the loudness values, measured as EBU R 128 sets out |
Each version only takes over reserved bytes, so a reader of one version reads the others; version 2 is meant to stay compatible with 0 and 1. Apple’s own system sounds, made with Logic, carry version 1.
Date and time
OriginationDate is ten characters, yyyy-mm-dd, and
OriginationTime eight, hh-mm-ss. Tech 3285 recommends the
separators hyphen, underscore, colon, space and full stop; the explorer accepts any
character that is not a digit, and reports a field that is not in that form.
Pro Tools writes them correctly, such as 2018-04-12 and
14:47:54. Logic Pro X, in the files seen, writes each one with a NUL at the
end inside its fixed field, so the last character is lost (2023-01-0,
14:02:1), and leaves stray memory contents in unused bytes.
Time reference
The time reference places the recording on a clock: it is the position of the first sample, counted in samples since midnight. Divide it by the sample rate to get seconds. Editors use it to line up files recorded at the same time on different machines. The two 32-bit halves, low then high, read together as one little-endian 64-bit number.
For example, 172,992,000 samples at 48,000 Hz is 3,604 seconds: the file starts at 01:00:04, as it would from a Logic session that starts at 1:00:00:00 timecode. The explorer shows the time this way.
Coding history
Each line of CodingHistory describes one stage, as comma-separated
values such as the coding algorithm (A=PCM), the sample rate
(F=48000), the word length (W=24) and the mode
(M=stereo), ending in a carriage return and line feed. It runs to the end
of the chunk.