What an FCPXML is, and what it is not
An FCPXML is a plain-text description of a Final Cut project. It lists clips and their positions, the volume keyframes and fade handles an editor drew, the roles and lanes each clip sits on, markers, and an absolute path to every asset. It is backward-compatible, and fcp2aaf is tested against the versions Final Cut Pro 10.8 and later write.
What it does not contain is a single sample of audio. It points at your rushes; it does not carry them. Anything that reads an FCPXML still needs the media on a disk it can reach.
What an AAF is
An AAF is an audio session in a single file: tracks, every clip placed to the sample, fades and crossfades, volume automation, clip gain, markers, and source timecode. The audio itself is either written inside the AAF or referenced as WAVs beside it.
It is the format audio post has agreed on. An AAF written to the standard opens in Pro Tools, Nuendo, Cubase, Media Composer, DaVinci Resolve's Fairlight page, Reaper and Premiere Pro.
How fcp2aaf builds one
Three stages, with a format-neutral model in the middle so a Final Cut quirk never reaches the AAF and vice versa. The FCPXML is parsed into a timeline; the timeline is conformed against your media; the AAF is written from the result.
fcp2aaf does not pass audio through. It reads the paths Final Cut wrote into the FCPXML, opens your original recordings, and cuts from them exactly the regions the edit uses, with as much or as little handle around each clip as you ask for. WAV, BWF, RF64, AIFF, CAF, FLAC, MP3, MP4, MOV and MXF are read straight from the drive, at any size.
Time is computed exactly. Positions are rational values, never floating-point sums of rounded numbers, so a cut forty minutes into a feature lands where Final Cut has it and adjacent clips abut with no gap.
Exact where it can be, honest where it cannot
Some things an AAF simply cannot carry — the shape of a curved fade, a track colour, a Final Cut audio effect. fcp2aaf never drops one of them in silence. Every delivery ships with a plain-text report of what travelled, what could not, and what was carried a particular way on purpose, and the same list is shown in the window before you convert, while it can still change what you do.