Why your AAF conform found the wrong take
Production sound recorders write rich metadata inside BWF chunks. When those chunks disagree with each other, or with reality, automated workflows break in ways you don't notice until the mix.
The dialogue editor opens the AAF, imports the production sound, and the conform tool matches everything automatically. Boom on track 1, lav 1 on track 2, lav 2 on track 3. Timecode-locked. Ready to cut.
Except track 1 isn’t the boom. It’s lav 2. The iXML metadata in the poly file had the channel names swapped, probably from a template the mixer set up for a different show and forgot to update. The conform tool trusted the metadata, because that’s what conform tools do.
This mistake gets discovered in the mix. The most expensive place to discover it.
What’s inside a BWF
A Broadcast Wave Format file is a WAV with extra chunks. Beyond the standard fmt (sample rate, bit depth, channels) and data (the actual audio), a production BWF typically carries:
bext carries the timecode. time_reference is a sample count from midnight, giving you frame-accurate sync. Also carries originator info, origination date/time, and optionally loudness measurements.
iXML holds the production metadata. Scene, take, tape, project, track names, circled flags, wild-track flags, channel layout. This is what post uses to reconnect a recording to the script.
The eleven ways it goes wrong
In our experience, BWF metadata problems fall into a surprisingly small number of categories:
- iXML channel count disagrees with
fmtchannel count - Track names don’t match the actual audio content (the wrong-take problem)
bexttimecode reference is present but the date field uses a non-standard format- Sample rate is slightly off (47999 instead of 48000, thanks to older firmware)
- Track names are generic (“Track 1”, “Track 2”) because the template wasn’t configured
- Scene/take fields are blank or carry over from a previous recording
- Circled-take flag is set on every file because the mixer doesn’t use it
- Poly file has ISO tracks interleaved with mix tracks in an unexpected order
bextand iXML carry contradictory origination timestamps- UMID is all zeros (not unique, defeats the purpose)
- Channel layout descriptor doesn’t match the actual speaker configuration
None of these crash anything. They all cause downstream tools to make subtly wrong decisions.
The conform trust chain
Automated workflows trust metadata in a specific order. If the iXML says “Scene 42, Take 3” and the filename says “S42_T03”, they agree. If they disagree, the tool has to pick one. Different tools pick differently.
The most robust approach is to inspect the metadata, flag contradictions, and let the operator decide. The worst approach, which is distressingly common, is to silently prefer one source and hope for the best.
Why this matters
If you’re a production sound mixer, most of this is your responsibility at the point of recording. Getting the template right, verifying track names, checking the bext fields. This is the equivalent of a DIT verifying checksums. It’s the upstream work that makes everything downstream reliable.
If you’re a post sound editor, understanding the chunk structure means knowing where to look when something doesn’t match. Is the problem in the iXML? The bext? The fmt? Knowing which chunk to inspect, and being able to fix a field without opening a DAW and re-exporting, saves the kind of time you notice.
| Issue | Chunk | Symptom | Severity |
|---|---|---|---|
| Sample rate mismatch (fmt vs bext) | fmt / bext | Pitch shift or speed change on import | critical |
| Missing iXML chunk | iXML | No scene/take/track names in conform | warning |
| Channel mask mismatch | fmt | Wrong speaker routing on playback | critical |
| Wrong bit depth declaration | fmt | Clipping or noise floor shift | critical |
| Timecode reference mismatch | bext / iXML | Sync offset, wrong take in AAF | critical |
| Missing bext chunk entirely | bext | No originator, UMID, or TC reference | warning |
| Ambisonics flag incorrect | iXML | Spatial decode fails or collapses to mono | warning |
| Poly vs mono confusion | fmt / iXML | DAW imports one channel or duplicates all | critical |
| Truncated data chunk | data | Playback cuts short or trailing silence | critical |
| Missing RF64 header for >4 GB | ds64 | File unreadable or truncated at 4 GB | critical |